diff options
Diffstat (limited to 'src/tqtuicompiler.py')
-rw-r--r-- | src/tqtuicompiler.py | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/tqtuicompiler.py b/src/tqtuicompiler.py new file mode 100644 index 0000000..0e84838 --- /dev/null +++ b/src/tqtuicompiler.py @@ -0,0 +1,111 @@ +#!/usr/bin/python +########################################################################### +# tqtuicompiler - description # +# ------------------------------ # +# begin : Thu Apr 21 2005 # +# copyright : (C) 2005 by Simon Edwards # +# email : [email protected] # +# # +########################################################################### +# # +# 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 +from PyTQt import pytqtconfig +from distutils.spawn import * +import traceback + +pytqt_configuration = pytqtconfig.Configuration() +pytquic_exe = None + +############################################################################ +def FindPytquic(): + global pytquic_exe + if pytquic_exe is not None: return pytquic_exe + + pytquic_exe = find_executable('pytquic',pytqt_configuration.pytqt_bin_dir) + if pytquic_exe is None: + # Search on the $Path. + pytquic_exe = find_executable('pytquic') + +############################################################################ +def CompileUI(ui_file_name, py_file_name=None, kde=False): + pytquic_exe = find_executable('pytquic',pytqt_configuration.default_bin_dir) + if pytquic_exe is None: + # Search on the $Path. + pytquic_exe = find_executable('pytquic') + if pytquic_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 = [pytquic_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 PyTQt.tqt import *': + output.write(line) + output.write('from tdecore import *\nfrom tdeui import *\n\n') + elif kde and string.find(line, " = KDatePicker(") != -1: + o = string.find(line, ",") + output.write(line[:o] + ",TQDate.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 TQt 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: +tqtuicompiler filename.ui filename.py\n\n +""") + return + + CompileUI(sys.argv[1],sys.argv[2]) + +if __name__=='__main__': + main() |