logger.debug('previous = ' + previous)
if os.path.isdir( previous ):
logger.info('Found directory "%s".', previous)
- copy_tree( previous, cwd )
+ copy_tree( previous, cwd, True )
logger.info('Content copied to directory "%s".', cwd)
return
for searching but the whole string is used to replace
%% for a rc_entry. So, feel free to add '$$i' etc for programs.
- path: additional pathes
+ path: additional paths (will be prepended to the program name)
rc_entry: entry to outfile, can be
1. emtpy: no rc entry will be added
ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
elif ac_word.endswith('.pl'):
ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
+ elif ac_dir in additional_path:
+ ac_prog = ac_prog.replace(ac_word, r'\"%s\"' % (os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if len(rc_entry) == 1:
addToRC(rc_entry[0].replace('%%', ac_prog))
ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
elif ac_word.endswith('.pl'):
ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
+ elif ac_dir in additional_path:
+ ac_prog = ac_prog.replace(ac_word, r'\"%s\"' % (os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if found_prime == False:
if len(rc_entry) == 1:
dtl_tools = False
return dtl_tools
+def checkInkscape():
+ ''' Check whether Inkscape is available and return the full path (Windows only) '''
+ if os.name != 'nt':
+ return 'inkscape'
+ import _winreg
+ aReg = _winreg.ConnectRegistry(None, _winreg.HKEY_CLASSES_ROOT)
+ try:
+ aKey = _winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
+ val = _winreg.QueryValueEx(aKey, "")
+ return str(val[0]).split('"')[1].replace('.exe', '')
+ except EnvironmentError:
+ try:
+ aKey = _winreg.OpenKey(aReg, r"Applications\inkscape.exe\shell\open\command")
+ val = _winreg.QueryValueEx(aKey, "")
+ return str(val[0]).split('"')[1].replace('.exe', '')
+ except EnvironmentError:
+ return 'inkscape'
def checkLatex(dtl_tools):
''' Check latex, return lyx_check_config '''
def checkLuatex():
- ''' Check if luatex is there and usable '''
+ ''' Check if luatex is there '''
path, LUATEX = checkProg('LuaTeX', ['lualatex $$i'])
path, DVILUATEX = checkProg('LuaTeX (DVI)', ['dvilualatex $$i'])
if LUATEX != '':
- # luatex binary is there
- msg = "checking if LuaTeX is usable ..."
- # Check if luatex is usable
- writeToFile('luatest.tex', r'''
-\nonstopmode
-\documentclass{minimal}
-\usepackage{fontspec}
-\begin{document}
-.
-\end{document}
-''')
- # run lualatex on luatest.tex and check result
- luatest = cmdOutput(LUATEX + ' luatest.tex')
- if luatest.find('XeTeX is required to compile this document') != -1:
- # fontspec/luatex too old! We do not support this version.
- logger.info(msg + ' no (probably not recent enough)')
- elif luatest.find('! LaTeX Error: File `fontspec.sty\' not found') != -1:
- # fontspec missing
- logger.info(msg + ' no (missing fontspec)')
- else:
- # working luatex
- logger.info(msg + ' yes')
- addToRC(r'\converter luatex pdf5 "%s" "latex=lualatex"' % LUATEX)
- if DVILUATEX != '':
- addToRC(r'\converter luatex dvi3 "%s" "latex=dvilualatex"' % DVILUATEX)
- # remove temporary files
- removeFiles(['luatest.tex', 'luatest.log', 'luatest.aux', 'luatest.pdf'])
+ addToRC(r'\converter luatex pdf5 "%s" "latex=lualatex"' % LUATEX)
+ if DVILUATEX != '':
+ addToRC(r'\converter luatex dvi3 "%s" "latex=dvilualatex"' % DVILUATEX)
def checkModule(module):
checkViewerEditor('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
rc_entry = [r'\Format fen fen FEN "" "%%" "%%" "" ""'])
#
- checkViewerEditor('a SVG viewer and editor', ['inkscape'],
- rc_entry = [r'\Format svg "svg, svgz" SVG "" "%%" "%%" "vector,zipped=native" "image/svg+xml"'])
+ checkViewerEditor('a SVG viewer and editor', [inkscape_name],
+ rc_entry = [r'\Format svg "svg, svgz" SVG "" "%%" "%%" "vector,zipped=native" "image/svg+xml"'],
+ path = [inkscape_path])
#
imageformats = r'''\Format bmp bmp BMP "" "%s" "%s" "" "image/x-bmp"
\Format gif gif GIF "" "%s" "%s" "" "image/gif"
checkViewerEditor('a Rich Text and Word viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'],
rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export" "application/rtf"
\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export" "application/msword"
-\Format word2 docx "MS Word Office Open XML" W "%%" "%%" "document,vector,menu=export" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"'''])
+\Format word2 docx "MS Word Office Open XML" O "%%" "%%" "document,vector,menu=export" "application/vnd.openxmlformats-officedocument.wordprocessingml.document"'''])
#
# entries that do not need checkProg
addToRC(r'''\Format date "" "date command" "" "" "" "" ""
checkProg('an OpenDocument -> LaTeX converter', ['w2l -clean $$i'],
rc_entry = [ r'\converter odt latex "%%" ""' ])
#
+ checkProg('an Open Document (Pandoc) -> LaTeX converter', ['pandoc -s -f odt -o $$o -t latex $$i'],
+ rc_entry = [ r'\converter odt3 latex "%%" ""' ])
+ #
checkProg('a MS Word Office Open XML converter -> LaTeX', ['pandoc -s -f docx -o $$o -t latex $$i'],
rc_entry = [ r'\converter word2 latex "%%" ""' ])
# Only define a converter to pdf6, otherwise the odt format could be
checkProg('a PS to EPS converter', ['ps2eps -- < $$i > $$o'],
rc_entry = [ r'\converter eps2 eps "%%" ""' ])
#
- checkProg('a PDF to PS converter', ['pdf2ps $$i $$o', 'pdftops $$i $$o'],
+ checkProg('a PDF to PS converter', ['pdftops $$i $$o', 'pdf2ps $$i $$o'],
rc_entry = [ r'\converter pdf ps "%%" ""' ])
# Only define a converter from pdf6 for graphics
checkProg('a PDF to EPS converter', ['pdftops -eps -f 1 -l 1 $$i $$o'],
\converter tgif png "tgif -print -color -png -o $$d $$i" ""
\converter tgif pdf6 "tgif -print -color -pdf -stdout $$i > $$o" ""'''])
#
- checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i'],
+ checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'],
rc_entry = [ r'\converter wmf eps "%%" ""'])
#
- checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i'],
+ checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'],
rc_entry = [ r'\converter emf eps "%%" ""'])
+ #
+ checkProg('a WMF -> PDF converter', [inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
+ rc_entry = [ r'\converter wmf pdf6 "%%" ""'])
+ #
+ checkProg('an EMF -> PDF converter', [inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
+ rc_entry = [ r'\converter emf pdf6 "%%" ""'])
# Only define a converter to pdf6 for graphics
checkProg('an EPS -> PDF converter', ['epstopdf'],
rc_entry = [ r'\converter eps pdf6 "epstopdf --outfile=$$o $$i" ""'])
#
- checkProg('an EPS -> PNG converter', ['convert $$i $$o'],
+ checkProg('an EPS -> PNG converter', ['magick $$i $$o', 'convert $$i $$o'],
rc_entry = [ r'\converter eps png "%%" ""'])
#
# no agr -> pdf6 converter, since the pdf library used by gracebat is not
checkProg('an OpenDocument -> EPS converter', ['libreoffice -headless -nologo -convert-to eps $$i', 'unoconv -f eps --stdout $$i > $$o'],
rc_entry = [ r'\converter odg eps2 "%%" ""'])
# Only define a converter to pdf6 for graphics
- checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
- rc_entry = [ r'\converter svg pdf6 "%%" ""'])
+ # Prefer rsvg-convert over inkscape since it is faster (see http://www.lyx.org/trac/ticket/9891)
+ checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
+ rc_entry = [ r'\converter svg pdf6 "%%" ""'],
+ path = ['', inkscape_path])
#
- checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-eps=$$o'],
- rc_entry = [ r'\converter svg eps "%%" ""'])
+ checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_name + ' --file=$$i --export-area-drawing --without-gui --export-eps=$$o'],
+ rc_entry = [ r'\converter svg eps "%%" ""'],
+ path = ['', inkscape_path])
#
- checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', 'inkscape --without-gui --file=$$i --export-png=$$o'],
- rc_entry = [ r'\converter svg png "%%" ""'])
+ checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_name + ' --without-gui --file=$$i --export-png=$$o'],
+ rc_entry = [ r'\converter svg png "%%" ""'],
+ path = ['', inkscape_path])
#
# gnumeric/xls/ods to tex
return x.strip()
classname = file.split(os.sep)[-1].split('.')[0]
# return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article}
- p = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}')
- q = re.compile(r'\DeclareCategory{(.*)}')
+ p = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+ q = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
classdeclaration = ""
categorydeclaration = '""'
for line in open(file).readlines():
# Construct the list of classes to test for.
# build the list of available layout files and convert it to commands
# for chkconfig.ltx
- declare = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}')
- category = re.compile(r'\DeclareCategory{(.*)}')
+ declare = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+ category = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
empty = re.compile(r'^\s*$')
testclasses = list()
for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
if not os.path.isfile( os.path.join(srcdir, 'scripts', 'TeXFiles.py') ):
logger.error("configure: error: cannot find TeXFiles.py script")
sys.exit(1)
- tfp = cmdOutput("python -tt " + '"' + os.path.join(srcdir, 'scripts', 'TeXFiles.py') + '"')
+ interpreter = sys.executable
+ if interpreter == '':
+ interpreter = "python"
+ tfp = cmdOutput(interpreter + " -tt " + '"' + os.path.join(srcdir, 'scripts', 'TeXFiles.py') + '"')
logger.info(tfp)
logger.info("\tdone")
# check java and perl before any checkProg that may require them
java = checkProg('a java interpreter', ['java'])[1]
perl = checkProg('a perl interpreter', ['perl'])[1]
+ (inkscape_path, inkscape_name) = os.path.split(checkInkscape())
checkFormatEntries(dtl_tools)
checkConverterEntries()
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()