You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
4.7 KiB
163 lines
4.7 KiB
#!/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=', 'usetdei18n'] |
|
|
|
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: |
|
|
|
tdepyuic [options] filename.ui |
|
|
|
Options: |
|
-a, --noapp Don't add TDEApplication code |
|
-i, --noimport Don't add tdecore, tdeui import statements |
|
-p, --pyuic Path to pyuic program |
|
--usetdei18n Adds TDEs default i18n functions to your Python TDE 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] == '--usetdei18n'): |
|
i18nFunc=TRUE |
|
else: |
|
i18nFunc=FALSE |
|
|
|
|
|
# --------- operations ---------- |
|
|
|
def addimport (n): |
|
if addApp: |
|
n.write ('from tdecore import TDECmdLineArgs, TDEApplication\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 + 'TDECmdLineArgs.init (sys.argv, appname, description, version)\n') |
|
n.write (indent + 'a = TDEApplication ()\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 python_tqt.qt import *'): |
|
n.write (line) |
|
addimport (n) |
|
elif addApp and (string.strip (line) == 'a = TQApplication(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] + ",TQDate.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 ()
|
|
|