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):
# 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')
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()
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 ''
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)))
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):
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):