import re
import md5
-################
-# RELOCATION
-################
-
-
-for d in ['@lilypond_datadir@',
- '@lilypond_libdir@']:
- sys.path.insert (0, os.path.join (d, 'python'))
-
-# dynamic relocation, for GUB binaries.
-bindir = os.path.abspath (os.path.split (sys.argv[0])[0])
-
-os.environ['PATH'] = bindir + os.pathsep + os.environ['PATH']
-for p in ['share', 'lib']:
- datadir = os.path.abspath (bindir + '/../%s/lilypond/current/python/' % p)
- sys.path.insert (0, datadir)
-
+"""
+@relocate-preamble@
+"""
import lilylib as ly
import fontextract
authors = ('Jan Nieuwenhuizen <janneke@gnu.org>',
'Han-Wen Nienhuys <hanwen@xs4all.nl>')
-
################################################################
def exit (i):
if global_options.verbose:
%s
%s
-''' % ( _ ('Copyright (c) %s by') % '2001--2006',
+''' % ( _ ('Copyright (c) %s by') % '2001--2007',
' '.join (authors),
_ ("Distributed under terms of the GNU General Public License."),
_ ("It comes with NO WARRANTY.")))
metavar=_ ("DIR"),
action='append', dest='include_path',
default=[os.path.abspath (os.getcwd ())])
+
+ p.add_option ('--left-padding',
+ metavar=_("PAD"),
+ dest="padding_mm",
+ help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)",
+ type="float",
+ default=3.0)
p.add_option ("-o", '--output', help=_ ("write output to DIR"),
metavar=_ ("DIR"),
action='store', dest='output_name',
default='')
+
p.add_option ('-P', '--process', metavar=_ ("COMMAND"),
help = _ ("process ly_files using COMMAND FILE..."),
action='store',
- dest='process_cmd', default='lilypond -b eps')
+ dest='process_cmd', default='lilypond -dbackend=eps')
p.add_option ('--pdf',
action="store_true",
dest="create_pdf",
(?P<match>
<(?P<inline>(inline)?)mediaobject>\s*<imageobject.*?>\s*<imagedata\s+fileref="(?P<filename>.*?\.ly)"\s*(role="(?P<options>.*?)")?\s*(/>|>\s*</imagedata>)\s*</imageobject>\s*</(inline)?mediaobject>)''',
+ 'lilypond_version':
+ no_match,
+
'multiline_comment':
r'''(?smx)
(?P<match>
'verbatim':
no_match,
-
},
##
HTML: {
\s*(?P<filename>.*?)\s*
</lilypondfile>)''',
+ 'lilypond_version':
+ r'''(?mx)(?P<match><lilypond-version>)''',
+
'multiline_comment':
r'''(?smx)
(?P<match>
(?P<filename>\S+?)
})''',
+ 'lilypond_version':
+ r'''(?P<match>\\lilypond_version)''',
+
'multiline_comment':
no_match,
(?P<filename>\S+)
})''',
+ 'lilypond_version':
+ r'''(?mx)(?P<match>@lilypondversion)''',
+
'multiline_comment':
r'''(?smx)
^(?P<match>
PREAMBLE_LY = '''%%%% Generated by %(program_name)s
%%%% Options: [%(option_string)s]
\\include "lilypond-book-preamble.ly"
-%(preamble_string)s
-
-
-
-
%% ****************************************************************
%% Start cut-&-pastable-section
%% ****************************************************************
+%(preamble_string)s
+
\paper {
#(define dump-extents #t)
%(font_dump_setting)s
%(paper_string)s
+ force-assignment = #""
+ line-width = #(- line-width (* mm %(padding_mm)f))
}
\layout {
'\n ') % vars ()
preamble_string = string.join (compose_dict[PREAMBLE],
'\n ') % override
-
+ padding_mm = global_options.padding_mm
font_dump_setting = ''
if FONTLOAD in self.option_dict:
font_dump_setting = '#(define-public force-eps-font-include #t)\n'
and (self.relevant_contents (self.full_ly ())
== self.relevant_contents (open (ly_file).read ()))):
return None
- if global_options.verbose:
- print 'OUT OF DATE: ', ly_file
+
return self
def png_is_outdated (self):
return ('\\sourcefilename \"%s\"\n\\sourcefileline 0\n%s'
% (name, contents))
+class Version_snippet (Snippet):
+ def replacement_text (self):
+ return (program_version)
+
snippet_type_to_class = {
'lilypond_file': Lilypond_file_snippet,
'lilypond_block': Lilypond_snippet,
+ 'lilypond_version': Version_snippet,
'lilypond': Lilypond_snippet,
'include': Include_snippet,
}
be_verbose=global_options.verbose,
progress_p=1)
- if global_options.format in (HTML, TEXINFO):
+ if global_options.format in (HTML, TEXINFO) and '--formats' not in cmd:
cmd += ' --formats=png '
- if global_options.format in (DOCBOOK):
+ elif global_options.format in (DOCBOOK) and '--formats' not in cmd:
cmd += ' --formats=png,pdf '
+
+
# UGH
# the --process=CMD switch is a bad idea
# it is too generic for lilypond-book.
snippet_map = open ('snippet-map.ly', 'w')
snippet_map.write ("""
#(define version-seen #t)
+#(define output-empty-score-list #f)
#(ly:add-file-name-alist '(
""")
for ly in lys:
def do_process_cmd (chunks, input_name):
all_lys = filter (lambda x: is_derived_class (x.__class__,
Lilypond_snippet),
- chunks)
+ chunks)
write_file_map (all_lys, input_name)
ly_outdated = filter (lambda x: is_derived_class (x.__class__,
# 'verb',
'singleline_comment',
'lilypond_file',
+ 'lilypond_version',
'include',
'lilypond',
)
return args
+def psfonts_warning (options, basename):
+ if options.format in (TEXINFO, LATEX):
+ psfonts_file = os.path.join (options.output_name, basename + '.psfonts')
+ output = os.path.join (options.output_name, basename + '.dvi' )
+
+ if not options.create_pdf:
+ if not options.psfonts:
+ warning (_ ("option --psfonts not used"))
+ warning (_ ("processing with dvips will have no fonts"))
+ else:
+ progress ('\n')
+ progress (_ ("DVIPS usage:"))
+ progress ('\n')
+ progress (" dvips -h %(psfonts_file)s %(output)s" % vars ())
+ progress ('\n')
+
def main ():
# FIXME: 85 lines of `main' macramee??
files = do_options ()
if global_options.format in (TEXINFO, LATEX):
## prevent PDF from being switched on by default.
global_options.process_cmd += ' --formats=eps '
-
- if (global_options.format in (TEXINFO, LATEX)
- and global_options.create_pdf):
- global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts "
+ if global_options.create_pdf:
+ global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts "
if global_options.verbose:
global_options.process_cmd += " --verbose "
- global_options.process_cmd += " -dread-file-list -deps-box-padding=-3 "
+ if global_options.padding_mm:
+ global_options.process_cmd += " -deps-box-padding=%f " % global_options.padding_mm
+
+ global_options.process_cmd += " -dread-file-list "
identify ()
except Compile_error:
exit (1)
- if global_options.format in (TEXINFO, LATEX):
- psfonts_file = os.path.join (global_options.output_name, basename + '.psfonts')
- output = os.path.join (global_options.output_name, basename + '.dvi' )
-
- if not global_options.psfonts and not global_options.create_pdf:
- warning (_ ("option --psfonts not used"))
- warning (_ ("processing with dvips will have no fonts"))
- else:
- progress ('\n')
- progress (_ ("DVIPS usage:"))
- progress ('\n')
- progress (" dvips -h %(psfonts_file)s %(output)s" % vars ())
- progress ('\n')
+ psfonts_warning (global_options, basename)
inputs = note_input_file ('')
inputs.pop ()