From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 4 Oct 2006 11:33:45 +0000 (+0000)
Subject: * scripts/lilypond-book.py (Lilypond_file_snippet.my_system):
X-Git-Tag: cvs/HEAD~15
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=ab576682034633b31058907b0187231fb9d62102;p=lilypond.git

* scripts/lilypond-book.py (Lilypond_file_snippet.my_system):
write snippet-names binary.

* scripts/lilypond-book.py (bindir): use os.pathsep for prepending
to $PATH.

* scm/define-grobs.scm (all-grob-descriptions): use callback to
calc dot count.

* scm/output-lib.scm (string-number::calc-text): new function.
(note-head::calc-duration-log): new function.

* scm/output-lib.scm (fingering::calc-text): new function.
---

diff --git a/ChangeLog b/ChangeLog
index e831e6d217..8c721f5363 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-10-04  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
+	* scripts/lilypond-book.py (Lilypond_file_snippet.my_system):
+	write snippet-names binary.
+
 	* python/lilylib.py (system): use os.system for mingw32
 
 	* scripts/lilypond-book.py (bindir): use os.pathsep for prepending
diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc
index 6ca9368d86..d9d278799d 100644
--- a/lily/stem-engraver.cc
+++ b/lily/stem-engraver.cc
@@ -58,15 +58,6 @@ Stem_engraver::make_stem (Grob_info gi)
      stem needs a rhythmic structure to fit it into a beam.  */
   stem_ = make_item ("Stem", gi.grob ()->self_scm ());
 
-  /*
-    we take the duration log from the Event, since the duration-log
-    for a note head is always <= 2.
-  */
-  Stream_event *ev = gi.event_cause ();
-  Duration *dur = unsmob_duration (ev->get_property ("duration"));
-
-  stem_->set_property ("duration-log", dur ? scm_from_int (dur->duration_log ()) : 0);
-
   if (tremolo_ev_)
     {
       /* Stem tremolo is never applied to a note by default,
@@ -89,6 +80,14 @@ Stem_engraver::make_stem (Grob_info gi)
       else
 	context ()->set_property ("tremoloFlags", scm_from_int (requested_type));
 
+
+      /*
+	we take the duration log from the Event, since the duration-log
+	for a note head is always <= 2.
+      */
+      Stream_event *ev = gi.event_cause ();
+      Duration *dur = unsmob_duration (ev->get_property ("duration"));
+      
       int tremolo_flags = intlog2 (requested_type) - 2
 	- (dur->duration_log () > 2 ? dur->duration_log () - 2 : 0);
       if (tremolo_flags <= 0)
@@ -172,14 +171,20 @@ Stem_engraver::listen_tremolo (Stream_event *ev)
 ADD_ACKNOWLEDGER (Stem_engraver, rhythmic_head);
 
 ADD_TRANSLATOR (Stem_engraver,
+
 		/* doc */ "Create stems and single-stem tremolos.  It also works together with "
 		"the beam engraver for overriding beaming.",
+
 		/* create */
 		"Stem "
 		"StemTremolo ",
-		/* accept */ "tremolo-event",
+		
+		/* accept */
+		"tremolo-event",
+
 		/* read */
 		"tremoloFlags "
 		"stemLeftBeamCount "
 		"stemRightBeamCount ",
+
 		/* write */ "");
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index b818532294..333c6a8e9e 100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -1456,6 +1456,7 @@
     (Stem
      . (
 	(direction . ,ly:stem::calc-direction)
+	(duration-log . ,note-head::calc-duration-log)
 	(default-direction . ,ly:stem::calc-default-direction)
 	(stem-end-position . ,ly:stem::calc-stem-end-position)
 	(neutral-direction . ,DOWN)
diff --git a/scm/output-lib.scm b/scm/output-lib.scm
index 7281fee947..90edde716a 100644
--- a/scm/output-lib.scm
+++ b/scm/output-lib.scm
@@ -241,18 +241,15 @@ centered, X==1 is at the right, X == -1 is at the left."
 ;; Tuplets
 
 (define-public (tuplet-number::calc-denominator-text grob)
-  (let*
-      ((ev (ly:grob-property grob 'cause)))
-    
-    (number->string (ly:event-property ev 'denominator))))
-
+  (number->string (ly:event-property (event-cause grob) 'denominator)))
 
 (define-public (tuplet-number::calc-fraction-text grob)
   (let*
-      ((ev (ly:grob-property grob 'cause)))
+      ((ev (event-cause grob)))
+
     (format "~a:~a" 
-      (ly:event-property ev 'denominator)
-      (ly:event-property ev 'numerator))))
+	    (ly:event-property ev 'denominator)
+	    (ly:event-property ev 'numerator))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Color
@@ -403,7 +400,7 @@ centered, X==1 is at the right, X == -1 is at the left."
 
 (define-public (fingering::calc-text grob)
   (let*
-      ((event (ly:grob-property grob 'cause))
+      ((event (event-cause grob))
        (digit (ly:event-property event 'digit)))
     
     (if (> digit 5)
@@ -415,8 +412,7 @@ centered, X==1 is at the right, X == -1 is at the left."
 
 (define-public (string-number::calc-text grob)
   (let*
-      ((event (ly:grob-property grob 'cause))
-       (digit (ly:event-property event 'string-number)))
+      ((digit (ly:event-property (event-cause  grob) 'string-number)))
     
     (number->string digit 10)
   ))
diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py
index 1442555d29..3f306560d6 100644
--- a/scripts/lilypond-book.py
+++ b/scripts/lilypond-book.py
@@ -1382,7 +1382,7 @@ def process_snippets (cmd, ly_snippets, texstr_snippets, png_snippets):
             my_system ('latex %s.texstr' % l)
 
     if ly_names:
-        open ('snippet-names', 'w').write ('\n'.join (['snippet-map.ly']
+        open ('snippet-names', 'wb').write ('\n'.join (['snippet-map.ly']
                                                       + ly_names))
         
         my_system (string.join ([cmd, 'snippet-names']))