Add lilypond external inset

* src/graphics/GraphicsConverter.C
	(build_script): Change the current directory to the directory of
	the output file

	* src/converter.C
	(Converters::convert): Add comment

	* lib/external_templates: Add lilypond template

	* lib/configure.py
	(checkFormatEntries): Add lilypond format
	(checkConverterEntries): Add lilypond converter


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15245 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Georg Baum 2006-10-04 19:01:00 +00:00
parent b3b65e6f70
commit 90867eff0d
4 changed files with 82 additions and 0 deletions

View File

@ -254,6 +254,7 @@ def checkFormatEntries():
\Format docbook sgml DocBook B "" "%%" "document"
\Format docbook-xml xml "Docbook (XML)" "" "" "%%" "document"
\Format literate nw NoWeb N "" "%%" "document"
\Format lilypond ly "LilyPond music" "" "" "%%" "vector"
\Format latex tex "LaTeX (plain)" L "" "%%" "document"
\Format linuxdoc sgml LinuxDoc x "" "%%" "document"
\Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document"
@ -408,6 +409,24 @@ def checkConverterEntries():
'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
rc_entry = [ r'\converter latex html "%%" "originaldir,needaux"' ])
#
path, lilypond = checkProg('a LilyPond -> ESP/PDF/PNG converter', ['lilypond'])
if (lilypond != ''):
version_string = cmdOutput("lilypond --version")
match = re.match('GNU LilyPond (\S+)', version_string)
if match:
version_number = match.groups()[0]
version = version_number.split('.')
if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 6):
addToRC(r'''\converter lilypond eps "lilypond -b eps --ps $$i" ""
\converter lilypond png "lilypond -b eps --png $$i" ""''')
if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 9):
addToRC(r'\converter lilypond pdf "lilypond -b eps --pdf $$i" ""')
print '+ found LilyPond version %s.' % version_number
else:
print '+ found LilyPond, but version %s is too old.' % version_number
else:
print '+ found LilyPond, but could not extract version number.'
#
# FIXME: no rc_entry? comment it out
# checkProg('Image converter', ['convert $$i $$o'])
#

View File

@ -196,6 +196,55 @@ Template ChessDiagram
TemplateEnd
Template LilyPond
GuiName "Lilypond typeset music"
HelpText
Sheet music typeset by GNU LilyPond,
converted to .pdf or .eps for inclusion
Using .eps requires at least lilypond 2.6
Using .pdf requires at least lilypond 2.9
HelpTextEnd
InputFormat "lilypond"
FileFilter "*.ly"
AutomaticProduction true
Transform Rotate
Transform Resize
Transform Clip
Transform Extra
Format LaTeX
TransformOption Rotate RotationLatexOption
TransformOption Resize ResizeLatexOption
TransformOption Clip ClipLatexOption
TransformOption Extra ExtraOption
Option Arg "[$$Extra,$$Rotate,$$Resize,$$Clip]"
Product "\\includegraphics$$Arg{$$AbsOrRelPathMaster$$Basename}"
UpdateFormat eps
UpdateResult "$$AbsPath$$Basename.eps"
Requirement "graphicx"
ReferencedFile latex "$$AbsPath$$Basename.eps"
ReferencedFile dvi "$$AbsPath$$Basename.eps"
FormatEnd
Format PDFLaTeX
TransformOption Rotate RotationLatexOption
TransformOption Resize ResizeLatexOption
TransformOption Clip ClipLatexOption
TransformOption Extra ExtraOption
Option Arg "[$$Extra,$$Rotate,$$Resize,$$Clip]"
Product "\\includegraphics$$Arg{$$AbsOrRelPathMaster$$Basename}"
UpdateFormat pdf
UpdateResult "$$AbsPath$$Basename.pdf"
Requirement "graphicx"
ReferencedFile pdflatex "$$AbsPath$$Basename.pdf"
FormatEnd
Format Ascii
Product "[LilyPond: $$FName]"
FormatEnd
Format DocBook
Product "[LilyPond: $$FName]"
FormatEnd
TemplateEnd
Template Date
GuiName "Date"
HelpText

View File

@ -326,8 +326,15 @@ bool Converters::convert(Buffer const * buffer,
}
OutputParams runparams;
runparams.flavor = getFlavor(edgepath);
// Some converters (e.g. lilypond) can only output files to the
// current directory, so we need to change the current directory.
// This has the added benefit that all other files that may be
// generated by the converter are deleted when LyX closes and do not
// clutter the real working directory.
string path = onlyPath(from_file);
Path p(path);
// empty the error list before any new conversion takes place.
errorList.clear();

View File

@ -332,6 +332,13 @@ void build_script(string const & from_file,
"outfile = " << quoteName(outfile, quote_python) << "\n"
"shutil.copy(infile, outfile)\n";
// Some converters (e.g. lilypond) can only output files to the
// current directory, so we need to change the current directory.
// This has the added benefit that all other files that may be
// generated by the converter are deleted when LyX closes and do not
// clutter the real working directory.
script << "os.chdir(" << quoteName(onlyPath(outfile)) << ")\n";
if (edgepath.empty()) {
// Either from_format is unknown or we don't have a
// converter path from from_format to to_format, so we use