diff options
Diffstat (limited to 'packaging/wix/helpers.py')
-rwxr-xr-x | packaging/wix/helpers.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/packaging/wix/helpers.py b/packaging/wix/helpers.py new file mode 100755 index 0000000..becff5e --- /dev/null +++ b/packaging/wix/helpers.py @@ -0,0 +1,65 @@ +#!/usr/bin/python
+
+from __future__ import print_function
+from __future__ import unicode_literals # make all literals unicode strings by default (even in Python 2)
+
+import os
+import re
+import sys
+from io import open # needed for support of encoding parameter in Python 2
+
+
+# check where to look for the Inkscape files to bundle
+# - btool builds used [root]/inkscape
+# - cmake builds use [root]/build/inkscape unless "DESTDIR" is specified
+def get_inkscape_dist_dir():
+ # first check the environment variable
+ sourcedir = os.getenv('INKSCAPE_DIST_PATH')
+ if sourcedir is None:
+ sourcedir = ''
+ if not os.path.isdir(sourcedir):
+ sourcedir = '..\\..\\inkscape'
+ if not os.path.isdir(sourcedir):
+ sourcedir = '..\\..\\build\\inkscape'
+ if not os.path.isdir(sourcedir):
+ print("could not find inkscape distribution files, please set environment variable 'INKSCAPE_DIST_PATH'")
+ sys.exit(1)
+ return sourcedir
+
+
+# get the full list of available Inkscape UI translations (by looking at available .po files in the /po directory)
+def get_inkscape_locales():
+ files = os.listdir('..\\..\\po')
+ po_files = [file for file in files if file.endswith('.po')]
+ locales = [po_file[0:-3] for po_file in po_files if po_file.endswith('.po')]
+
+ return locales
+
+
+# get the list of available Inkscape UI translations (by parsing inkscape-preferences.cpp)
+# (note that this is also used in /packaging/win32/languages/_language_lists.py, don't break it!)
+def get_inkscape_locales_and_names():
+ re_languages = re.compile(r'Glib::ustring languages\[\] = \{(.+?)\};', re.DOTALL)
+ re_langValues = re.compile(r'Glib::ustring langValues\[\] = \{(.+?)\};', re.DOTALL)
+ re_quotes = re.compile(r'"(.*?)"')
+
+ # get the raw array contents from inkscape-preferences.cpp
+ filepath = os.path.join(os.path.dirname(__file__), '../../src/ui/dialog/inkscape-preferences.cpp')
+ with open(filepath, 'r', encoding='utf-8') as f:
+ languages = re.search(re_languages, f.read())
+ f.seek(0)
+ langValues = re.search(re_langValues, f.read())
+
+ # split array elements and extract strings
+ if languages and langValues:
+ languages = languages.group(1).split(',')
+ langValues = langValues.group(1).split(',')
+ languages = [re.search(re_quotes, language).group(1) for language in languages]
+ langValues = [re.search(re_quotes, langValue).group(1) for langValue in langValues]
+
+ # return the results as a dict (remove first element which is "System default")
+ if languages and langValues:
+ return dict(zip(langValues[1:], languages[1:]))
+ else:
+ print("Could not get the list of Inkscape translations from inkscape-preferences.cpp")
+ sys.exit(1)
|