]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/translator-group.cc
* lily/chord-tremolo-*.cc: Reworked how \repeat "tremolo"
[lilypond.git] / lily / translator-group.cc
index 529d0f997961d7c4462926aeeb2e6846a44a62d2..0fd2bc4d21a9866b7070f99d0f8b10869585ec6e 100644 (file)
@@ -3,18 +3,21 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>,
+                 Erik Sandberg <mandolaerik@gmail.com>
 */
 
 #include "translator-group.hh"
 
-#include "output-def.hh"
-#include "warn.hh"
-#include "scm-hash.hh"
 #include "context-def.hh"
 #include "context.hh"
+#include "dispatcher.hh"
 #include "main.hh"
 #include "music.hh"
+#include "output-def.hh"
+#include "scm-hash.hh"
+#include "stream-event.hh"
+#include "warn.hh"
 
 Translator_group *
 Translator_group::get_daddy_translator () const
@@ -35,6 +38,15 @@ Translator_group::initialize ()
   precompute_method_bindings ();
 }
 
+void
+Translator_group::connect_to_context (Context *c)
+{
+  if (context_)
+    programming_error ("already connected to a context");
+  context_ = c;
+  c->event_source ()->add_listener (GET_LISTENER (eat_event), ly_symbol2scm ("MusicEvent"));
+}
+
 void
 Translator_group::finalize ()
 {
@@ -67,6 +79,16 @@ find_accept_translators (SCM gravlist, SCM ifaces)
   return l;
 }
 
+IMPLEMENT_LISTENER (Translator_group, eat_event);
+void
+Translator_group::eat_event (SCM sev)
+{
+  Stream_event *ev = unsmob_stream_event (sev);
+  SCM sm = ev->get_property ("music");
+  Music *m = unsmob_music (sm);
+  try_music (m);
+}
+
 bool
 Translator_group::try_music (Music *m)
 {
@@ -235,4 +257,3 @@ Translator_group::mark_smob (SCM smob)
   scm_gc_mark (me->accept_hash_table_);
   return me->simple_trans_list_;
 }
-