]> git.donarmstrong.com Git - lilypond.git/blobdiff - python/musicexp.py
Correct a misplaced << in the body of a TabStaff block.
[lilypond.git] / python / musicexp.py
index a0b13efcc6bb2ebfa7dc4c2a4f5e9a92230f280b..c4a1d4eefe2aa4914dab0c84d4efaf3bbc74987e 100644 (file)
@@ -57,8 +57,8 @@ class Output_printer(object):
     def set_file (self, file):
         self._file = file
 
-    def dump_version (self):
-        self.print_verbatim ('\\version "2.19.15"')
+    def dump_version (self, version):
+        self.print_verbatim ('\\version "' + version + '"')
         self.newline ()
 
     def get_indent (self):
@@ -826,8 +826,9 @@ class Header:
 
         # If a header item contains a line break, it is segmented. The
         # substrings are formatted with the help of \markup, using
-        # \column and \line.
-        if '\n' in value:
+        # \column and \line. An exception, however, are texidoc items,
+        # which should not contain LilyPond formatting commands.
+        if (key != 'texidoc') and ('\n' in value):
             value = value.replace('"', '')
             printer.dump(r'\markup \column {')
             substrings = value.split('\n')
@@ -847,18 +848,6 @@ class Header:
             if v:
                self.format_header_strings(k, v, printer)
         #printer.newline()
-        printer.dump(r'tagline = \markup {')
-        printer.newline()
-        printer.dump(r'  \center-column {')
-        printer.newline()
-        printer.dump('\line {"Music engraving by LilyPond " $(lilypond-version) | \with-url #"http://www.lilypond.org" {www.lilypond.org}}')
-        printer.newline()
-        printer.dump('\line {\with-url #"https://philomelos.net" {\with-color #grey {Learn, teach and share music on https://philomelos.net}}}')
-        printer.newline()
-        printer.dump('}')
-        printer.newline()
-        printer.dump('}')
-        printer.newline()
         printer.dump("}")
         printer.newline()
         printer.newline()
@@ -1817,7 +1806,7 @@ class KeySignatureChange (Music):
         elif self.non_standard_alterations:
             alterations = [self.format_non_standard_alteration (a) for
                                         a in self.non_standard_alterations]
-            return "\\set Staff.keySignature = #`(%s)" % string.join (alterations, " ")
+            return "\\set Staff.keyAlterations = #`(%s)" % string.join (alterations, " ")
         else:
             return ''
 
@@ -2203,52 +2192,19 @@ class StaffGroup:
             return
 
     def print_ly (self, printer):
-        #prints two << before a StaffGroup, one after a StaffGroup and one before each \new Staff
-        #printer.dump("<<")
-        #printer.newline ()
         self.print_chords(printer)
         self.print_fretboards(printer)
         if self.stafftype:
             printer.dump ("\\new %s" % self.stafftype)
+        self.print_ly_overrides (printer)
+        printer.newline ()
+        if self.stafftype:
             printer.dump ("<<")
             printer.newline ()
-        # if there is a width-block << should not be printed after StaffGroup but after the width-block
-        # this seems to work. It prints \new StaffGroup \with{} <<:
-#        if self.stafftype == "StaffGroup" and self.print_ly_overrides:
-            #prints a new line before each new staff type, e.g. before \new StaffGroup and \new Staff...
-            #printer.newline ()
-#            printer.dump("\\new %s" % self.stafftype)
-            #self.print_ly_overrides (printer)
-            #prints a << and a new line after each new staff type.
-           # printer.dump ("<<")
-           # printer.newline()
-        # print a << after all other staff types:
-        # can't use "else:" because then we get a '\new None' staff type in LilyPond...
-#       elif self.stafftype == "StaffGroup":
-#           printer.dump ("\\new %s" % self.stafftype)
-#           printer.dump ("<<")
-#           printer.newline ()
-        # << should be printed directly after StaffGroups without a with-block:
-        # this doesn't work:
-#       elif self.stafftype == "StaffGroup" and not self.print_ly_overrides:
-#           printer.dump ("<<")
-#           printer.newline ()
-        # this is bullshit:
-#       elif self.stafftype == "StaffGroup" and self.stafftype == "Staff":
-#           printer.dump ("<<")
-#           printer.newline ()
-        # this prints \new Staff << for every staff in the score:
-#       elif self.stafftype:
-#           printer.dump ("\\new %s" % self.stafftype)
-#           printer.dump ("<<")
-#           printer.newline ()
-        self.print_ly_overrides (printer)
-        #printer.dump ("<<")
-        #printer.newline ()
         if self.stafftype and self.instrument_name:
             printer.dump ("\\set %s.instrumentName = %s" % (self.stafftype,
                     escape_instrument_string (self.instrument_name)))
-            #printer.newline ()
+            printer.newline ()
         if self.stafftype and self.short_instrument_name:
             printer.dump ("\\set %s.shortInstrumentName = %s" % (self.stafftype,
                     escape_instrument_string (self.short_instrument_name)))
@@ -2257,21 +2213,12 @@ class StaffGroup:
             printer.dump(
                 r'\set {stafftype}.midiInstrument = #"{sound}"'.format(
                     stafftype=self.stafftype, sound=self.sound))
+            printer.newline ()
         self.print_ly_contents (printer)
         printer.newline ()
-# This is a crude hack: In scores with staff groups the closing angled brackets are not printed.
-# That's why I added the following two lines. I couldn't find a proper solution. This won't work with scores several staff groups!!!
-        if self.stafftype == "StaffGroup":
+        if self.stafftype:
             printer.dump (">>")
-        #printer.dump (">>")
-        #printer.dump (">>")
-        #printer.newline ()
-        #printer.dump ("test") #test is printed 4 times in a staffgroup with two staves: once at the end of each staff and twice at the end of the staffgroup. That's not what we want!
-    #printer.dump ("test") NameError: name 'printer' is not defined
-
-#test
-#    def print_staffgroup_closing_brackets (self, printer): #test see class Staff / Score.
-#       printer.dump ("test")
+            printer.newline ()
 
 
 class Staff (StaffGroup):
@@ -2338,13 +2285,6 @@ The next line contains a bug: The voices might not appear in numerical order! So
             self.substafftype = "Staff"
             #printer.dump ('test')
         StaffGroup.print_ly (self, printer)
-        #StaffGroup.print_staffgroup_closing_brackets (self, printer) prints test after each definition of a staff
-        printer.dump ('>>')
-        #printer.dump ("test") #prints test after each definition of a context.
-        printer.newline ()
-        #StaffGroup.print_staffgroup_closing_brackets(self, printer) #prints test after each definition of a staff.
-    #printer.dump ("test")# NameError: name 'printer' is not defined
-    #StaffGroup.print_staffgroup_closing_brackets() #TypeError: unbound method print_staffgroup_closing_brackets() must be called with StaffGroup instance as first argument (got nothing instead)
 
 
 class TabStaff (Staff):