try:
aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
val = winreg.QueryValueEx(aKey, "")
- return str(val[0]).split('"')[1].replace('.exe', '')
+ return str(val[0]).split('"')[1]
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', '')
+ return str(val[0]).split('"')[1]
except EnvironmentError:
return 'inkscape'
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_name],
+ checkViewerEditor('a SVG viewer and editor', [inkscape_gui],
rc_entry = [r'''\Format svg "svg" SVG "" "%%" "%%" "vector" "image/svg+xml"
\Format svgz "svgz" "SVG (compressed)" "" "%%" "%%" "vector,zipped=native" ""'''],
path = [inkscape_path])
\converter fig pdftex "python -tt $$s/scripts/fig2pdftex.py $$i $$o" ""
\converter fig pstex "python -tt $$s/scripts/fig2pstex.py $$i $$o" ""''')
#
- checkProg('a SVG -> PDFTeX converter', [inkscape_name],
+ checkProg('a SVG -> PDFTeX converter', [inkscape_cl],
rc_entry = [ r'\converter svg pdftex "python -tt $$s/scripts/svg2pdftex.py %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
#
- checkProg('a SVG -> PSTeX converter', [inkscape_name],
+ checkProg('a SVG -> PSTeX converter', [inkscape_cl],
rc_entry = [ r'\converter svg pstex "python -tt $$s/scripts/svg2pstex.py %% $$p$$i $$p$$o" ""'],
path = [inkscape_path])
#
\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', inkscape_name + ' --file=$$p$$i --export-area-drawing --without-gui --export-eps=$$p$$o'],
+ checkProg('a WMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+ % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'\converter wmf eps "%%" ""'])
#
- checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', 'wmf2eps -o $$o $$i', inkscape_name + ' --file=$$p$$i --export-area-drawing --without-gui --export-eps=$$p$$o'],
+ checkProg('an EMF -> EPS converter', ['metafile2eps $$i $$o', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+ % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'\converter emf eps "%%" ""'])
#
- checkProg('a WMF -> PDF converter', [inkscape_name + ' --file=$$p$$i --export-area-drawing --without-gui --export-pdf=$$p$$o'],
+ checkProg('a WMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'\converter wmf pdf6 "%%" ""'])
#
- checkProg('an EMF -> PDF converter', [inkscape_name + ' --file=$$p$$i --export-area-drawing --without-gui --export-pdf=$$p$$o'],
+ checkProg('an EMF -> PDF converter', [inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o' % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'\converter emf pdf6 "%%" ""'])
# Only define a converter to pdf6 for graphics
checkProg('an EPS -> PDF converter', ['epstopdf'],
rc_entry = [ r'\converter svg svgz "%%" ""'])
# Only define a converter to pdf6 for graphics
# 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=$$p$$i --export-area-drawing --without-gui --export-pdf=$$p$$o'],
+ checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-pdf=%s$$o'
+ % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'''\converter svg pdf6 "%%" ""
\converter svgz pdf6 "%%" ""'''],
path = ['', inkscape_path])
#
- checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_name + ' --file=$$p$$i --export-area-drawing --without-gui --export-eps=$$p$$o'],
+ checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', inkscape_cl + ' --file=%s$$i --export-area-drawing --without-gui --export-eps=%s$$o'
+ % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'''\converter svg eps "%%" ""
\converter svgz eps "%%" ""'''],
path = ['', inkscape_path])
#
- checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_name + ' --without-gui --file=$$i --export-png=$$o'],
+ checkProg('a SVG -> PNG converter', ['rsvg-convert -f png -o $$o $$i', inkscape_cl + ' --without-gui --file=%s$$i --export-png=%s$$o'
+ % (inkscape_fileprefix, inkscape_fileprefix)],
rc_entry = [ r'''\converter svg png "%%" "",
\converter svgz png "%%" ""'''],
path = ['', inkscape_path])
def checkForClassExtension(x):
'''if the extension for a latex class is not
provided, add .cls to the classname'''
- if not '.' in x:
- return x.strip() + '.cls'
+ if not b'.' in x:
+ return x.strip() + b'.cls'
else:
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'^\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():
+ p = re.compile(b'^\s*#\s*\\\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+ q = re.compile(b'^\s*#\s*\\\\DeclareCategory{(.*)}\s*$')
+ classdeclaration = b""
+ categorydeclaration = b'""'
+ for line in open(file, 'rb').readlines():
res = p.search(line)
qres = q.search(line)
if res != None:
(classtype, optAll, opt, opt1, desc) = res.groups()
- avai = {'LaTeX':'false', 'DocBook':bool_docbook}[classtype]
+ avai = {b'LaTeX':b'false', b'DocBook':bool_docbook.encode('ascii')}[classtype]
if opt == None:
- opt = classname
- prereq_latex = checkForClassExtension(classname)
+ opt = classname.encode('ascii')
+ prereq_latex = checkForClassExtension(classname.encode('ascii'))
else:
- prereq_list = optAll[1:-1].split(',')
+ prereq_list = optAll[1:-1].split(b',')
prereq_list = list(map(checkForClassExtension, prereq_list))
- prereq_latex = ','.join(prereq_list)
- prereq_docbook = {'true':'', 'false':'docbook'}[bool_docbook]
- prereq = {'LaTeX':prereq_latex, 'DocBook':prereq_docbook}[classtype]
- classdeclaration = ('"%s" "%s" "%s" "%s" "%s"'
+ prereq_latex = b','.join(prereq_list)
+ prereq_docbook = {'true':b'', 'false':b'docbook'}[bool_docbook]
+ prereq = {b'LaTeX':prereq_latex, b'DocBook':prereq_docbook}[classtype]
+ classdeclaration = (b'"%s" "%s" "%s" "%s" "%s"'
% (classname, opt, desc, avai, prereq))
- if categorydeclaration != '""':
- return classdeclaration + " " + categorydeclaration
+ if categorydeclaration != b'""':
+ return classdeclaration + b" " + categorydeclaration
if qres != None:
- categorydeclaration = '"%s"' % (qres.groups()[0])
- if classdeclaration != "":
- return classdeclaration + " " + categorydeclaration
- if classdeclaration != "":
- return classdeclaration + " " + categorydeclaration
+ categorydeclaration = b'"%s"' % (qres.groups()[0])
+ if classdeclaration != b"":
+ return classdeclaration + b" " + categorydeclaration
+ if classdeclaration != b"":
+ return classdeclaration + b" " + categorydeclaration
logger.warning("Layout file " + file + " has no \DeclareXXClass line. ")
- return ""
+ return b""
def checkLatexConfig(check_config, bool_docbook):
# fails, we still have something to start lyx.
logger.info(msg + ' default values')
logger.info('+checking list of textclasses... ')
- tx = open('textclass.lst', 'w')
- tx.write('''
+ tx = open('textclass.lst', 'wb')
+ tx.write(b'''
# This file declares layouts and their associated definition files
# (include dir. relative to the place where this file is).
# It contains only default values, since chkconfig.ltx could not be run
if foundClasses.count(cleanclass) == 0: # not found before
foundClasses.append(cleanclass)
retval = processLayoutFile(file, bool_docbook)
- if retval != "":
- tx.write(retval)
+ if retval != b"":
+ tx.write(retval + os.linesep)
tx.close()
logger.info('\tdone')
if not os.path.isfile('packages.lst') or not check_config:
removeFiles(['lyxmodules.lst', 'chkmodules.tex'])
logger.info('+checking list of modules... ')
- tx = open('lyxmodules.lst', 'w')
- tx.write('''## This file declares modules and their associated definition files.
+ tx = open('lyxmodules.lst', 'wb')
+ tx.write(b'''## This file declares modules and their associated definition files.
## It has been automatically generated by configure
## Use "Options/Reconfigure" if you need to update it after a
## configuration change.
continue
seen.append(filename)
- retval = processModuleFile(file, filename, bool_docbook)
- if retval != "":
+ retval = processModuleFile(file, filename.encode('ascii'), bool_docbook)
+ if retval != b"":
tx.write(retval)
tx.close()
logger.info('\tdone')
We expect output:
"ModuleName" "filename" "Description" "Packages" "Requires" "Excludes" "Category"
'''
- remods = re.compile(r'\DeclareLyXModule\s*(?:\[([^]]*?)\])?{(.*)}')
- rereqs = re.compile(r'#+\s*Requires: (.*)')
- reexcs = re.compile(r'#+\s*Excludes: (.*)')
- recaty = re.compile(r'#+\s*Category: (.*)')
- redbeg = re.compile(r'#+\s*DescriptionBegin\s*$')
- redend = re.compile(r'#+\s*DescriptionEnd\s*$')
-
- modname = desc = pkgs = req = excl = catgy = ""
+ remods = re.compile(b'^#\s*\\\\DeclareLyXModule\s*(?:\[([^]]*?)\])?{(.*)}')
+ rereqs = re.compile(b'#+\s*Requires: (.*)')
+ reexcs = re.compile(b'#+\s*Excludes: (.*)')
+ recaty = re.compile(b'#+\s*Category: (.*)')
+ redbeg = re.compile(b'#+\s*DescriptionBegin\s*$')
+ redend = re.compile(b'#+\s*DescriptionEnd\s*$')
+
+ modname = desc = pkgs = req = excl = catgy = b""
readingDescription = False
descLines = []
- for line in open(file).readlines():
+ for line in open(file, 'rb').readlines():
if readingDescription:
res = redend.search(line)
if res != None:
readingDescription = False
- desc = " ".join(descLines)
+ desc = b" ".join(descLines)
# Escape quotes.
- desc = desc.replace('"', '\\"')
+ desc = desc.replace(b'"', b'\\"')
continue
descLines.append(line[1:].strip())
continue
if res != None:
(pkgs, modname) = res.groups()
if pkgs == None:
- pkgs = ""
+ pkgs = b""
else:
- tmp = [s.strip() for s in pkgs.split(",")]
- pkgs = ",".join(tmp)
+ tmp = [s.strip() for s in pkgs.split(b",")]
+ pkgs = b",".join(tmp)
continue
res = rereqs.search(line)
if res != None:
req = res.group(1)
- tmp = [s.strip() for s in req.split("|")]
- req = "|".join(tmp)
+ tmp = [s.strip() for s in req.split(b"|")]
+ req = b"|".join(tmp)
continue
res = reexcs.search(line)
if res != None:
excl = res.group(1)
- tmp = [s.strip() for s in excl.split("|")]
- excl = "|".join(tmp)
+ tmp = [s.strip() for s in excl.split(b"|")]
+ excl = b"|".join(tmp)
continue
res = recaty.search(line)
if res != None:
catgy = res.group(1)
continue
- if modname == "":
+ if modname == b"":
logger.warning("Module file without \DeclareLyXModule line. ")
- return ""
+ return b""
- if pkgs != "":
+ if pkgs != b"":
# this module has some latex dependencies:
# append the dependencies to chkmodules.tex,
# which is \input'ed by chkconfig.ltx
testpackages = list()
- for pkg in pkgs.split(","):
- if "->" in pkg:
+ for pkg in pkgs.split(b","):
+ if b"->" in pkg:
# this is a converter dependency: skip
continue
- if pkg.endswith(".sty"):
+ if pkg.endswith(b".sty"):
pkg = pkg[:-4]
- testpackages.append("\\TestPackage{%s}" % (pkg,))
+ testpackages.append("\\TestPackage{%s}" % (pkg.decode('ascii'),))
cm = open('chkmodules.tex', 'a')
for line in testpackages:
cm.write(line + '\n')
cm.close()
- return ('"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n'
+ return (b'"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n'
% (modname, filename, desc, pkgs, req, excl, catgy))
removeFiles(['lyxciteengines.lst', 'chkciteengines.tex'])
logger.info('+checking list of cite engines... ')
- tx = open('lyxciteengines.lst', 'w')
- tx.write('''## This file declares cite engines and their associated definition files.
+ tx = open('lyxciteengines.lst', 'wb')
+ tx.write(b'''## This file declares cite engines and their associated definition files.
## It has been automatically generated by configure
## Use "Options/Reconfigure" if you need to update it after a
## configuration change.
continue
seen.append(filename)
- retval = processCiteEngineFile(file, filename, bool_docbook)
- if retval != "":
+ retval = processCiteEngineFile(file, filename.encode('ascii'), bool_docbook)
+ if retval != b"":
tx.write(retval)
tx.close()
logger.info('\tdone')
We expect output:
"CiteEngineName" "filename" "CiteEngineType" "CiteFramework" "DefaultBiblio" "Description" "Packages"
'''
- remods = re.compile(r'\DeclareLyXCiteEngine\s*(?:\[([^]]*?)\])?{(.*)}')
- redbeg = re.compile(r'#+\s*DescriptionBegin\s*$')
- redend = re.compile(r'#+\s*DescriptionEnd\s*$')
- recet = re.compile(r'\s*CiteEngineType\s*(.*)')
- redb = re.compile(r'\s*DefaultBiblio\s*(.*)')
- resfm = re.compile(r'\s*CiteFramework\s*(.*)')
+ remods = re.compile(b'^#\s*\\\\DeclareLyXCiteEngine\s*(?:\[([^]]*?)\])?{(.*)}')
+ redbeg = re.compile(b'#+\s*DescriptionBegin\s*$')
+ redend = re.compile(b'#+\s*DescriptionEnd\s*$')
+ recet = re.compile(b'\s*CiteEngineType\s*(.*)')
+ redb = re.compile(b'\s*DefaultBiblio\s*(.*)')
+ resfm = re.compile(b'\s*CiteFramework\s*(.*)')
modname = desc = pkgs = cet = db = cfm = ""
readingDescription = False
descLines = []
- for line in open(file).readlines():
+ for line in open(file, 'rb').readlines():
if readingDescription:
res = redend.search(line)
if res != None:
readingDescription = False
- desc = " ".join(descLines)
+ desc = b" ".join(descLines)
# Escape quotes.
- desc = desc.replace('"', '\\"')
+ desc = desc.replace(b'"', b'\\"')
continue
descLines.append(line[1:].strip())
continue
if res != None:
(pkgs, modname) = res.groups()
if pkgs == None:
- pkgs = ""
+ pkgs = b""
else:
- tmp = [s.strip() for s in pkgs.split(",")]
- pkgs = ",".join(tmp)
+ tmp = [s.strip() for s in pkgs.split(b",")]
+ pkgs = b",".join(tmp)
continue
res = recet.search(line)
if res != None:
cfm = res.group(1)
continue
- if modname == "":
+ if modname == b"":
logger.warning("Cite Engine File file without \DeclareLyXCiteEngine line. ")
- return ""
+ return b""
- if pkgs != "":
+ if pkgs != b"":
# this cite engine has some latex dependencies:
# append the dependencies to chkciteengines.tex,
# which is \input'ed by chkconfig.ltx
testpackages = list()
- for pkg in pkgs.split(","):
- if "->" in pkg:
+ for pkg in pkgs.split(b","):
+ if b"->" in pkg:
# this is a converter dependency: skip
continue
- if pkg.endswith(".sty"):
+ if pkg.endswith(b".sty"):
pkg = pkg[:-4]
- testpackages.append("\\TestPackage{%s}" % (pkg,))
+ testpackages.append("\\TestPackage{%s}" % (pkg.decode('ascii'),))
cm = open('chkciteengines.tex', 'a')
for line in testpackages:
cm.write(line + '\n')
cm.close()
- return '"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, cet, cfm, db, desc, pkgs)
+ return (b'"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, cet, cfm, db, desc, pkgs))
def checkXTemplates():
lyx_check_config = True
lyx_kpsewhich = True
outfile = 'lyxrc.defaults'
- lyxrc_fileformat = 24
+ lyxrc_fileformat = 25
rc_entries = ''
lyx_keep_temps = False
version_suffix = ''
# 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())
+ (inkscape_path, inkscape_gui) = os.path.split(checkInkscape())
+ # On Windows, we need to call the "inkscape.com" wrapper
+ # for command line purposes. Other OSes do not differentiate.
+ inkscape_cl = inkscape_gui
+ if os.name == 'nt':
+ inkscape_cl = inkscape_gui.replace('.exe', '.com')
+ # On MacOSX, Inkscape requires full path file arguments. This
+ # is not needed on Linux and Win and even breaks the latter.
+ inkscape_fileprefix = ""
+ if sys.platform == 'darwin':
+ inkscape_fileprefix = "$$p"
checkFormatEntries(dtl_tools)
checkConverterEntries()
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()