summaryrefslogtreecommitdiffstats
path: root/src/qtuicompiler.py
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 18:16:46 +0000
commita7af74e75730559f7f9661e449eb269e356d9907 (patch)
tree72026b40b3a513aa21d630fb09ae10edab7f9e18 /src/qtuicompiler.py
downloadpytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.tar.gz
pytdeextensions-a7af74e75730559f7f9661e449eb269e356d9907.zip
Added KDE3 version of pykdeextensions
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/pykdeextensions@1097589 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/qtuicompiler.py')
-rw-r--r--src/qtuicompiler.py111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/qtuicompiler.py b/src/qtuicompiler.py
new file mode 100644
index 0000000..4d590aa
--- /dev/null
+++ b/src/qtuicompiler.py
@@ -0,0 +1,111 @@
+#!/usr/bin/python
+###########################################################################
+# qtuicompiler - description #
+# ------------------------------ #
+# begin : Thu Apr 21 2005 #
+# copyright : (C) 2005 by Simon Edwards #
+# email : simon@simonzone.com #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU Library General Public License as #
+# published by the Free Software Foundation; either version 2 of the #
+# License, or (at your option) any later version. #
+# #
+###########################################################################
+
+import os
+import sys
+import pyqtconfig
+from distutils.spawn import *
+import traceback
+
+pyqt_configuration = pyqtconfig.Configuration()
+pyuic_exe = None
+
+############################################################################
+def FindPyuic():
+ global pyuic_exe
+ if pyuic_exe is not None: return pyuic_exe
+
+ pyuic_exe = find_executable('pyuic',pyqt_configuration.pyqt_bin_dir)
+ if pyuic_exe is None:
+ # Search on the $Path.
+ pyuic_exe = find_executable('pyuic')
+
+############################################################################
+def CompileUI(ui_file_name, py_file_name=None, kde=False):
+ pyuic_exe = find_executable('pyuic',pyqt_configuration.default_bin_dir)
+ if pyuic_exe is None:
+ # Search on the $Path.
+ pyuic_exe = find_executable('pyuic')
+ if pyuic_exe is None:
+ pass # FIXME raise something!
+
+ if py_file_name is None:
+ py_file_name = os.path.splitext(os.path.basename(ui_file_name))[0] + '.py'
+
+ tmp_file_name = py_file_name + '.bak'
+ cmd = [pyuic_exe]
+ if kde:
+ cmd.append('-tr')
+ cmd.append('i18n')
+ cmd.append('-o')
+ cmd.append(tmp_file_name)
+ cmd.append(ui_file_name)
+ spawn(cmd)
+
+ input = open(tmp_file_name, 'r')
+ output = open(py_file_name, 'w')
+ for line in input.readlines():
+ if kde and string.strip(line) == 'from qt import *':
+ output.write(line)
+ output.write('from kdecore import *\nfrom kdeui import *\n\n')
+ elif kde and string.find(line, " = KDatePicker(") != -1:
+ o = string.find(line, ",")
+ output.write(line[:o] + ",QDate.currentDate()" + line[o:])
+ else:
+ output.write (line)
+
+ input.close()
+ output.close()
+
+ os.remove(tmp_file_name)
+
+############################################################################
+def DynamicImport(importargs,kde=False):
+ file_name = importargs[0].replace('.',os.sep)
+ file_name_ui = file_name + '.ui'
+ if os.path.exists(file_name_ui):
+ try:
+ UpdateUI(file_name_ui,kde)
+ except:
+ traceback.print_exc()
+ raise ImportError, "Unable to compile Qt designer file %s." % args[0]
+
+############################################################################
+def UpdateUI(ui_file,kde=False):
+ py_file = ui_file[:-3] + '.py'
+ remake = False
+ if os.path.exists(py_file):
+ remake = os.stat(py_file).st_mtime <= os.stat(ui_file).st_mtime
+ else:
+ remake = True
+
+ if remake:
+ CompileUI(ui_file, py_file, kde)
+
+############################################################################
+def main():
+ # FIXME parse args and add --kde parameter.
+ if len(sys.argv)!=3:
+ print """\nUsage:
+qtuicompiler filename.ui filename.py\n\n
+"""
+ return
+
+ CompileUI(sys.argv[1],sys.argv[2])
+
+if __name__=='__main__':
+ main()