#!/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, import sys, getopt, os, os.path, string #---------- globals ---------- FALSE = 0 TRUE = not FALSE addApp = TRUE addImport = TRUE pyuicPath = "pyuic" filename = "" i18nFunc = FALSE # --------- support functions ---------- def getOptions (): global filename opterr = 0 shortOptions = 'aip:' longOptions = ['noapp', 'noimport', 'pyuic=', 'usekdei18n'] 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 tdecore, tdeui import statements -p, --pyuic Path to pyuic program --usekdei18n Adds KDEs default i18n functions to your Python KDE ui file """ return FALSE filename = args[0] return checkOptions (optlist) def checkOptions (optlist): global addApp, addImport, pyuicPath, i18nFunc 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] if (pair [0] == '--usekdei18n'): i18nFunc=TRUE else: i18nFunc=FALSE # --------- operations ---------- def addimport (n): if addApp: n.write ('from tdecore import KCmdLineArgs, KApplication\n') if i18nFunc: n.write ('from tdecore import i18n\n') n.write ('from tdeui 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' opts = "" if i18nFunc: opts = opts + ' -tr i18n ' if addApp: opts = opts + ' -x ' opts = 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 ()