summaryrefslogtreecommitdiffstats
path: root/python/pykde/postproc
diff options
context:
space:
mode:
Diffstat (limited to 'python/pykde/postproc')
-rwxr-xr-xpython/pykde/postproc520
1 files changed, 0 insertions, 520 deletions
diff --git a/python/pykde/postproc b/python/pykde/postproc
deleted file mode 100755
index db795ca6..00000000
--- a/python/pykde/postproc
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/usr/bin/python
-
-import sys, getopt, os, os.path, fnmatch, string, StringIO
-
-#---------- globals ----------
-
-FALSE = 0
-TRUE = not FALSE
-
-ops = ['tr', 'qtNoTr', 'shpix', 'notify', 'varhier', 'appQuit', "kjsfix", "fixQVariant", "fixSignal"]
-operation = ''
-opPath = ''
-pattern = ''
-
-
-# --------- support functions ----------
-
-def getOptions ():
- global pattern
- arglist = sys.argv [1:]
- shortOptions = "p:o:"
- longOptions = "path= op="
-
- try:
- optlist, args = getopt.getopt (arglist, shortOptions, longOptions)
- except getopt.GetoptError:
- optlist = []
- args = []
-
- if (optlist == []) or (len (args) != 1):
- print '\nUsage: postproc -p<path> -o<operation> <filespec>\n'
- return FALSE
-
- pattern = args [0]
- return checkOptions (optlist)
-
-def checkOptions (optlist):
- havePath = FALSE
- haveOp = FALSE
-
- for pair in optlist:
- if (pair [0] == '--path') or (pair [0] == '-p'):
- if not checkPath (pair [1]):
- print '\nPath ' + pair [1] + ' does not exist\n'
- else:
- havePath = TRUE
-
- elif (pair [0] == '--op') or (pair [0] == '-o'):
- if not checkOp (pair [1]):
- print '\nOperation ' + pair [1] + ' does not exist\n'
- else:
- haveOp = TRUE
-
- return havePath and haveOp
-
-def checkPath (path):
- global opPath
- if not os.path.exists (path):
- return FALSE
-
- opPath = path
- if not (opPath [-1] == '/'):
- opPath = opPath + '/'
-
- return TRUE
-
-
-def checkOp (op):
- global operation
- if not op in ops:
- return FALSE
-
- operation = op
- return TRUE
-
-def getFilelist ():
- filelist = []
- tmpfilelist = os.listdir (opPath)
- for fn in tmpfilelist:
- if fnmatch.fnmatchcase (fn, pattern):
- filelist.append (fn)
-
- return filelist
-
-# --------- operations ----------
-
-# removes sipDo_<classname>_tr and table reference ('sipName_qt_tr')
-# because KDE2 is compiled with QT_NO_TRANSLATION defined (which also
-# makes QObject::tr methods invisible to any KDE2 QObject descendants)
-
-def trFix (filelist):
- for fn in filelist:
- m = open (opPath + fn, 'r')
- tmpname = os.path.splitext (fn) [0] + '.tmp'
- tmp = StringIO.StringIO ()
-
- buff = m.readlines ()
- m.close ()
-
- i = 0
- nLines = len (buff)
-
- # skip leading comments
- while (i < nLines) and (buff [i][0:1] == '//'):
- tmp.write (buff [i])
- i = i + 1
-
- # find classname
- while (i < nLines) and (not string.find (buff [i], 'PyObject *sipClass_') == 0):
- tmp.write (buff [i])
- i = i + 1
-
- if i >= nLines: # no classname - don't bother
- tmp.close ()
- continue
-
- classname = buff [i][19:-2]
-
- trStr = 'static PyObject *sipDo_' + classname + '_tr(PyObject *sipThisObj,PyObject *sipArgs)\n'
-
- while (i < nLines) and (buff [i] != trStr):
- tmp.write (buff [i])
- i = i + 1
-
- if i >= nLines: # no sipDo_*_tr - done
- tmp.close ()
- continue
-
- # skip over this method without writing it out
- while (i < nLines) and (buff [i][0] != '}'):
- i = i + 1
-
- i = i + 1 # skip the '}' too
-
-
- while (i < nLines):
- # skip sipName_qt_tr table entry/write out everything else
- if string.find (buff [i], '{sipName_qt_tr') < 0:
- tmp.write (buff [i])
- i = i + 1
-
- tmpfile = open (opPath + tmpname, 'w')
- tmpfile.write (tmp.getvalue ())
- tmpfile.close ()
- tmp.close ()
- os.unlink (opPath + fn)
- os.rename (opPath + tmpname, opPath + fn)
-
- return TRUE
-
-def qtNoTr (filelist):
- for fn in filelist:
- m = open (opPath + fn, 'r')
- tmpname = os.path.splitext (fn) [0] + '.tmp'
- tmp = StringIO.StringIO ()
-
- buff = m.readlines ()
- m.close ()
-
- i = 0
- nLines = len (buff)
-
- while (i < nLines) and (string.find (buff [i], 'Q_OBJECT') < 0):
- tmp.write (buff [i])
- i = i + 1
-
- tmp.write ("#define QT_NO_TRANSLATION\n")
-
- while (i < nLines):
- tmp.write (buff [i])
- i = i + 1
-
- tmpfile = open (opPath + tmpname, 'w')
- tmpfile.write (tmp.getvalue ())
- tmpfile.close ()
- tmp.close ()
- os.unlink (opPath + fn)
- os.rename (opPath + tmpname, opPath + fn)
-
- return TRUE
-
-# changes QPaintDevice to KPixmap for two method calls
-# gcc reports QPaintDevice as "ambiguous"
-
-def shpix ():
- # if concatenated, the sip*.cpp file doesn't exist
- fn = ['sipkdeuiKSharedPixmap.cpp']
- if not os.path.exists (os.path.join (opPath, fn [0])):
- files = os.listdir (opPath)
- fn = []
- for file in files:
- if string.find (file, "kdeuipart") >= 0 and file [-4:] == ".cpp":
- fn.append (file)
-
- if not fn:
- return FALSE
-
- for file in fn:
- m = open (os.path.join (opPath, file), 'r')
- tmpname = os.path.splitext (file) [0] + '.tmp'
-
- buff = m.readlines ()
- m.close ()
-
- changed = 0
- state = None
- for ln in range (0, len (buff)):
- line = buff [ln]
- if string.find (line, "sipKSharedPixmap::resolution") >= 0:
- state = "res"
- elif string.find (line, "sipKSharedPixmap::setResolution") >= 0:
- state = "setRes"
- else:
- state = None
-
- if state and changed < 2:
- changed = changed + 1
- while "}" not in line:
- ln = ln + 1
- line = buff [ln]
- if state == "res":
- buff [ln] = string.replace (line, "QPaintDevice::resolution", "KPixmap::resolution")
- elif state == "setRes":
- buff [ln] = string.replace (line, "QPaintDevice::setResolution", "KPixmap::setResolution")
-
- tmpfile = open (os.path.join (opPath, tmpname), 'w')
- for line in buff:
- tmpfile.write (line)
- tmpfile.close ()
- os.unlink (os.path.join (opPath, file))
- os.rename (os.path.join (opPath, tmpname), os.path.join (opPath, file))
-
- return TRUE
-
-def notify ():
- fn = os.path.join (opPath, pattern)
- m = open (fn, "r")
- tmpname = fn + '.tmp'
-
- buff = m.readlines ()
- m.close ()
- tmpfile = open (tmpname, 'w')
-
- tmpBuff = []
- flag = 0
- for line in buff:
- if string.find (line, "class KNotify:") >= 0:
- flag = 1
-
- elif flag == 1 and string.find (line, "class KNotifyWidgetBase(QWidget):") >= 0:
- flag = 2
-
- elif flag == 2 and string.find (line, "class KNotifyWidget(KNotifyWidgetBase):") >= 0:
- for ln in tmpBuff:
- tmpfile.write (ln)
- flag = 0
-
- if flag != 1:
- tmpfile.write (line)
- else:
- tmpBuff.append (line)
-
- tmpfile.close ()
- os.unlink (fn)
- os.rename (tmpname, fn)
-
- return TRUE
-
-def varhier (filelist):
- for fn in filelist:
- m = open (opPath + fn, 'r')
- tmpname = os.path.splitext (fn) [0] + '.tmp'
- tmp = StringIO.StringIO ()
-
- buff = m.readlines ()
- m.close ()
-
- i = 0
- nLines = len (buff)
-
- while (i < nLines) and (string.find (buff [i], 'PyMethodDef *sipClassVarHierTab_') < 0):
- tmp.write (buff [i])
- i = i + 1
-
- while (i < nLines) and (string.find (buff [i], "};") < 0):
- tmp.write (buff [i])
- i = i + 1
-
- if i < nLines:
- flag = TRUE
- tmp.write (buff [i] + "\n")
- while i < nLines:
- if not flag:
- tmp.write (buff [i])
-
- if flag and not ((string.find (buff [i], "};") >= 0) or (string.find (buff [i], "NULL") >= 0)):
- flag = FALSE
-
- i = i + 1
-
- tmpfile = open (opPath + tmpname, 'w')
- tmpfile.write (tmp.getvalue ())
- tmpfile.close ()
- tmp.close ()
- os.unlink (opPath + fn)
- os.rename (opPath + tmpname, opPath + fn)
-
- return TRUE
-
-
-def appQuit (filelist):
- for fn in filelist:
- m = open (opPath + fn, 'r')
- tmpname = os.path.splitext (fn) [0] + '.tmp'
- tmp = StringIO.StringIO ()
-
- buff = m.readlines ()
- m.close ()
-
- i = 0
- nLines = len (buff)
-
- while (i < nLines) and (string.find (buff [i], 'import libsip') < 0):
- tmp.write (buff [i])
- i = i + 1
-
- tmp.write (buff [i] + "\nfrom qt import QCloseEvent")
- i = i + 1
-
- while (i < nLines) and (string.find (buff [i], "class KApplication") < 0):
- tmp.write (buff [i])
- i = i + 1
-
- count = 0
- while count < 2:
- while (i < nLines) and (string.find (buff [i], "return") < 0):
- tmp.write (buff [i])
- i = i + 1
-
- tmp.write (buff [i])
- i = i + 1
- count = count + 1
-
- tmp.write (\
-"""\tdef quit (self):
-\t\tk = KApplication.kApplication ()
-\t\te = QCloseEvent ()
-
-\t\tfor w in k.topLevelWidgets ():
-\t\t\tif w.inherits ("KMainWindow"):
-\t\t\t\tk.sendEvent (w, e)
-\t\t\t\tif not e.isAccepted ():
-\t\t\t\t\treturn
-
-\t\tQApplication.quit (self)
-""")
-
- while (i < nLines):
- tmp.write (buff [i])
- i = i + 1
-
- tmpfile = open (opPath + tmpname, 'w')
- tmpfile.write (tmp.getvalue ())
- tmpfile.close ()
- tmp.close ()
- os.unlink (opPath + fn)
- os.rename (opPath + tmpname, opPath + fn)
-
- return True
-
-def fixQVariant ():
- infile = os.path.join (opPath, "sipkdecorecmodule.cpp")
- if not os.path.exists (infile):
- infile = os.path.join (opPath, "sipkdecorepart0.cpp")
- if not os.path.exists (infile):
- return TRUE
-
- m = open (infile, "r")
- n = open (infile + ".new", "w")
- looking = True
- for line in m:
- if looking and line.find ("sipAPIkdecore.h") > 0:
- n.write (line)
- n.write ('\n#include "sipqtQVariant.h"\n\n')
- looking = False
- continue
-
- n.write (line)
-
- m.close ()
- n.close ()
- os.unlink (infile)
- os.rename (infile + ".new", infile)
-
- return TRUE
-
-def fixSignal (filelist):
- for file in filelist:
- if file [-1] == "h":
- times = 1
- else:
- times = 2
-
- infile = os.path.join (opPath, file)
- m = open (infile, "r")
- n = open (infile + ".new", "w")
-
- count = 0
- for line in m:
- if count < times:
- if string.find (line, "proxySlot(unsigned long)") > 0\
- or string.find (line, "proxySlot(unsigned long a0)") > 0:
- line = string.replace (line, "unsigned long", "WId")
- count = count + 1
-
- n.write (line)
-
- m.close ()
- n.close ()
- os.unlink (infile)
- os.rename (infile + ".new", infile)
-
- return TRUE
-
-
-def kjsfix (filelist):
- for fn in filelist:
- if not os.path.exists (opPath + fn):
- continue
- m = open (opPath + fn, 'r')
- tmpname = os.path.splitext (fn) [0] + '.tmp'
-
- buff = m.readlines ()
- m.close ()
-
- i = 0
- nLines = len (buff)
-
- purevirt = ["toPrimitive", "toBoolean", "toNumber", "toString", "toObject"]
-
- while (i < nLines):
- if string.find (buff [i], "KJS::ExecState") >= 0:
- for pv in purevirt:
- if string.find (buff [i], pv) >= 0:
- i = i + 2
- buff [i] = "\t\treturn KJS::ObjectImp::%s(a0);" % pv
- i = i + 1
- while string.find (buff [i], "}") < 0:
- buff [i] = ""
- i = i + 1
- break
- i = i + 1
-
- tmpfile = open (opPath + tmpname, 'w')
- i = 0
- while (i < nLines):
- tmpfile.write (buff [i])
- i = i + 1
- tmpfile.close ()
- os.unlink (opPath + fn)
- os.rename (opPath + tmpname, opPath + fn)
-
- return TRUE
-
-# --------- main ----------
-
-if not getOptions ():
- sys.exit (-1)
-
-if operation != "shpix":
- filelist = getFilelist ()
- if filelist == []:
- sys.exit (0)
-
-if operation == "tr":
- if not trFix (filelist):
- print 'operation error -- tr'
- sys.exit (-1)
-
-elif operation == 'qtNoTr':
- if not qtNoTr (filelist):
- print 'operation error -- qtNoTr'
- sys.exit (-1)
-
-elif operation == 'shpix':
- if not shpix ():
- print 'operation error -- shpix'
- sys.exit (-1)
-
-elif operation == "notify":
- if not notify ():
- print "operation error -- notify"
- sys.exit (-1)
-
-elif operation == "varhier":
- if not varhier (filelist):
- print "operation error -- varhier"
- sys.exit (-1)
-
-elif operation == "appQuit":
- if not appQuit (filelist):
- print "operation error -- appQuit"
- sys.exit (-1)
-
-elif operation == "kjsfix":
- if not kjsfix (filelist):
- print "operation error -- kjsfix"
- sys.exit (-1)
-
-elif operation == "fixQVariant":
- if not fixQVariant ():
- print "operation error -- fixQVariant"
- sys.exit (-1)
-
-elif operation == "fixSignal":
- if not fixSignal (filelist):
- print "operation error -- fixSignal"
- sys.exit (-1)
-
-sys.exit (0)