X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fconfigure.py;h=cc4e0ce29e351d1551b58c56c8874c8e711d3f76;hb=8cc80c6258b70a8fb78858bf339e6ac561c3f5f9;hp=1500a1c105163a16a5a6170387f72b3dab8a971c;hpb=4147409b37d360691ab1d2c6360655505749166c;p=lyx.git diff --git a/lib/configure.py b/lib/configure.py index 1500a1c105..cc4e0ce29e 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -456,6 +456,9 @@ def checkFormatEntries(dtl_tools): 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 SVG "" "%%" "%%" "vector"']) + # path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'], rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" "" \Format gif gif GIF "" "%s" "%s" "" @@ -513,9 +516,9 @@ def checkFormatEntries(dtl_tools): \Format textparagraph txt "Plain Text, Join Lines" "" "" "%%" "document"''' ]) # path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'], - rc_entry = [r'\Format xhtml html "LyX HTML" "" "%%" "" "document"']) + rc_entry = [r'\Format xhtml xhtml "LyXHTML" X "%%" "" "document"']) if xhtmlview == "": - addToRC(r'\Format xhtml html "LyX HTML" "" "" "%%" "document"') + addToRC(r'\Format xhtml xhtml "LyXHTML" X "" "" "document"') # checkEditor('a BibTeX editor', ['sensible-editor', 'jabref', 'JabRef', \ 'pybliographic', 'bibdesk', 'gbib', 'kbib', \ @@ -549,8 +552,13 @@ def checkFormatEntries(dtl_tools): checkViewerEditor('Noteedit', ['noteedit'], rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector"']) # - checkViewerEditor('an OpenDocument viewer', ['swriter', 'oowriter'], - rc_entry = [r'\Format odt odt OpenDocument "" "%%" "%%" "document,vector"']) + checkViewerEditor('an OpenDocument/OpenOffice viewer', ['swriter', 'oowriter', 'abiword'], + rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector" +\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector"''']) + # + checkViewerEditor('a Rich Text and Word viewer', ['swriter', 'oowriter', 'abiword'], + rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "" "" "document,vector" +\Format word doc "MS Word" W "" "" "document,vector"''']) # # entried that do not need checkProg addToRC(r'''\Format date "" "date command" "" "" "" "" @@ -569,11 +577,8 @@ def checkFormatEntries(dtl_tools): \Format pdftex pdftex_t PDFTEX "" "" "" "" \Format program "" Program "" "" "" "" \Format pstex pstex_t PSTEX "" "" "" "" -\Format rtf rtf "Rich Text Format" "" "" "" "document,vector" -\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector" \Format wmf wmf "Windows Metafile" "" "" "" "vector" \Format emf emf "Enhanced Metafile" "" "" "" "vector" -\Format word doc "MS Word" W "" "" "document,vector" \Format wordhtml html "HTML (MS Word)" "" "" "" "document" ''') @@ -754,6 +759,15 @@ def checkConverterEntries(): checkProg('a Dia -> EPS converter', ['dia -e $$o -t eps $$i'], rc_entry = [ r'\converter dia eps "%%" ""']) # + checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$p/$$i --export-area-drawing --without-gui --export-pdf=$$p/$$o'], + rc_entry = [ r'\converter svg pdf "%%" ""']) + # + checkProg('a SVG -> EPS converter', ['rsvg-convert -f ps -o $$o $$i', 'inkscape --file=$$p/$$i --export-area-drawing --without-gui --export-eps=$$p/$$o'], + rc_entry = [ r'\converter svg eps "%%" ""']) + # the PNG export via Inkscape must not have the full path ($$p) for the file + 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 "%%" ""']) + # path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond']) if (lilypond != ''): @@ -942,75 +956,74 @@ def checkLatexConfig(check_config, bool_docbook): if not check_config: return None # the following will generate textclass.lst.tmp, and packages.lst.tmp - else: - logger.info(msg + '\tauto') - removeFiles(['wrap_chkconfig.ltx', 'chkconfig.vars', \ - 'chkconfig.classes', 'chklayouts.tex']) - rmcopy = False - if not os.path.isfile( 'chkconfig.ltx' ): - shutil.copyfile( os.path.join(srcdir, 'chkconfig.ltx'), 'chkconfig.ltx' ) - rmcopy = True - writeToFile('wrap_chkconfig.ltx', '%s\n\\input{chkconfig.ltx}\n' % docbook_cmd) - # Construct the list of classes to test for. - # build the list of available layout files and convert it to commands - # for chkconfig.ltx - p1 = re.compile(r'\Declare(LaTeX|DocBook)Class') - 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): + logger.info(msg + '\tauto') + removeFiles(['wrap_chkconfig.ltx', 'chkconfig.vars', \ + 'chkconfig.classes', 'chklayouts.tex']) + rmcopy = False + if not os.path.isfile( 'chkconfig.ltx' ): + shutil.copyfile( os.path.join(srcdir, 'chkconfig.ltx'), 'chkconfig.ltx' ) + rmcopy = True + writeToFile('wrap_chkconfig.ltx', '%s\n\\input{chkconfig.ltx}\n' % docbook_cmd) + # Construct the list of classes to test for. + # build the list of available layout files and convert it to commands + # for chkconfig.ltx + p1 = re.compile(r'\Declare(LaTeX|DocBook)Class') + 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] + for line in open(file).readlines(): + if p1.search(line) == None: continue - classname = file.split(os.sep)[-1].split('.')[0] - for line in open(file).readlines(): - if p1.search(line) == None: - continue - if line[0] != '#': - logger.error("Wrong input layout file with line '" + line) - sys.exit(3) - testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip())) - break - testclasses.sort() - cl = open('chklayouts.tex', 'w') - for line in testclasses: - cl.write(line + '\n') - cl.close() - # - # we have chklayouts.tex, then process it - fout = os.popen(LATEX + ' wrap_chkconfig.ltx') - while True: - line = fout.readline() - if not line: - break; - if re.match('^\+', line): - logger.info(line.strip()) - # if the command succeeds, None will be returned - ret = fout.close() - # - # currently, values in chhkconfig are only used to set - # \font_encoding - values = {} - for line in open('chkconfig.vars').readlines(): - key, val = re.sub('-', '_', line).split('=') - val = val.strip() - values[key] = val.strip("'") - # chk_fontenc may not exist - try: - addToRC(r'\font_encoding "%s"' % values["chk_fontenc"]) - except: - pass - if rmcopy: # remove the copied file - removeFiles( [ 'chkconfig.ltx' ] ) - # if configure successed, move textclass.lst.tmp to textclass.lst - # and packages.lst.tmp to packages.lst - if os.path.isfile('textclass.lst.tmp') and len(open('textclass.lst.tmp').read()) > 0 \ - and os.path.isfile('packages.lst.tmp') and len(open('packages.lst.tmp').read()) > 0: - shutil.move('textclass.lst.tmp', 'textclass.lst') - shutil.move('packages.lst.tmp', 'packages.lst') - return ret + if line[0] != '#': + logger.error("Wrong input layout file with line '" + line) + sys.exit(3) + testclasses.append("\\TestDocClass{%s}{%s}" % (classname, line[1:].strip())) + break + testclasses.sort() + cl = open('chklayouts.tex', 'w') + for line in testclasses: + cl.write(line + '\n') + cl.close() + # + # we have chklayouts.tex, then process it + fout = os.popen(LATEX + ' wrap_chkconfig.ltx') + while True: + line = fout.readline() + if not line: + break; + if re.match('^\+', line): + logger.info(line.strip()) + # if the command succeeds, None will be returned + ret = fout.close() + # + # currently, values in chhkconfig are only used to set + # \font_encoding + values = {} + for line in open('chkconfig.vars').readlines(): + key, val = re.sub('-', '_', line).split('=') + val = val.strip() + values[key] = val.strip("'") + # chk_fontenc may not exist + try: + addToRC(r'\font_encoding "%s"' % values["chk_fontenc"]) + except: + pass + if rmcopy: # remove the copied file + removeFiles( [ 'chkconfig.ltx' ] ) + # if configure successed, move textclass.lst.tmp to textclass.lst + # and packages.lst.tmp to packages.lst + if os.path.isfile('textclass.lst.tmp') and len(open('textclass.lst.tmp').read()) > 0 \ + and os.path.isfile('packages.lst.tmp') and len(open('packages.lst.tmp').read()) > 0: + shutil.move('textclass.lst.tmp', 'textclass.lst') + shutil.move('packages.lst.tmp', 'packages.lst') + return ret def checkModulesConfig(): - removeFiles(['lyxmodules.lst']) + removeFiles(['lyxmodules.lst', 'chkmodules.tex']) logger.info('+checking list of modules... ') tx = open('lyxmodules.lst', 'w') @@ -1102,6 +1115,22 @@ def processModuleFile(file, bool_docbook): catgy = res.group(1) continue if modname != "": + if pkgs != "": + # 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: + # this is a converter dependency: skip + continue + if pkg.endswith(".sty"): + pkg = pkg[:-4] + testpackages.append("\\TestPackage{%s}" % (pkg,)) + cm = open('chkmodules.tex', 'a') + for line in testpackages: + cm.write(line + '\n') + cm.close() return '"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, desc, pkgs, req, excl, catgy) logger.warning("Module file without \DeclareLyXModule line. ") return "" @@ -1132,7 +1161,7 @@ def removeTempFiles(): if not lyx_keep_temps: removeFiles(['chkconfig.vars', \ 'wrap_chkconfig.ltx', 'wrap_chkconfig.log', \ - 'chklayouts.tex', 'missfont.log', + 'chklayouts.tex', 'chkmodules.tex', 'missfont.log', 'chklatex.ltx', 'chklatex.log']) @@ -1191,9 +1220,9 @@ Options: if windows_style_tex_paths != '': addToRC(r'\tex_expects_windows_paths %s' % windows_style_tex_paths) checkOtherEntries() + checkModulesConfig() # --without-latex-config can disable lyx_check_config ret = checkLatexConfig(lyx_check_config and LATEX != '', bool_docbook) - checkModulesConfig() #lyx_check_config and LATEX != '') removeTempFiles() # The return error code can be 256. Because most systems expect an error code # in the range 0-127, 256 can be interpretted as 'success'. Because we expect