commit 53ada2659602d806228432078d5cb67ceae26932
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Mon May 18 12:40:32 2020 +0200

    Fixup inkscape detection on Windows
---
 lib/configure.py |   26 +++++++++++++++++++++-----
 1 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/lib/configure.py b/lib/configure.py
index f0672d4..445e68d 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -530,18 +530,34 @@ def checkInkscape():
     try:
         aKey = winreg.OpenKey(aReg, r"inkscape.svg\DefaultIcon")
         val = winreg.QueryValueEx(aKey, "")
-        return str(val[0]).split('"')[1]
+        valentry = str(val[0])
+        if valentry.find('"') > 0:
+            return valentry.split('"')[1]
+        elif valentry.find(',') > 0:
+            return valentry.split(',')[0]
+        else:
+            return 'inkscape'
     except EnvironmentError:
         try:
-            aKey = winreg.OpenKey(aReg, 
r"Applications\inkscape.exe\shell\open\command")
+            aKey = winreg.OpenKey(aReg, r"inkscape.SVG\shell\open\command")
             val = winreg.QueryValueEx(aKey, "")
             return str(val[0]).split('"')[1]
         except EnvironmentError:
-            return 'inkscape'
+            try:
+                aKey = winreg.OpenKey(aReg, 
r"Applications\inkscape.exe\shell\open\command")
+                val = winreg.QueryValueEx(aKey, "")
+                return str(val[0]).split('"')[1]
+            except EnvironmentError:
+                return 'inkscape'
+
 
 def checkInkscapeStable():
     ''' Check whether we use Inkscape >= 1.0 '''
-    version_string = cmdOutput("inkscape --version")
+    inkscape_bin = inkscape_cl
+    if os.name == 'nt':
+        # Windows needs the full path, quoted if it contains spaces
+        inkscape_bin = quoteIfSpace(os.path.join(inkscape_path, inkscape_cl))
+    version_string = cmdOutput(inkscape_bin + " --version")
     if version_string.find(' 0.') > 0:
         return False
     else:
@@ -1918,9 +1934,9 @@ Format %i
     # On Windows, we need to call the "inkscape.com" wrapper
     # for command line purposes. Other OSes do not differentiate.
     inkscape_cl = inkscape_gui
-    inkscape_stable = checkInkscapeStable()
     if os.name == 'nt':
         inkscape_cl = inkscape_gui.replace('.exe', '.com')
+    inkscape_stable = checkInkscapeStable()
     checkFormatEntries(dtl_tools)
     checkConverterEntries()
     (chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to