diff options
Diffstat (limited to 'python/pykde/contrib/kdepyuic')
-rwxr-xr-x | python/pykde/contrib/kdepyuic | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/python/pykde/contrib/kdepyuic b/python/pykde/contrib/kdepyuic new file mode 100755 index 00000000..a0776f0e --- /dev/null +++ b/python/pykde/contrib/kdepyuic @@ -0,0 +1,150 @@ +#!/usr/bin/env python + +#Terms and Conditions + +#Copyright (c) 2002 Jim Bublitz (jbublitz@nwinternet.com) + +#Permission is hereby granted, free of charge, to any person obtaining a copy of +#this software and associated documentation files (the "Software"), to deal in +#the Software without restriction, including without limitation the rights to +#use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +#of the Software, and to permit persons to whom the Software is furnished to do +#so, subject to the following conditions: + +#The above copyright notice and this permission notice shall be included in all +#copies or substantial portions of the Software. + +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +#IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#Except as contained in this notice, the names of the copyright holders shall not +#be used in advertising or otherwise to promote the sale, use or other dealings +#in this Software without prior written authorization from the copyright holders. + +# 2003/04/19: some minor bits from Hans-Peter Jansen, <hpj@urpla.net> + +import sys, getopt, os, os.path, string + +#---------- globals ---------- + +FALSE = 0 +TRUE = not FALSE +addApp = TRUE +addImport = TRUE +pyuicPath = "pyuic" +filename = "" + + +# --------- support functions ---------- + +def getOptions (): + global filename + + opterr = 0 + shortOptions = "aip:" + longOptions = "noapp noimport pyuic=" + + try: + optlist, args = getopt.getopt (sys.argv [1:], shortOptions, longOptions) + except getopt.GetoptError: + opterr = 1 + optlist = [] + args = [] + + if opterr or (len (args) != 1): + print """\nUsage: + + kdepyuic [options] filename.ui + + Options: + -a, --noapp Don't add KApplication code + -i, --noimport Don't add kdecore, kdeui import statements + -p, --pyuic Path to pyuic program + """ + return FALSE + + filename = args[0] + return checkOptions (optlist) + +def checkOptions (optlist): + global addApp, addImport, pyuicPath + + for pair in optlist: + if (pair [0] == '--noapp') or (pair [0] == '-a'): + addApp = FALSE + + elif (pair [0] == '--noimport') or (pair [0] == '-i'): + addImport = FALSE + + elif (pair [0] == '--pyuic') or (pair [0] == '-p'): + pyuicPath = pair [1] + + + +# --------- operations ---------- + +def addimport (n): + if addApp: + n.write ('from kdecore import KCmdLineArgs, KApplication\n') + n.write ('from kdeui import *\n\n') + + +def addapp (indent, n): + n.write (indent + 'appname = ""\n') + n.write (indent + 'description = ""\n') + n.write (indent + 'version = ""\n') + n.write ('\n') + n.write (indent + 'KCmdLineArgs.init (sys.argv, appname, description, version)\n') + n.write (indent + 'a = KApplication ()\n\n') + +def doPyuic (): + + fn = os.path.splitext (os.path.basename(filename)) [0] + '.py' + + if addApp: + opts = ' -x -o ' + else: + opts = ' -o ' + + if os.system (pyuicPath + opts + fn + ' ' + filename) != 0: + print pyuicPath + opts + fn + ' ' + filename + " failed" + sys.exit (-1) + + if addApp or addImport: + m = open (fn, 'r') + n = open (fn + '.tmp', 'w') + + buff = m.readlines () + + for line in buff: + if addImport and (string.strip (line) == 'from qt import *'): + n.write (line) + addimport (n) + elif addApp and (string.strip (line) == 'a = QApplication(sys.argv)'): + indent = 0 + while line [indent] in string.whitespace: + indent = indent + 1 + addapp (line[:indent], n) + elif string.find(line, " = KDatePicker(") != -1: + o = string.find(line, ",") + n.write (line[:o] + ",QDate.currentDate()" + line[o:]) + else: + n.write (line) + + m.close () + n.close () + + os.unlink (fn) + os.rename (fn + '.tmp', fn) + + print fn + ' written' + + +# --------- main ---------- + +getOptions () +doPyuic () |