|
|
|
#!/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 = ""
|
|
|
|
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 ()
|