from tempfile import mkstemp
fd, tmpfname = mkstemp(suffix='.ltx')
if os.name == 'nt':
- from locale import getdefaultlocale
- language, encoding = getdefaultlocale()
- if encoding == None:
- encoding = 'latin1'
+ encoding = sys.getfilesystemencoding()
if sys.version_info[0] < 3:
inpname = shortPath(unicode(tmpfname, encoding)).replace('\\', '/')
else:
- inpname = shortPath(str(tmpfname, encoding)).replace('\\', '/')
+ inpname = shortPath(tmpfname).replace('\\', '/')
else:
inpname = cmdOutput('cygpath -m ' + tmpfname)
logname = os.path.basename(re.sub("(?i).ltx", ".log", inpname))
inpname = inpname.replace('~', '\\string~')
- os.write(fd, r'\relax')
+ os.write(fd, b'\\relax')
os.close(fd)
latex_out = cmdOutput(r'latex "\nonstopmode\input{%s}\makeatletter\@@end"'
% inpname)
\Format eps3 eps "EPS (cropped)" "" "%%" "" "document" ""
\Format ps ps Postscript t "%%" "" "document,vector,menu=export" "application/postscript"'''])
# for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html
+ # maybe use "bestApplication()" from https://github.com/jleclanche/python-mime
# the MIME type is set for pdf6, because that one needs to be autodetectable by libmime
checkViewer('a PDF previewer',
['pdfview', 'kpdf', 'okular', 'qpdfview --unique',
rc_entry = [ r'''\converter svg png "%%" "",
\converter svgz png "%%" ""'''],
path = ['', inkscape_path])
-
+ #
+ checkProg('Gnuplot', ['gnuplot'],
+ rc_entry = [ r'''\Format gnuplot "gp, gnuplot" "Gnuplot" "" "" "" "vector" "text/plain"
+\converter gnuplot pdf6 "python -tt $$s/scripts/gnuplot2pdf.py $$i $$o" "needauth"''' ])
#
# gnumeric/xls/ods to tex
checkProg('a spreadsheet -> latex converter', ['ssconvert'],
# 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'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
- category = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
- empty = re.compile(r'^\s*$')
+ declare = re.compile(b'^\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*(\[([^,]*)(,.*)*\])*\\s*{(.*)}\\s*$')
+ category = re.compile(b'^\\s*#\\s*\\\\DeclareCategory{(.*)}\\s*$')
+ empty = re.compile(b'^\\s*$')
testclasses = list()
for file in (glob.glob( os.path.join('layouts', '*.layout') )
+ glob.glob( os.path.join(srcdir, 'layouts', '*.layout' ) ) ):
if not os.path.isfile(file):
continue
classname = file.split(os.sep)[-1].split('.')[0]
- decline = ""
- catline = ""
- for line in open(file).readlines():
- if not empty.match(line) and line[0] != '#':
- if decline == "":
+ decline = b""
+ catline = b""
+ for line in open(file, 'rb').readlines():
+ if not empty.match(line) and line[0] != b'#'[0]:
+ if decline == b"":
logger.warning("Failed to find valid \Declare line "
"for layout file `%s'.\n\t=> Skipping this file!" % file)
nodeclaration = True
# A class, but no category declaration. Just break.
break
if declare.search(line) != None:
- decline = "\\TestDocClass{%s}{%s}" % (classname, line[1:].strip())
+ decline = b"\\TestDocClass{%s}{%s}" \
+ % (classname.encode('ascii'), line[1:].strip())
testclasses.append(decline)
elif category.search(line) != None:
- catline = ("\\DeclareCategory{%s}{%s}"
- % (classname, category.search(line).groups()[0]))
+ catline = (b"\\DeclareCategory{%s}{%s}"
+ % (classname.encode('ascii'),
+ category.search(line).groups()[0]))
testclasses.append(catline)
- if catline == "" or decline == "":
+ if catline == b"" or decline == b"":
continue
break
if nodeclaration:
continue
testclasses.sort()
- cl = open('chklayouts.tex', 'w')
+ cl = open('chklayouts.tex', 'wb')
for line in testclasses:
- cl.write(line + '\n')
+ cl.write(line + b'\n')
cl.close()
#
# we have chklayouts.tex, then process it
return '"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, cet, cfm, db, desc, pkgs)
+def checkXTemplates():
+ removeFiles(['xtemplates.lst'])
+
+ logger.info('+checking list of external templates... ')
+ tx = open('xtemplates.lst', 'w')
+ tx.write('''## This file lists external templates.
+## It has been automatically generated by configure
+## Use "Options/Reconfigure" if you need to update it after a
+## configuration change.
+''')
+
+ # build the list of available templates
+ seen = []
+ # note that this searches the local directory first, then the
+ # system directory. that way, we pick up the user's version first.
+ for file in glob.glob( os.path.join('xtemplates', '*.xtemplate') ) + \
+ glob.glob( os.path.join(srcdir, 'xtemplates', '*.xtemplate' ) ) :
+ # valid file?
+ logger.info(file)
+ if not os.path.isfile(file):
+ continue
+
+ filename = file.split(os.sep)[-1]
+ if seen.count(filename):
+ continue
+
+ seen.append(filename)
+ if filename != "":
+ tx.write(filename + "\n")
+ tx.close()
+ logger.info('\tdone')
+
+
def checkTeXAllowSpaces():
''' Let's check whether spaces are allowed in TeX file names '''
tex_allows_spaces = 'false'
rescanTeXFiles()
checkModulesConfig()
checkCiteEnginesConfig()
+ checkXTemplates()
# --without-latex-config can disable lyx_check_config
ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook)
removeTempFiles()