From 52f8f8436dc2af136156ef95dbb8463481a78df8 Mon Sep 17 00:00:00 2001 From: aneejit1 Date: Tue, 19 Apr 2022 13:21:52 +0000 Subject: [PATCH] Updates to support Python version 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Amendments to the sip source and configuration/build scripts to allow for support under Python version 3. The examples have been updated using "2to3" along with some manual changes to sort out intentation and casting to integer from float. Signed-off-by: aneejit1 Signed-off-by: Slávek Banko (cherry picked from commit 6be046642290c28c17949022fb66ae02ac21d544) --- build.py | 39 ++- configure.py | 49 +-- examples2/aclock.py | 2 +- examples2/addressbook.py | 2 +- examples2/application.py | 2 +- examples2/buttongroups.py | 2 +- examples2/dclock.py | 2 +- examples2/desktop.py | 16 +- examples2/dirview.py | 2 +- examples2/dropsite.py | 6 +- examples2/gears.py | 2 +- examples2/menu.py | 2 +- examples2/secret.py | 2 +- examples2/semaphore.py | 8 +- examples2/splitter.py | 14 +- examples2/table.py | 22 +- examples2/tut10.py | 2 +- examples2/tut11.py | 4 +- examples2/tut12.py | 4 +- examples2/tut13.py | 4 +- examples2/tut14.py | 4 +- examples2/tut8.py | 2 +- examples2/tut9.py | 2 +- examples2/widgets.py | 32 +- examples3/SQL/dbconnect.py | 10 +- examples3/SQL/sqlsubclass5.py | 12 +- examples3/SQL/sqltable4.py | 6 +- examples3/aclock.py | 2 +- examples3/addressbook.py | 2 +- examples3/application.py | 2 +- examples3/biff.py | 2 +- examples3/buttongroups.py | 2 +- examples3/checklists.py | 32 +- examples3/cursor.py | 44 +-- examples3/dclock.py | 2 +- examples3/desktop.py | 4 +- examples3/fontdisplayer.py | 14 +- examples3/fonts.py | 6 +- examples3/gears.py | 2 +- examples3/i18n/i18n.py | 2 +- examples3/mdi.py | 208 ++++++------ examples3/progress.py | 2 +- examples3/qdir.py | 21 +- examples3/rangecontrols.py | 2 +- examples3/richtext.py | 4 +- examples3/semaphore.py | 4 +- examples3/splitter.py | 4 +- examples3/tablestatistics.py | 10 +- examples3/tooltip.py | 2 +- examples3/tut10.py | 2 +- examples3/tut11.py | 4 +- examples3/tut12.py | 4 +- examples3/tut13.py | 4 +- examples3/tut14.py | 4 +- examples3/tut8.py | 2 +- examples3/tut9.py | 2 +- examples3/webbrowser/mainwindow.py | 18 +- examples3/widgets.py | 14 +- module-init.py | 2 +- sip/qt/qapplication.sip | 143 +------- sip/qt/qarray.sip | 4 +- sip/qt/qbuttongroup.sip | 1 + sip/qt/qbytearray.sip | 115 +++++-- sip/qt/qcstring.sip | 8 +- sip/qt/qdragobject.sip | 1 + sip/qt/qfile.sip | 8 +- sip/qt/qfontmetrics.sip | 2 +- sip/qt/qimage.sip | 9 +- sip/qt/qiodevice.sip | 32 +- sip/qt/qkeysequence.sip | 4 +- sip/qt/qlabel.sip | 1 + sip/qt/qlcdnumber.sip | 1 + sip/qt/qlistview.sip | 279 --------------- sip/qt/qmainwindow.sip | 1 + sip/qt/qmemarray.sip | 4 +- sip/qt/qobject.sip | 169 +++++++--- sip/qt/qpainter.sip | 10 +- sip/qt/qpair.sip | 8 +- sip/qt/qpointarray.sip | 2 +- sip/qt/qpushbutton.sip | 1 + sip/qt/qstring.sip | 525 ++++++++++++----------------- sip/qt/qstringlist.sip | 2 +- sip/qt/qstrlist.sip | 10 +- sip/qt/qvaluelist.sip | 4 +- sip/qtnetwork/qftp.sip | 2 +- sip/qtnetwork/qhttp.sip | 2 +- sip/qtnetwork/qsocket.sip | 8 +- sip/qtnetwork/qsocketdevice.sip | 4 +- sip/qtpe/qpeapplication.sip | 2 +- 89 files changed, 852 insertions(+), 1193 deletions(-) diff --git a/build.py b/build.py index 492e313..ce06693 100644 --- a/build.py +++ b/build.py @@ -37,8 +37,8 @@ import string try: from sip4_tqt import sipconfig except: - print "Unable to import the sipconfig module. Please make sure you have" - print "SIP v3.9 or later installed." + print("Unable to import the sipconfig module. Please make sure you have") + print("SIP v3.9 or later installed.") sys.exit(1) config = sipconfig.SIPConfig("PyTQt 3.18.1") @@ -67,20 +67,20 @@ def usage(rcode = 2): rcode is the return code passed back to the calling process. """ - print "Usage:" - print " %s [-h] [-a version] [-b dir] [-c] [-d dir] [-g] [-j #] [-n dir] [-o dir] [-r] [-v dir]" % sipconfig.script() - print "where:" - print " -h display this help message" - print " -a tag explicitly enable the qtpe module" - print " -b dir where pyuic and pylupdate will be installed [default %s]" % config.default_bin_dir - print " -c concatenate each module's C++ source files" - print " -d dir where the PyTQt modules will be installed [default %s]" % config.default_mod_dir - print " -g always release the GIL (SIP v3.x behaviour)" - print " -j # split the concatenated C++ source files into # pieces [default 1]" - print " -n dir the directory containing the TQScintilla header files [default %s]" % config.qt_inc_dir - print " -o dir the directory containing the TQScintilla library [default %s]" % config.qt_lib_dir - print " -r generate code with tracing enabled [default disabled]" - print " -v dir where the PyTQt .sip files will be installed [default %s]" % config.default_sip_dir + print("Usage:") + print(" %s [-h] [-a version] [-b dir] [-c] [-d dir] [-g] [-j #] [-n dir] [-o dir] [-r] [-v dir]" % sipconfig.script()) + print("where:") + print(" -h display this help message") + print(" -a tag explicitly enable the qtpe module") + print(" -b dir where pyuic and pylupdate will be installed [default %s]" % config.default_bin_dir) + print(" -c concatenate each module's C++ source files") + print(" -d dir where the PyTQt modules will be installed [default %s]" % config.default_mod_dir) + print(" -g always release the GIL (SIP v3.x behaviour)") + print(" -j # split the concatenated C++ source files into # pieces [default 1]") + print(" -n dir the directory containing the TQScintilla header files [default %s]" % config.qt_inc_dir) + print(" -o dir the directory containing the TQScintilla library [default %s]" % config.qt_lib_dir) + print(" -r generate code with tracing enabled [default disabled]") + print(" -v dir where the PyTQt .sip files will be installed [default %s]" % config.default_sip_dir) sys.exit(rcode) @@ -439,7 +439,7 @@ def versionToTag(vers, tags, desc): """ tag = None - vl = tags.keys() + vl = list(tags.keys()) vl.sort() # For a snapshot use the latest tag. @@ -723,8 +723,7 @@ if __name__ == "__main__": except SystemExit: raise except: - print \ -"""An internal error occured. Please report all the output from the program, + print("""An internal error occured. Please report all the output from the program, including the following traceback, to support@riverbankcomputing.co.uk. -""" +""") raise diff --git a/configure.py b/configure.py index 7077f3d..8689027 100644 --- a/configure.py +++ b/configure.py @@ -85,6 +85,7 @@ opt_split = 1 opt_tracing = 0 opt_verbose = 0 opt_keepfeatures = 0 +opt_accept_license = 0 opt_vendorcheck = 0 opt_vendincdir = sipcfg.py_inc_dir @@ -126,6 +127,7 @@ def usage(rcode = 2): sys.stdout.write(" -v dir where the PyTQt .sip files will be installed [default %s]\n" % opt_pyqtsipdir) sys.stdout.write(" -w don't suppress compiler output during configuration\n") sys.stdout.write(" -y lib explicitly specify the type of TQt library, either qt, qt-mt, qte, qte-mt, qtmt, tqt, tqt-mt, tqte, tqte-mt or tqtmt\n") + sys.stdout.write(" -z accept the license terms without prompting\n") sys.exit(rcode) @@ -391,10 +393,10 @@ def inform_user(): sipconfig.inform("TQt v%s %sis being used." % (sipconfig.version_to_string(qt_version), edstr)) sipconfig.inform("SIP %s is being used." % sipcfg.sip_version_str) - sipconfig.inform("These PyTQt modules will be built: %s." % string.join(pyqt_modules)) + sipconfig.inform("These PyTQt modules will be built: %s." % ' '.join(pyqt_modules)) if disabled_classes: - sipconfig.inform("Support for these TQt classes has been disabled: %s." % string.join(disabled_classes)) + sipconfig.inform("Support for these TQt classes has been disabled: %s." % ' '.join(disabled_classes)) sipconfig.inform("The PyTQt modules will be installed in %s." % opt_pyqtmoddir) sipconfig.inform("The PyTQt .sip files will be installed in %s." % opt_pyqtsipdir) @@ -579,7 +581,7 @@ def check_qscintilla(): # If we find a snapshot then set a negative version number as a # special case. - if string.find(sciversstr, "snapshot") >= 0: + if sciversstr.find("snapshot") >= 0: qsci_version = -1 else: sipconfig.inform("The TQScintilla library could not be found in %s and so the qtext module will not be built. If TQScintilla is installed then use the -o argument to explicitly specify the correct directory." % opt_qscilibdir) @@ -801,7 +803,7 @@ def get_feature_flags(): line = ff.readline() while line: - flags.extend(string.split(line)) + flags.extend(line.split()) line = ff.readline() if sipcfg.sip_version >= 0x040702: @@ -929,9 +931,9 @@ def generate_code(mname, extra_cflags=None, extra_cxxflags=None, extra_define=No argv.append(os.path.join(src_dir, "sip")) # SIP assumes POSIX style path separators. - argv.append(string.join([src_dir, "sip", mname, mname + "mod.sip"], "/")) + argv.append('/'.join([src_dir, "sip", mname, mname + "mod.sip"])) - os.system(string.join(argv)) + os.system(' '.join(argv)) # Check the result. if not os.access(buildfile, os.F_OK): @@ -1005,7 +1007,7 @@ def check_license(): lname = "GNU General Public License" lfile = None - sipconfig.inform("This is the %s version of PyTQt %s (licensed under the %s) for Python %s on %s." % (ltype, pyqt_version_str, lname, string.split(sys.version)[0], sys.platform)) + sipconfig.inform("This is the %s version of PyTQt %s (licensed under the %s) for Python %s on %s." % (ltype, pyqt_version_str, lname, sys.version[0].split(), sys.platform)) # Common checks. if ltype == "GPL" and sys.platform == "win32": @@ -1029,12 +1031,17 @@ Type 'no' to decline the terms of the license. """) while 1: + sys.stdout.write("Do you accept the terms of the license? ") + sys.stdout.flush() + try: - resp = raw_input("Do you accept the terms of the license? ") + resp = sys.stdin.readline() + except KeyboardInterrupt: + raise SystemExit except: resp = "" - resp = string.lower(string.strip(resp)) + resp = resp.strip().lower() if resp == "yes": break @@ -1060,7 +1067,7 @@ def get_build_macros(overrides): overrides is a list of macros overrides from the user. """ # Get the name of the qmake configuration file to take the macros from. - if "QMAKESPEC" in os.environ.keys(): + if "QMAKESPEC" in list(os.environ.keys()): fname = os.path.join(qt_dir, "mkspecs", os.environ["QMAKESPEC"], "qmake.conf") else: fname = os.path.join(qt_dir, "mkspecs", "default", "qmake.conf") @@ -1069,7 +1076,7 @@ def get_build_macros(overrides): sipconfig.error("Unable to find the default configuration file %s. You can use the QMAKESPEC environment variable to specify the correct platform instead of \"default\"." % fname) # Add the TQt specific macros to the default. - names = sipcfg.build_macros().keys() + names = list(sipcfg.build_macros().keys()) names.append("INCDIR_QT") names.append("LIBDIR_QT") names.append("MOC") @@ -1163,7 +1170,7 @@ def check_qt_installation(macros): l = f.readline() while l: - wl = string.split(l) + wl = l.split() if len(wl) == 3 and wl[0] == "#define" and wl[1] == "QT_PRODUCT_LICENSE": qt_edition = wl[2][4:-1] break @@ -1193,7 +1200,7 @@ def check_qt_installation(macros): cfg = f.readline() f.close() - val = string.find(cfg, "=") + val = cfg.find("=") if val >= 0: qt_winconfig = string.strip(cfg[val + 1:]) @@ -1292,7 +1299,7 @@ def resolve_qt3_library(generator): sipconfig.error("No TQt libraries could be found in %s." % qt_libdir) if len(names) > 1: - sipconfig.error("These TQt libraries were found: %s. Use the -y argument to explicitly specify which you want to use." % string.join(names)) + sipconfig.error("These TQt libraries were found: %s. Use the -y argument to explicitly specify which you want to use." % ' '.join(names)) def is_qt_library(generator, lib): @@ -1320,10 +1327,6 @@ def main(argv): argv is the list of command line arguments. """ - # Check Python isn't too new. - if sipcfg.py_version >= 0x030000: - sipconfig.error("PyTQt v3.x does not support Python v3.x") - # Check SIP is new enough. if sipcfg.sip_version_str[:8] != "snapshot": if sipcfg.sip_version < sip_min_version: @@ -1331,7 +1334,7 @@ def main(argv): # Parse the command line. try: - optlist, args = getopt.getopt(argv[1:], "ha:b:cd:e:fg:ij:kl:m:n:o:q:rsuv:wy:") + optlist, args = getopt.getopt(argv[1:], "ha:b:cd:e:fg:ij:kl:m:n:o:q:rsuv:wy:z") except getopt.GetoptError: usage() @@ -1342,6 +1345,7 @@ def main(argv): global opt_qsciincdir, opt_qscilibdir, qsci_define global opt_vendorcheck, opt_vendincdir, opt_vendlibdir global opt_libpython + global opt_accept_license opt_libpython = None @@ -1396,6 +1400,8 @@ def main(argv): opt_qtlib = arg else: usage() + elif opt == "-z": + opt_accept_license = 1 # Check that we know the name of the TQt root directory. if not qt_dir: @@ -1418,7 +1424,10 @@ def main(argv): check_qt_installation(macros) # Check the licenses are compatible. - check_license() + if opt_accept_license == 1: + print("License accepted by command line option.") + else: + check_license() # Check for TQScintilla. check_qscintilla() diff --git a/examples2/aclock.py b/examples2/aclock.py index 3c04e20..66283ef 100755 --- a/examples2/aclock.py +++ b/examples2/aclock.py @@ -8,7 +8,7 @@ def TQMIN(x, y): return x class AnalogClock(TQWidget): def __init__(self, *args): - apply(TQWidget.__init__,(self,) + args) + TQWidget.__init__(*(self,) + args) self.time = TQTime.currentTime() internalTimer = TQTimer(self) self.connect(internalTimer, SIGNAL("timeout()"), self.timeout) diff --git a/examples2/addressbook.py b/examples2/addressbook.py index 96746c0..14b5679 100755 --- a/examples2/addressbook.py +++ b/examples2/addressbook.py @@ -78,7 +78,7 @@ fileprint = [ class ABCentralWidget( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self, ) + args ) + TQWidget.__init__(*(self, ) + args) self.mainGrid = TQGridLayout( self, 2, 1, 5, 5 ) self.setupTabWidget() diff --git a/examples2/application.py b/examples2/application.py index 291231e..38a6cf5 100755 --- a/examples2/application.py +++ b/examples2/application.py @@ -179,7 +179,7 @@ class ApplicationWindow(TQMainWindow): return for l in f.readlines(): - self.e.append(string.rstrip(l)) + self.e.append(l.rstrip()) f.close() diff --git a/examples2/buttongroups.py b/examples2/buttongroups.py index 88836c6..d3e0aaf 100755 --- a/examples2/buttongroups.py +++ b/examples2/buttongroups.py @@ -21,7 +21,7 @@ FALSE = 0 class ButtonsGroups( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) # Create Widgets which allow easy layouting self.vbox = TQVBoxLayout( self ) diff --git a/examples2/dclock.py b/examples2/dclock.py index eb4e990..302d454 100755 --- a/examples2/dclock.py +++ b/examples2/dclock.py @@ -47,7 +47,7 @@ class DigitalClock(TQLCDNumber): s[2] = ' ' if s[0] == '0': s[0] = ' ' - s = string.join(s,'') + s = ''.join(s) self.display(s) a = TQApplication(sys.argv) diff --git a/examples2/desktop.py b/examples2/desktop.py index 049f39d..7f48159 100755 --- a/examples2/desktop.py +++ b/examples2/desktop.py @@ -26,7 +26,7 @@ maxcurves = 8 def poly(): d = TQApplication.desktop() - d.setBackgroundColor(white) + d.setPaletteBackgroundColor(white) xvel = [ 0 ] * 8 yvel = [ 0 ] * 8 head = 0 @@ -65,16 +65,16 @@ def poly(): y = y + yvel[i] if x >= maxx: x = maxx - (x - maxx + 1) - xvel[i] = -velocity(i) + xvel[i] = -velocity(i) if x <= minx: x = minx + (minx - x + 1) - xvel[i] = velocity(i) + xvel[i] = velocity(i) if y >= maxy: y = maxy - (y - maxy + 1) - yvel[i] = -velocity(i) + yvel[i] = -velocity(i) if y <= miny: y = miny + (miny - y + 1) - yvel[i] = velocity(i) + yvel[i] = velocity(i) a[head].setPoint(i, x, y) paint.end() @@ -98,7 +98,7 @@ def rotate(): m = TQWMatrix() m.rotate(i) rpm = pm.xForm(m) - d.setBackgroundPixmap(rpm) + d.setPaletteBackgroundPixmap(rpm) d.update() def generateStone(pm, c1, c2, c3): @@ -142,7 +142,7 @@ class DesktopWidget(TQWidget): if not self.pm: self.pm = TQPixmap(64, 64) generateStone(self.pm, c1, c2, c3) - self.setBackgroundPixmap(self.pm) + self.setPaletteBackgroundPixmap(self.pm) self.update() br = self.fontMetrics().boundingRect(self.text) offscreen = TQPixmap(br.width(), br.height()) @@ -186,7 +186,7 @@ def desktopText(s='Troll Tech'): drawShadeText(p, -r.x()+border, -r.y()+border, s, c2, c3) p.end() - tqApp.desktop().setBackgroundPixmap(pm) + tqApp.desktop().setPaletteBackgroundPixmap(pm) a = TQApplication(sys.argv) if len(sys.argv) > 1: diff --git a/examples2/dirview.py b/examples2/dirview.py index 11e7eed..ef8bcd7 100755 --- a/examples2/dirview.py +++ b/examples2/dirview.py @@ -5,7 +5,7 @@ from python_tqt.qt import * class Directory(TQListViewItem): def __init__(self, parent, name=None): - apply(TQListViewItem.__init__,(self,parent)) + TQListViewItem.__init__(*(self,parent)) if isinstance(parent, TQListView): self.p = None self.f = '/' diff --git a/examples2/dropsite.py b/examples2/dropsite.py index 94b7e57..461b44e 100644 --- a/examples2/dropsite.py +++ b/examples2/dropsite.py @@ -49,15 +49,15 @@ class DropSite(TQLabel): t += str(e.format( i )) i += 1 self.emit(PYSIGNAL('message(TQString &)'), (TQString(t),)) - self.setBackgroundColor(TQt.white) + self.setPaletteBackgroundColor(TQt.white) def dragLeaveEvent( self, TQDragLeaveEvent ): # Give the user some feedback... self.emit(PYSIGNAL('message(TQString &)'), (TQString(''),)) - self.setBackgroundColor(TQt.lightGray) + self.setPaletteBackgroundColor(TQt.lightGray) def dropEvent( self, e ): - self.setBackgroundColor(TQt.lightGray) + self.setPaletteBackgroundColor(TQt.lightGray) # Try to decode to the data you understand... str = TQString() if ( TQTextDrag.decode( e, str ) ) : diff --git a/examples2/gears.py b/examples2/gears.py index 60f313c..54734cc 100755 --- a/examples2/gears.py +++ b/examples2/gears.py @@ -227,7 +227,7 @@ if __name__=='__main__': app=TQApplication(sys.argv) if not TQGLFormat.hasOpenGL(): - raise 'No TQt OpenGL support.' + raise Exception('No TQt OpenGL support.') widget=GearWidget() app.setMainWidget(widget) diff --git a/examples2/menu.py b/examples2/menu.py index b5c14d8..e3ade2d 100755 --- a/examples2/menu.py +++ b/examples2/menu.py @@ -133,7 +133,7 @@ p4_xpm = [ class MenuExample( TQWidget ): def __init__( self, parent=None, name=None ): - apply( TQWidget.__init__,(self, parent, name) ) + TQWidget.__init__(*(self, parent, name)) self.p1 = TQIconSet( TQPixmap ( p1_xpm ) ) self.p2 = TQIconSet( TQPixmap ( p2_xpm ) ) self.p3 = TQIconSet( TQPixmap ( p3_xpm ) ) diff --git a/examples2/secret.py b/examples2/secret.py index 8c8de85..d68bd1b 100644 --- a/examples2/secret.py +++ b/examples2/secret.py @@ -52,7 +52,7 @@ picture_xpm = [ class SecretSource(TQLabel): def __init__(self, secret, parent=None, name=None): TQLabel.__init__(self, "Secret", parent, name) - self.setBackgroundColor( TQt.blue.light() ) + self.setPaletteBackgroundColor( TQt.blue.light() ) self.setFrameStyle( TQLabel.Box | TQLabel.Sunken ) self.setMinimumHeight( self.sizeHint().height()*2 ) self.setAlignment( TQLabel.AlignCenter ) diff --git a/examples2/semaphore.py b/examples2/semaphore.py index 6a16347..f1a2b7a 100755 --- a/examples2/semaphore.py +++ b/examples2/semaphore.py @@ -9,7 +9,7 @@ import sys try: from python_tqt.qt import TQThread except: - print "Thread support not enabled" + print("Thread support not enabled") sys.exit(1) from python_tqt.qt import * @@ -176,9 +176,9 @@ class SemaphoreExample(TQWidget): self.mlineedit.append(s) if s.latin1() == "Green!": - self.label.setBackgroundColor(TQt.green) + self.label.setPaletteBackgroundColor(TQt.green) else: - self.label.setBackgroundColor(TQt.yellow) + self.label.setPaletteBackgroundColor(TQt.yellow) self.label.setText(s) @@ -192,7 +192,7 @@ class SemaphoreExample(TQWidget): del s else: - print "Unknown custom event type:", event.type() + print("Unknown custom event type:", event.type()) app = TQApplication(sys.argv) diff --git a/examples2/splitter.py b/examples2/splitter.py index 36a7556..3d7450c 100755 --- a/examples2/splitter.py +++ b/examples2/splitter.py @@ -16,13 +16,13 @@ class Test(TQWidget): y1 = 0 y2 = self.height() - 1 - x = (x1+x2)/2 + x = int((x1+x2)/2) p.drawLine(x, y1, x+d, y1+d) p.drawLine(x, y1, x-d, y1+d) p.drawLine(x, y2, x+d, y2-d) p.drawLine(x, y2, x-d, y2-d) - y = (y1+y2)/2 + y = int((y1+y2)/2) p.drawLine(x1, y, x1+d, y+d) p.drawLine(x1, y, x1+d, y-d) p.drawLine(x2, y, x2-d, y+d) @@ -36,25 +36,25 @@ if __name__=="__main__": s2 = TQSplitter(TQt.Horizontal, s1, "top") t1 = Test(s2) - t1.setBackgroundColor(TQt.blue.light(180)) + t1.setPaletteBackgroundColor(TQt.blue.light(180)) t1.setMinimumSize(50,0) t2 = Test(s2) - t2.setBackgroundColor(TQt.green.light(180)) + t2.setPaletteBackgroundColor(TQt.green.light(180)) s2.setResizeMode(t2, TQSplitter.KeepSize) s2.moveToFirst(t2) s3 = TQSplitter(TQt.Horizontal, s1, "bottom") t3 = Test(s3) - t3.setBackgroundColor(TQt.red) + t3.setPaletteBackgroundColor(TQt.red) t4 = Test(s3) - t4.setBackgroundColor(TQt.white) + t4.setPaletteBackgroundColor(TQt.white) t5 = Test(s3) t5.setMaximumHeight(250) t5.setMinimumSize(80,50) - t5.setBackgroundColor(TQt.yellow) + t5.setPaletteBackgroundColor(TQt.yellow) s1.setOpaqueResize(1) s2.setOpaqueResize(1) diff --git a/examples2/table.py b/examples2/table.py index 36e2cf9..f9db886 100755 --- a/examples2/table.py +++ b/examples2/table.py @@ -14,8 +14,8 @@ class Table(TQTableView): self.setCellWidth(100) self.setCellHeight(30) self.setTableFlags(Tbl_vScrollBar | - Tbl_hScrollBar | - Tbl_clipCellPainting) + Tbl_hScrollBar | + Tbl_clipCellPainting) self.resize(400,200) self.contents = [''] * (numRows * numCols) @@ -64,27 +64,27 @@ class Table(TQTableView): if key == Key_Left: if self.curCol > 0: self.curCol = self.curCol - 1 - edge = self.leftCell() + edge = self.leftCell() if self.curCol < edge: - self.setLeftCell(edge-1) + self.setLeftCell(edge-1) elif key == Key_Right: if self.curCol < self.numCols()-1: self.curCol = self.curCol + 1 - edge = self.lastColVisible() + edge = self.lastColVisible() if self.curCol >= edge: - self.setLeftCell(self.leftCell()+1) + self.setLeftCell(self.leftCell()+1) elif key == Key_Up: if self.curRow > 0: self.curRow = self.curRow - 1 - edge = self.topCell() + edge = self.topCell() if self.curRow < edge: - self.setTopCell(edge-1) + self.setTopCell(edge-1) elif key == Key_Down: if self.curRow < self.numRows()-1: self.curRow = self.curRow + 1 - edge = self.lastRowVisible() - if self.curRow >= edge: - self.setTopCell(self.topCell()+1) + edge = self.lastRowVisible() + if self.curRow >= edge: + self.setTopCell(self.topCell()+1) else: ke.ignore() return diff --git a/examples2/tut10.py b/examples2/tut10.py index b6213a5..a19ba9c 100755 --- a/examples2/tut10.py +++ b/examples2/tut10.py @@ -27,7 +27,7 @@ class LCDRange(TQVBox): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) diff --git a/examples2/tut11.py b/examples2/tut11.py index 0f60d72..7979d3d 100755 --- a/examples2/tut11.py +++ b/examples2/tut11.py @@ -28,7 +28,7 @@ class LCDRange(TQVBox): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) @@ -149,7 +149,7 @@ class CannonField(TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = TQRect(0,0,6,6) - r.moveCenter(TQPoint(x,self.height() - 1 - y)) + r.moveCenter(TQPoint(int(x),int(self.height() - 1 - y)))) return r def sizePolicy(self): diff --git a/examples2/tut12.py b/examples2/tut12.py index 95f90b1..8b2a700 100755 --- a/examples2/tut12.py +++ b/examples2/tut12.py @@ -36,7 +36,7 @@ class LCDRange(TQVBox): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) def text(self): @@ -183,7 +183,7 @@ class CannonField(TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = TQRect(0,0,6,6) - r.moveCenter(TQPoint(x,self.height() - 1 - y)) + r.moveCenter(TQPoint(int(x),int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples2/tut13.py b/examples2/tut13.py index 1584443..f33c683 100755 --- a/examples2/tut13.py +++ b/examples2/tut13.py @@ -41,7 +41,7 @@ class LCDRange(TQWidget): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) def text(self): @@ -215,7 +215,7 @@ class CannonField(TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = TQRect(0,0,6,6) - r.moveCenter(TQPoint(x,self.height() - 1 - y)) + r.moveCenter(TQPoint(int(x),int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples2/tut14.py b/examples2/tut14.py index 1ee3a5c..998f26f 100755 --- a/examples2/tut14.py +++ b/examples2/tut14.py @@ -41,7 +41,7 @@ class LCDRange(TQWidget): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) def text(self): @@ -245,7 +245,7 @@ class CannonField(TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = TQRect(0,0,6,6) - r.moveCenter(TQPoint(x,self.height() - 1 - y)) + r.moveCenter(TQPoint(int(x),int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples2/tut8.py b/examples2/tut8.py index d252e55..3266a89 100755 --- a/examples2/tut8.py +++ b/examples2/tut8.py @@ -27,7 +27,7 @@ class LCDRange(TQVBox): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) diff --git a/examples2/tut9.py b/examples2/tut9.py index 5bad8d8..c413e00 100755 --- a/examples2/tut9.py +++ b/examples2/tut9.py @@ -27,7 +27,7 @@ class LCDRange(TQVBox): def setRange(self,minVal,maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, 'LCDRange.setRange(): invalid range' + raise ValueError('LCDRange.setRange(): invalid range') self.slider.setRange(minVal,maxVal) diff --git a/examples2/widgets.py b/examples2/widgets.py index fc36e7a..cf235a8 100755 --- a/examples2/widgets.py +++ b/examples2/widgets.py @@ -18,7 +18,7 @@ def TQMIN( x, y ): class AnalogClock( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) self.time = TQTime.currentTime() # get current time internalTimer = TQTimer( self ) # create internal timer self.connect( internalTimer, SIGNAL("timeout()"), self.timeout ) @@ -74,7 +74,7 @@ class AnalogClock( TQWidget ): class DigitalClock( TQLCDNumber ): def __init__( self, *args ): - apply( TQLCDNumber.__init__,(self,) + args ) + TQLCDNumber.__init__(*(self,) + args) self.showingColon = 0 self.setFrameStyle(TQFrame.Panel | TQFrame.Raised) self.setLineWidth( 2 ) @@ -112,7 +112,7 @@ class DigitalClock( TQLCDNumber ): s[2] = ' ' if s[0] == '0': s[0] = ' ' - s = string.join(s,'') + s = ''.join(s) self.display( s ) def TQMIN( x, y ): @@ -130,7 +130,7 @@ MOVIEFILENAME = "trolltech.gif" class WidgetView ( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) # Set the window caption/title self.setCaption( "TQt Widgets Demo Application" ) @@ -186,14 +186,14 @@ class WidgetView ( TQWidget ): TQToolTip.add( self.dclock, "custom widget: digital clock" ) # Create a push button. - self.pb = TQPushButton( self, "button1" ) # create button 1 + self.pb = TQPushButton( self, "button1" ) # create button 1 self.pb.setText( "Push button 1" ) self.pb.setFixedHeight( self.pb.sizeHint().height() ) self.grid.addWidget( self.pb, 0, 0, TQt.AlignVCenter ) self.connect( self.pb, SIGNAL("clicked()"), self.button1Clicked ) TQToolTip.add( self.pb, "push button 1" ) self.pm = TQPixmap() - self.pix = self.pm.load( "qt.png" ) # load pixmap for button 2 + self.pix = self.pm.load( "qt.png" ) # load pixmap for button 2 if not self.pix: TQMessageBox.information( None, "TQt Widgets Example", "Could not load the file \"qt.png\", which\n" @@ -224,7 +224,7 @@ class WidgetView ( TQWidget ): self.vbox.addSpacing( self.bg.fontMetrics().height() ) - self.cb = range(3) + self.cb = list(range(3)) self.cb[0] = TQCheckBox( self.bg ) self.cb[0].setText( "Read" ) self.vbox.addWidget( self.cb[0] ) @@ -466,20 +466,20 @@ class WidgetView ( TQWidget ): self.msg.setText( txt ) if index == 0: TQApplication.setWinStyleHighlightColor( TQt.darkBlue ) - elif index == 1: + elif index == 1: TQApplication.setWinStyleHighlightColor( TQt.darkRed ) - elif index == 2: + elif index == 2: TQApplication.setWinStyleHighlightColor( TQt.darkGreen ) - elif index == 3: + elif index == 3: TQApplication.setWinStyleHighlightColor( TQt.blue ) - elif index == 4: + elif index == 4: TQApplication.setWinStyleHighlightColor( TQt.red ) def lineEditTextChanged( self, newText ): - self.msg.setText("Line edit text: " + unicode(newText)) + self.msg.setText("Line edit text: " + str(newText)) def spinBoxValueChanged( self, valueText ): - self.msg.setText("Spin box value: " + unicode(valueText)) + self.msg.setText("Spin box value: " + str(valueText)) # All application events are passed throught this event filter. # We're using it to display some information about a clicked @@ -496,10 +496,10 @@ class WidgetView ( TQWidget ): # txt = txt + TQObject.name() # else: # txt = txt + "" - # identify_now = FALSE # don't do it in message box + # identify_now = FALSE # don't do it in message box # TQMessageBox.message( "Identify Widget", txt, 0, TQObject ) - # identify_now = TRUE; # allow it again - # return FALSE # don't eat event + # identify_now = TRUE; # allow it again + # return FALSE # don't eat event ################################################################################################ diff --git a/examples3/SQL/dbconnect.py b/examples3/SQL/dbconnect.py index db922de..d1c1baf 100755 --- a/examples3/SQL/dbconnect.py +++ b/examples3/SQL/dbconnect.py @@ -14,7 +14,7 @@ def createConnection(): driver = DB_DRIVER # all qt examples use TQSqlDatabase::addDatabase, but # this never returns NULL in my experience - drivers = map(str, TQSqlDatabase.drivers()) + drivers = list(map(str, TQSqlDatabase.drivers())) if driver in drivers: dlg = dbConnect(driver) #TODO: make connection parameters accessible @@ -40,8 +40,8 @@ class dbConnect(frmConnect): self.txtName.setText(self.username) self.txtPasswd.setText(self.password) - map(self.cmbServer.insertItem, self.hostnames) - map(self.cmbDatabase.insertItem, self.databases) + list(map(self.cmbServer.insertItem, self.hostnames)) + list(map(self.cmbDatabase.insertItem, self.databases)) self.connect(self.buttonHelp, SIGNAL("clicked()"), self.buttonHelp_clicked) @@ -77,6 +77,6 @@ class dbConnect(frmConnect): if __name__ == "__main__": app = TQApplication(sys.argv) if createConnection(): - print "ok" + print("ok") else: - print "cancel" + print("cancel") diff --git a/examples3/SQL/sqlsubclass5.py b/examples3/SQL/sqlsubclass5.py index 56f747e..0fdc78c 100755 --- a/examples3/SQL/sqlsubclass5.py +++ b/examples3/SQL/sqlsubclass5.py @@ -31,7 +31,7 @@ class CustomTable(TQDataTable): query = TQSqlQuery("SELECT name FROM prices WHERE id=%s" % field.value().toString()) value = "" - if query.next(): + if next(query): value = query.value(0).toString() p.drawText(2, 2, cr.width()-4, cr.height()-4, self.fieldAlignment(field), value) @@ -42,7 +42,7 @@ class CustomTable(TQDataTable): v = field.value().toDouble() if v < 0: p.setPen(TQColor("red")) - value = TQString(u"%.2f \u20ac" % v) + value = TQString("%.2f \u20ac" % v) p.drawText(2, 2, cr.width()-6, cr.height()-4, TQt.AlignRight|TQt.AlignVCenter, value) elif fn == "paiddate": @@ -74,17 +74,17 @@ class InvoiceItemCursor(TQSqlCursor): if fn == "productname": query = TQSqlQuery("SELECT name FROM prices WHERE id=%d;" % (self.field("pricesid").value().toInt())) - if query.next(): + if next(query): return query.value(0) elif fn == "price": query = TQSqlQuery("SELECT price FROM prices WHERE id=%d;" % (self.field("pricesid").value().toInt())) - if query.next(): + if next(query): return query.value(0) elif fn == "cost": query = TQSqlQuery("SELECT price FROM prices WHERE id=%d;" % (self.field("pricesid").value().toInt())) - if query.next(): + if next(query): return TQVariant(query.value(0).toDouble() * self.value("quantity").toDouble()) return TQVariant(TQString.null) @@ -102,7 +102,7 @@ class ProductPicker(TQComboBox): TQComboBox.__init__(self, parent, name) cur = TQSqlCursor("prices") cur.select(cur.index("id")) - while cur.next(): + while next(cur): self.insertItem(cur.value("name").toString(), cur.value("id").toInt()) diff --git a/examples3/SQL/sqltable4.py b/examples3/SQL/sqltable4.py index 599f093..a8484c5 100755 --- a/examples3/SQL/sqltable4.py +++ b/examples3/SQL/sqltable4.py @@ -31,7 +31,7 @@ class CustomTable(TQDataTable): v = field.value().toDouble() if v < 0: p.setPen(TQColor("red")) - value = TQString(u"%.2f \u20ac" % v) + value = TQString("%.2f \u20ac" % v) #print unicode(value).encode("iso-8859-15") p.drawText(2, 2, cr.width()-6, cr.height()-4, TQt.AlignRight|TQt.AlignVCenter, value) @@ -39,7 +39,7 @@ class CustomTable(TQDataTable): query = TQSqlQuery("SELECT name FROM status WHERE id=%s" % field.value().toString()) value = "" - if query.next(): + if next(query): value = query.value(0).toString() p.drawText(2, 2, cr.width()-4, cr.height()-4, self.fieldAlignment(field), value) @@ -52,7 +52,7 @@ class StatusPicker(TQComboBox): TQComboBox.__init__(self, parent, name) cur = TQSqlCursor("status") cur.select(cur.index("id")) - while cur.next(): + while next(cur): self.insertItem(cur.value("name").toString(), cur.value("id").toInt()) diff --git a/examples3/aclock.py b/examples3/aclock.py index 3c04e20..66283ef 100755 --- a/examples3/aclock.py +++ b/examples3/aclock.py @@ -8,7 +8,7 @@ def TQMIN(x, y): return x class AnalogClock(TQWidget): def __init__(self, *args): - apply(TQWidget.__init__,(self,) + args) + TQWidget.__init__(*(self,) + args) self.time = TQTime.currentTime() internalTimer = TQTimer(self) self.connect(internalTimer, SIGNAL("timeout()"), self.timeout) diff --git a/examples3/addressbook.py b/examples3/addressbook.py index 96746c0..14b5679 100755 --- a/examples3/addressbook.py +++ b/examples3/addressbook.py @@ -78,7 +78,7 @@ fileprint = [ class ABCentralWidget( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self, ) + args ) + TQWidget.__init__(*(self, ) + args) self.mainGrid = TQGridLayout( self, 2, 1, 5, 5 ) self.setupTabWidget() diff --git a/examples3/application.py b/examples3/application.py index 2c9731c..056e895 100755 --- a/examples3/application.py +++ b/examples3/application.py @@ -179,7 +179,7 @@ class ApplicationWindow(TQMainWindow): return for l in f.readlines(): - self.e.append(string.rstrip(l)) + self.e.append(l.rstrip()) f.close() diff --git a/examples3/biff.py b/examples3/biff.py index 9397a0e..abee0cf 100755 --- a/examples3/biff.py +++ b/examples3/biff.py @@ -5,7 +5,7 @@ from python_tqt.qt import * if TQT_VERSION < 0x030100: - print "This example requires TQt v3.1.0 or later." + print("This example requires TQt v3.1.0 or later.") sys.exit(1) diff --git a/examples3/buttongroups.py b/examples3/buttongroups.py index 7f9e079..3d6883e 100755 --- a/examples3/buttongroups.py +++ b/examples3/buttongroups.py @@ -21,7 +21,7 @@ FALSE = 0 class ButtonsGroups( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) # Create Widgets which allow easy layouting self.vbox = TQVBoxLayout( self, 11, 6 ) diff --git a/examples3/checklists.py b/examples3/checklists.py index 44bc09f..61734ba 100755 --- a/examples3/checklists.py +++ b/examples3/checklists.py @@ -9,27 +9,27 @@ TRUE = 1 FALSE = 0 class CheckLists(TQWidget): - def __init__(self, *args): - apply( TQWidget.__init__, (self, ) + args ) + def __init__(self, *args): + TQWidget.__init__(* (self, ) + args ) - lay = TQHBoxLayout(self) - lay.setMargin(5) + lay = TQHBoxLayout(self) + lay.setMargin(5) - vbox1 = TQVBoxLayout(lay) - vbox1.setMargin(5) + vbox1 = TQVBoxLayout(lay) + vbox1.setMargin(5) - # First child: a Label - vbox1.addWidget(TQLabel("Check some items!", self)) + # First child: a Label + vbox1.addWidget(TQLabel("Check some items!", self)) - # Second child: the ListView - self.lv1 = TQListView(self) - vbox1.addWidget(self.lv1) - self.lv1.addColumn("Items") - self.lv1.setRootIsDecorated(TRUE) + # Second child: the ListView + self.lv1 = TQListView(self) + vbox1.addWidget(self.lv1) + self.lv1.addColumn("Items") + self.lv1.setRootIsDecorated(TRUE) - # create a list with 4 ListViewItems which will be parent items of other ListViewItems + # create a list with 4 ListViewItems which will be parent items of other ListViewItems - parentList = [] + parentList = [] parentList.append( TQListViewItem( self.lv1, "Parent Item 1" ) ) parentList.append( TQListViewItem( self.lv1, "Parent Item 2" ) ) @@ -91,7 +91,7 @@ class CheckLists(TQWidget): self.label = TQLabel( "No Item yet...", self ) tmp3.addWidget( self.label ) - def copy1to2(self): + def copy1to2(self): self.lv2.clear() # Insert first a controller Item into the second ListView. Always if Radio-ListViewItems diff --git a/examples3/cursor.py b/examples3/cursor.py index ab87c32..da9db7b 100755 --- a/examples3/cursor.py +++ b/examples3/cursor.py @@ -18,33 +18,33 @@ cb_width = 32 cb_height = 32 # cursor bitmap -cb_bits = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0f\x00" \ - "\x00\x06\x30\x00\x80\x01\xc0\x00\x40\x00\x00\x01" \ - "\x20\x00\x00\x02\x10\x00\x00\x04\x08\x3e\x3e\x08" \ - "\x08\x03\xe0\x08\xc4\x00\x00\x11\x04\x1e\x78\x10" \ - "\x02\x0c\x30\x20\x02\x40\x00\x20\x02\x40\x00\x20" \ - "\x02\x40\x00\x20\x02\x20\x04\x20\x02\x20\x04\x20" \ - "\x02\x10\x08\x20\x02\x08\x08\x20\x02\xf0\x07\x20" \ - "\x04\x00\x00\x10\x04\x00\x00\x10\x08\x00\xc0\x08" \ - "\x08\x3c\x30\x08\x10\xe6\x19\x04\x20\x00\x0f\x02" \ - "\x40\x00\x00\x01\x80\x01\xc0\x00\x00\x06\x30\x00" \ - "\x00\xf8\x0f\x00\x00\x00\x00\x00" +cb_bits = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0f\x00" \ + b"\x00\x06\x30\x00\x80\x01\xc0\x00\x40\x00\x00\x01" \ + b"\x20\x00\x00\x02\x10\x00\x00\x04\x08\x3e\x3e\x08" \ + b"\x08\x03\xe0\x08\xc4\x00\x00\x11\x04\x1e\x78\x10" \ + b"\x02\x0c\x30\x20\x02\x40\x00\x20\x02\x40\x00\x20" \ + b"\x02\x40\x00\x20\x02\x20\x04\x20\x02\x20\x04\x20" \ + b"\x02\x10\x08\x20\x02\x08\x08\x20\x02\xf0\x07\x20" \ + b"\x04\x00\x00\x10\x04\x00\x00\x10\x08\x00\xc0\x08" \ + b"\x08\x3c\x30\x08\x10\xe6\x19\x04\x20\x00\x0f\x02" \ + b"\x40\x00\x00\x01\x80\x01\xc0\x00\x00\x06\x30\x00" \ + b"\x00\xf8\x0f\x00\x00\x00\x00\x00" cm_width = 32 cm_height = 32 # cursor bitmap mask -cm_bits = "\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\xfe\x3f\x00" \ - "\x80\x07\xf0\x00\xc0\x01\xc0\x01\x60\x00\x00\x03" \ - "\x30\x00\x00\x06\x18\x00\x00\x0c\x0c\x3e\x3e\x18" \ - "\x0e\x03\xe0\x18\xc6\x00\x00\x31\x07\x1e\x78\x30" \ - "\x03\x0c\x30\x60\x03\x40\x00\x60\x03\x40\x00\x60" \ - "\x03\x40\x00\x60\x03\x20\x04\x60\x03\x20\x04\x60" \ - "\x03\x10\x08\x60\x03\x08\x08\x60\x03\xf0\x07\x60" \ - "\x06\x00\x00\x30\x06\x00\x00\x30\x0c\x00\xc0\x18" \ - "\x0c\x3c\x30\x18\x18\xe6\x19\x0c\x30\x00\x0f\x06" \ - "\x60\x00\x00\x03\xc0\x01\xc0\x01\x80\x07\xf0\x00" \ - "\x00\xfe\x3f\x00\x00\xf8\x0f\x00" +cm_bits = b"\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\xfe\x3f\x00" \ + b"\x80\x07\xf0\x00\xc0\x01\xc0\x01\x60\x00\x00\x03" \ + b"\x30\x00\x00\x06\x18\x00\x00\x0c\x0c\x3e\x3e\x18" \ + b"\x0e\x03\xe0\x18\xc6\x00\x00\x31\x07\x1e\x78\x30" \ + b"\x03\x0c\x30\x60\x03\x40\x00\x60\x03\x40\x00\x60" \ + b"\x03\x40\x00\x60\x03\x20\x04\x60\x03\x20\x04\x60" \ + b"\x03\x10\x08\x60\x03\x08\x08\x60\x03\xf0\x07\x60" \ + b"\x06\x00\x00\x30\x06\x00\x00\x30\x0c\x00\xc0\x18" \ + b"\x0c\x3c\x30\x18\x18\xe6\x19\x0c\x30\x00\x0f\x06" \ + b"\x60\x00\x00\x03\xc0\x01\xc0\x01\x80\x07\xf0\x00" \ + b"\x00\xfe\x3f\x00\x00\xf8\x0f\x00" # The CursorView contains many labels with different cursors. class CursorView( TQWidget ): # cursor view diff --git a/examples3/dclock.py b/examples3/dclock.py index eb4e990..302d454 100755 --- a/examples3/dclock.py +++ b/examples3/dclock.py @@ -47,7 +47,7 @@ class DigitalClock(TQLCDNumber): s[2] = ' ' if s[0] == '0': s[0] = ' ' - s = string.join(s,'') + s = ''.join(s) self.display(s) a = TQApplication(sys.argv) diff --git a/examples3/desktop.py b/examples3/desktop.py index 7ed96cd..154b632 100755 --- a/examples3/desktop.py +++ b/examples3/desktop.py @@ -220,11 +220,11 @@ if len(sys.argv) == 3: validOptions = 0 if not validOptions: - print """Usage: + print("""Usage: \tdesktop -poly \tdesktop -rotate \tdesktop -troll \tdesktop -trollwidget \tdesktop -shadetext -\tdesktop -shadewidget """ +\tdesktop -shadewidget """) rotate() diff --git a/examples3/fontdisplayer.py b/examples3/fontdisplayer.py index 7e66572..1f616bf 100755 --- a/examples3/fontdisplayer.py +++ b/examples3/fontdisplayer.py @@ -41,15 +41,15 @@ class FontRowTable( TQFrame ): fm = self.fontMetrics() ml = self.frameWidth() + self.margin() + 1 + max(0,-fm.minLeftBearing()) mt = self.frameWidth() + self.margin() - cell = TQSize((self.width()-15-ml)/16,(self.height()-15-mt)/16) + cell = TQSize(int((self.width()-15-ml)/16),int((self.height()-15-mt)/16)) if not cell.width() or not cell.height() : return - mini = r.left() / cell.width() - maxi = (r.right()+cell.width()-1) / cell.width() - minj = r.top() / cell.height() - maxj = (r.bottom()+cell.height()-1) / cell.height() + mini = int(r.left() / cell.width()) + maxi = int((r.right()+cell.width()-1) / cell.width()) + minj = int(r.top() / cell.height()) + maxj = int((r.bottom()+cell.height()-1) / cell.height()) h = fm.height() @@ -83,13 +83,13 @@ class FontRowTable( TQFrame ): else: sign = positive if l > 0: lsign = 0 else: lsign = 1 - p.fillRect(x+lsign, y-h/2, abs(l),-h/2, TQBrush(sign)) + p.fillRect(x+lsign, int(y-h/2), abs(l),int(-h/2), TQBrush(sign)) if r : if r < 0: sign = rnegative else: sign = rpositive if r > 0: rsign = r else: rsign = 0 - p.fillRect(x+w-rsign,y+2, abs(r),-h/2, TQBrush(sign)) + p.fillRect(int(x+w-rsign),y+2, abs(r),int(-h/2), TQBrush(sign)) s = TQString( ch ) p.setPen(TQPen(TQt.black)) p.drawText(x,y,s) diff --git a/examples3/fonts.py b/examples3/fonts.py index 68f0b54..145b815 100755 --- a/examples3/fonts.py +++ b/examples3/fonts.py @@ -19,10 +19,8 @@ class Viewer( TQWidget ): self.setFontSubstitutions() - #greeting_heb = TQString.fromUtf8( "\327\251\327\234\327\225\327\235" ) - greeting_heb = unicode( '\327\251\327\234\327\225\327\235','utf8' ) - #greeting_ru = TQString.fromUtf8( "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265" ) - greeting_ru = unicode('\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265','utf8' ) + greeting_heb = TQString.fromUtf8( b"\327\251\327\234\327\225\327\235" ) + greeting_ru = TQString.fromUtf8( b"\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265" ) greeting_en = "Hello" self.greetings = TQTextView( self, "textview" ) diff --git a/examples3/gears.py b/examples3/gears.py index 05f0469..e98df55 100755 --- a/examples3/gears.py +++ b/examples3/gears.py @@ -227,7 +227,7 @@ if __name__=='__main__': app=TQApplication(sys.argv) if not TQGLFormat.hasOpenGL(): - raise 'No TQt OpenGL support.' + raise Exception('No TQt OpenGL support.') widget=GearWidget() app.setMainWidget(widget) diff --git a/examples3/i18n/i18n.py b/examples3/i18n/i18n.py index 74f3422..b4dc42a 100755 --- a/examples3/i18n/i18n.py +++ b/examples3/i18n/i18n.py @@ -80,7 +80,7 @@ def showLang(lang): translator.load(language,".") tqApp.installTranslator(translator) m = MyWidget() - m.setCaption("PyTQt Example - i18n - " + unicode(m.caption())) + m.setCaption("PyTQt Example - i18n - " + str(m.caption())) wlist.append(m) return m diff --git a/examples3/mdi.py b/examples3/mdi.py index 8f1cf93..ca3d33b 100755 --- a/examples3/mdi.py +++ b/examples3/mdi.py @@ -77,12 +77,12 @@ fileprint = [ document = [ "12 16 6 1", -" c #040404", -". c None", -"X c white", -"o c #808304", -"O c black", -"+ c #f3f7f3", +" c #040404", +". c None", +"X c white", +"o c #808304", +"O c black", +"+ c #f3f7f3", " .....", " XXXXX ....", " XXXXX X ...", @@ -115,8 +115,8 @@ filePrintText = \ '''Click this button to print the file you are editing.

You can also select the Print command from the File menu.''' -True=1 -False=0 +#True=1 +#False=0 class ApplicationWindow(TQMainWindow): def __init__(self): @@ -132,7 +132,7 @@ class ApplicationWindow(TQMainWindow): saveIcon = TQPixmap(filesave) self.fileSave = TQToolButton(TQIconSet(saveIcon),'Save File',TQString.null,self.save,self.fileTools,'save file') - printIcon = TQPixmap(fileprint) + printIcon = TQPixmap(fileprint) self.filePrint = TQToolButton(TQIconSet(printIcon),'Print File',TQString.null,self.printDoc,self.fileTools,'print file') TQWhatsThis.whatsThisButton(self.fileTools) @@ -168,10 +168,10 @@ class ApplicationWindow(TQMainWindow): self.menuBar().insertSeparator() self.windows = TQPopupMenu( self ) - self.windows.setCheckable( True ) - self.connect( self.windows, SIGNAL( "aboutToShow()" ), - self.windowsMenuAboutToShow ) - self.menuBar().insertItem( "&Windows", self.windows ) + self.windows.setCheckable( True ) + self.connect( self.windows, SIGNAL( "aboutToShow()" ), + self.windowsMenuAboutToShow ) + self.menuBar().insertItem( "&Windows", self.windows ) self.help = TQPopupMenu(self) self.menuBar().insertSeparator() @@ -180,15 +180,15 @@ class ApplicationWindow(TQMainWindow): self.help.insertItem('&About',self.about,TQt.Key_F1) self.help.insertItem('About &TQt',self.aboutTQt) self.help.insertSeparator() - self.help.insertItem( "What's &This", self, SLOT("whatsThis()"), TQt.SHIFT+TQt.Key_F1) + self.help.insertItem( "What's &This", self, SLOT("whatsThis()"), TQt.SHIFT+TQt.Key_F1) - self.menuBar().insertSeparator() + self.menuBar().insertSeparator() - self.vb = TQVBox( self ) - self.vb.setFrameStyle( TQFrame.StyledPanel | TQFrame.Sunken ) - self.ws = TQWorkspace( self.vb ) - self.ws.setScrollBarsEnabled( True ) - self.setCentralWidget( self.vb ) + self.vb = TQVBox( self ) + self.vb.setFrameStyle( TQFrame.StyledPanel | TQFrame.Sunken ) + self.ws = TQWorkspace( self.vb ) + self.ws.setScrollBarsEnabled( True ) + self.setCentralWidget( self.vb ) self.statusBar().message('Ready',2000) #self.resize(450,600) @@ -265,90 +265,90 @@ class ApplicationWindow(TQMainWindow): class MDIWindow( TQMainWindow): - def __init__(self,parent, name, wflags ): - TQMainWindow.__init__(self,parent, name, wflags ) - self.mmovie = 0 - self.medit = TQMultiLineEdit( self ) - self.setFocusProxy( self.medit ) - self.setCentralWidget( self.medit ); - - - def load(self, fn ): - self.filename = fn - self.f=TQFile( self.filename ) - if not self.f.open( IO_ReadOnly ): - return - - if fn.contains(".gif"): - tmp=TQWidget(self) - self.setFocusProxy(tmp) - self.setCentralWidget(tmp) - self.medit.hide() - del self.medit - qm=TQMovie(fn) - #ifdef Q_WS_QWS // temporary speed-test hack - #qm->setDisplayWidget(tmp); - #endif - tmp.setBackgroundMode(TQWidget.NoBackground) - tmp.show() - self.mmovie=qm - else : - self.mmovie = 0 - t=TQTextStream(self.f) - s = t.read() - self.medit.setText( s ) - self.f.close() - self.setCaption( self.filename ) - self.emit(PYSIGNAL( "message"),(TQString("Loaded document %1").arg(self.filename),2000 )) - - def save(self): - if self.filename.isEmpty(): - self.saveAs() - return - text = self.medit.text() - output=open(str(self.filename),'w') - output.write(str(text)) - #emit message( TQString("Could not write to %1").arg(filename), 2000 ); - #return - output.close() - self.setCaption(self.filename) - self.emit(PYSIGNAL( "message"),(TQString("File %1 saved").arg(self.filename),2000 )) - - def saveAs(self): - fn = TQFileDialog.getSaveFileName( self.filename, TQString.null, self ) - if not fn.isEmpty(): - self.filename = fn - self.save() - else : - self.emit(PYSIGNAL( "message"),(TQString("Saving aborted"),2000 )) - - def printDoc(self,printer): - Margin = 10 - pageNo = 1 - - if printer.setup(self): - self.emit(PYSIGNAL( "message"),(TQString("Printing..."),2000 )) - p = TQPainter() - p.begin(printer) - p.setFont(self.medit.font()) - yPos = 0 - fm = p.fontMetrics() - metrics = TQPaintDeviceMetrics(printer) - - for i in range(self.medit.numLines()): - if Margin + yPos > metrics.height() - Margin: - pageNo = pageNo + 1 - self.emit(PYSIGNAL( "message"),(TQString("Printing (page %1) ...").arg(pageNo),2000 )) - printer.newPage() - yPos = 0 - - p.drawText(Margin,Margin + yPos,metrics.width(),fm.lineSpacing(),TQt.ExpandTabs | TQt.DontClip,self.medit.textLine(i)) - yPos = yPos + fm.lineSpacing() - - p.end() - self.emit(PYSIGNAL( "message"),(TQString("Printing completed"),2000 )) - else: - self.emit(PYSIGNAL( "message"),(TQString("Printing aborted"),2000 )) + def __init__(self,parent, name, wflags ): + TQMainWindow.__init__(self,parent, name, wflags ) + self.mmovie = 0 + self.medit = TQMultiLineEdit( self ) + self.setFocusProxy( self.medit ) + self.setCentralWidget( self.medit ); + + + def load(self, fn ): + self.filename = fn + self.f=TQFile( self.filename ) + if not self.f.open( IO_ReadOnly ): + return + + if fn.contains(".gif"): + tmp=TQWidget(self) + self.setFocusProxy(tmp) + self.setCentralWidget(tmp) + self.medit.hide() + del self.medit + qm=TQMovie(fn) + #ifdef Q_WS_QWS // temporary speed-test hack + #qm->setDisplayWidget(tmp); + #endif + tmp.setBackgroundMode(TQWidget.NoBackground) + tmp.show() + self.mmovie=qm + else : + self.mmovie = 0 + t=TQTextStream(self.f) + s = t.read() + self.medit.setText( s ) + self.f.close() + self.setCaption( self.filename ) + self.emit(PYSIGNAL( "message"),(TQString("Loaded document %1").arg(self.filename),2000 )) + + def save(self): + if self.filename.isEmpty(): + self.saveAs() + return + text = self.medit.text() + output=open(str(self.filename),'w') + output.write(str(text)) + #emit message( TQString("Could not write to %1").arg(filename), 2000 ); + #return + output.close() + self.setCaption(self.filename) + self.emit(PYSIGNAL( "message"),(TQString("File %1 saved").arg(self.filename),2000 )) + + def saveAs(self): + fn = TQFileDialog.getSaveFileName( self.filename, TQString.null, self ) + if not fn.isEmpty(): + self.filename = fn + self.save() + else : + self.emit(PYSIGNAL( "message"),(TQString("Saving aborted"),2000 )) + + def printDoc(self,printer): + Margin = 10 + pageNo = 1 + + if printer.setup(self): + self.emit(PYSIGNAL( "message"),(TQString("Printing..."),2000 )) + p = TQPainter() + p.begin(printer) + p.setFont(self.medit.font()) + yPos = 0 + fm = p.fontMetrics() + metrics = TQPaintDeviceMetrics(printer) + + for i in range(self.medit.numLines()): + if Margin + yPos > metrics.height() - Margin: + pageNo = pageNo + 1 + self.emit(PYSIGNAL( "message"),(TQString("Printing (page %1) ...").arg(pageNo),2000 )) + printer.newPage() + yPos = 0 + + p.drawText(Margin,Margin + yPos,metrics.width(),fm.lineSpacing(),TQt.ExpandTabs | TQt.DontClip,self.medit.textLine(i)) + yPos = yPos + fm.lineSpacing() + + p.end() + self.emit(PYSIGNAL( "message"),(TQString("Printing completed"),2000 )) + else: + self.emit(PYSIGNAL( "message"),(TQString("Printing aborted"),2000 )) if __name__=='__main__': diff --git a/examples3/progress.py b/examples3/progress.py index eb5a832..3ebdd12 100755 --- a/examples3/progress.py +++ b/examples3/progress.py @@ -87,7 +87,7 @@ class AnimatedThingy(TQLabel): def _drawqix(self, p, pn, step): # rainbow effect - pn.setColor(TQColor((step * 255)/self.nqix, 255, 255, TQColor.Hsv)) + pn.setColor(TQColor(int((step * 255)/self.nqix), 255, 255, TQColor.Hsv)) p.setPen(pn) p.drawLine(self.ox[step][0], self.oy[step][0], self.ox[step][1], self.oy[step][1]) diff --git a/examples3/qdir.py b/examples3/qdir.py index 62d452e..358c796 100755 --- a/examples3/qdir.py +++ b/examples3/qdir.py @@ -2,6 +2,7 @@ # # 2005-02-12 initial version hp +from __future__ import print_function import os import pickle from python_tqt.qt import * @@ -97,7 +98,7 @@ class Preview(TQWidgetStack): err = False try: text = open(path.latin1(), "r").read() - except IOError, msg: + except IOError as msg: text = TQString(str(msg)) err = True if not err and fi.extension().lower().contains("htm"): @@ -159,8 +160,8 @@ class CustomFileDialog(TQFileDialog): if os.path.exists(self.bookmarkFile): try: self.bookmarkList = pickle.loads(open(self.bookmarkFile, "rb").read()) - except IOError, msg: - print msg + except IOError as msg: + print(msg) self.setDir("/") self.dirView = DirectoryView(self, None, True) self.dirView.addColumn("") @@ -209,8 +210,8 @@ class CustomFileDialog(TQFileDialog): if self.bookmarkList: try: open(self.bookmarkFile, "wb").write(pickle.dumps(self.bookmarkList)) - except IOError, msg: - print msg + except IOError as msg: + print(msg) return TQFileDialog.done(self, r) def showEvent(self, e): @@ -245,8 +246,8 @@ if __name__ == '__main__': def usage(msg = None): if msg: - print >> sys.stderr, msg - print >> sys.stderr, """\ + print(msg, file=sys.stderr) + print("""\ usage: qdir [--any | --dir | --custom] [--preview] [--default f] {--filter f} [caption ...] --any Get any filename, need not exist. --dir Return a directory rather than a file. @@ -256,7 +257,7 @@ usage: qdir [--any | --dir | --custom] [--preview] [--default f] {--filter f} [c --default f Start from directory/file f. --filter f eg. '*.gif' '*.bmp' caption ... Caption for dialog. -""" +""", file=sys.stderr) sys.exit(1) def main(): @@ -270,7 +271,7 @@ usage: qdir [--any | --dir | --custom] [--preview] [--default f] {--filter f} [c try: optlist, args = getopt.getopt(sys.argv[1:], "h", options) - except getopt.error, msg: + except getopt.error as msg: usage(msg) for opt, par in optlist: @@ -311,7 +312,7 @@ usage: qdir [--any | --dir | --custom] [--preview] [--default f] {--filter f} [c fd.setCaption(caption) fd.setSelection(start) if fd.exec_loop() == TQDialog.Accepted: - print "%s\n" % fd.selectedFile().latin1() + print("%s\n" % fd.selectedFile().latin1()) return 0 else: return 1 diff --git a/examples3/rangecontrols.py b/examples3/rangecontrols.py index a56eff3..14588c8 100755 --- a/examples3/rangecontrols.py +++ b/examples3/rangecontrols.py @@ -13,7 +13,7 @@ import sys from python_tqt.qt import * -INT_MAX = sys.maxint +INT_MAX = sys.maxsize class RangeControls( TQVBox ): def __init__( self, parent=None, name=None ): diff --git a/examples3/richtext.py b/examples3/richtext.py index 78c0db7..2e6abac 100755 --- a/examples3/richtext.py +++ b/examples3/richtext.py @@ -99,7 +99,7 @@ class MyRichText( TQVBox ): self.connect( self.bClose, SIGNAL("clicked()"), tqApp, SLOT("quit()") ) self.connect( self.bPrev, SIGNAL("clicked()"), self.prev ) - self.connect( self.bNext, SIGNAL("clicked()"), self.next ) + self.connect( self.bNext, SIGNAL("clicked()"), self.__next__ ) self.num = 0 @@ -112,7 +112,7 @@ class MyRichText( TQVBox ): self.bPrev.setEnabled( False ) self.bNext.setEnabled( True ) - def next( self ): + def __next__( self ): self.num += 1 if not sayings[self.num]: return diff --git a/examples3/semaphore.py b/examples3/semaphore.py index 46cdace..79affb2 100755 --- a/examples3/semaphore.py +++ b/examples3/semaphore.py @@ -9,7 +9,7 @@ import sys try: from python_tqt.qt import TQThread except: - print "Thread support not enabled" + print("Thread support not enabled") sys.exit(1) from python_tqt.qt import * @@ -192,7 +192,7 @@ class SemaphoreExample(TQWidget): del s else: - print "Unknown custom event type:", event.type() + print("Unknown custom event type:", event.type()) app = TQApplication(sys.argv) diff --git a/examples3/splitter.py b/examples3/splitter.py index 709e960..a220d08 100755 --- a/examples3/splitter.py +++ b/examples3/splitter.py @@ -16,13 +16,13 @@ class Test(TQWidget): y1 = 0 y2 = self.height() - 1 - x = (x1+x2)/2 + x = int((x1+x2)/2) p.drawLine(x, y1, x+d, y1+d) p.drawLine(x, y1, x-d, y1+d) p.drawLine(x, y2, x+d, y2-d) p.drawLine(x, y2, x-d, y2-d) - y = (y1+y2)/2 + y = int((y1+y2)/2) p.drawLine(x1, y, x1+d, y+d) p.drawLine(x1, y, x1+d, y-d) p.drawLine(x2, y, x2-d, y+d) diff --git a/examples3/tablestatistics.py b/examples3/tablestatistics.py index ee1f0f7..b2fe337 100755 --- a/examples3/tablestatistics.py +++ b/examples3/tablestatistics.py @@ -53,6 +53,8 @@ class Table(TQTable): # read all the TQt source and header files into a list all = [] qtdir = os.getenv("QTDIR") + if qtdir is None: + raise Exception("The QTDIR environment variable has not been set.") for i in dirs: dir = TQDir(os.path.join(qtdir, "src", i)) lst = TQStringList(dir.entryList("*.cpp; *.h")) @@ -65,7 +67,7 @@ class Table(TQTable): self.setNumRows(len(all) + 1) i = 0 - sum = 0L + sum = 0 # insert the data into the table for it in all: self.setText(i, TB_FILE, it) @@ -82,11 +84,11 @@ class Table(TQTable): if col < TB_SIZE or col > TB_FLAG: return - sum = 0L + sum = 0 for i in range(self.numRows()-1): if str(self.text(i, TB_FLAG)) == "No": continue - sum += long(str(self.text(i, TB_SIZE))) + sum += int(str(self.text(i, TB_SIZE))) self.displaySum(sum) def displaySum(self, sum): @@ -108,7 +110,7 @@ class Table(TQTable): class TableItem(TQTableItem): def __init__(self, *args): - apply(TQTableItem.__init__, (self,) + args) + TQTableItem.__init__(*(self,) + args) def paint(self, p, cg, cr, selected): g = TQColorGroup(cg) diff --git a/examples3/tooltip.py b/examples3/tooltip.py index 03bcd4f..13025e3 100755 --- a/examples3/tooltip.py +++ b/examples3/tooltip.py @@ -76,7 +76,7 @@ class TellMe( TQWidget ): self.r2 = self.randomRect() def randomRect( self ): - return TQRect( random() * (self.width() - 20), random() * (self.height() - 20), 20, 20 ) + return TQRect( int(random() * (self.width() - 20)), int(random() * (self.height() - 20)), 20, 20 ) def tip( self, p ): diff --git a/examples3/tut10.py b/examples3/tut10.py index 310f000..b16804e 100755 --- a/examples3/tut10.py +++ b/examples3/tut10.py @@ -27,7 +27,7 @@ class LCDRange(qt.TQVBox): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) diff --git a/examples3/tut11.py b/examples3/tut11.py index ca070fd..cb6444b 100755 --- a/examples3/tut11.py +++ b/examples3/tut11.py @@ -28,7 +28,7 @@ class LCDRange(qt.TQVBox): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) @@ -149,7 +149,7 @@ class CannonField(qt.TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = qt.TQRect(0, 0, 6, 6) - r.moveCenter(qt.TQPoint(x, self.height() - 1 - y)) + r.moveCenter(qt.TQPoint(int(x), int(self.height() - 1 - y))) return r def sizePolicy(self): diff --git a/examples3/tut12.py b/examples3/tut12.py index 7b13271..452d1ac 100755 --- a/examples3/tut12.py +++ b/examples3/tut12.py @@ -36,7 +36,7 @@ class LCDRange(qt.TQVBox): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) @@ -184,7 +184,7 @@ class CannonField(qt.TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = qt.TQRect(0, 0, 6, 6) - r.moveCenter(qt.TQPoint(x, self.height() - 1 - y)) + r.moveCenter(qt.TQPoint(int(x), int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples3/tut13.py b/examples3/tut13.py index daa5a9d..c43d67b 100755 --- a/examples3/tut13.py +++ b/examples3/tut13.py @@ -41,7 +41,7 @@ class LCDRange(qt.TQWidget): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) @@ -216,7 +216,7 @@ class CannonField(qt.TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = qt.TQRect(0, 0, 6, 6) - r.moveCenter(qt.TQPoint(x, self.height() - 1 - y)) + r.moveCenter(qt.TQPoint(int(x), int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples3/tut14.py b/examples3/tut14.py index 9f89a9b..8f7404c 100755 --- a/examples3/tut14.py +++ b/examples3/tut14.py @@ -41,7 +41,7 @@ class LCDRange(qt.TQWidget): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) @@ -246,7 +246,7 @@ class CannonField(qt.TQWidget): y = y0 + vely * time - 0.5 * gravity * time * time r = qt.TQRect(0, 0, 6, 6) - r.moveCenter(qt.TQPoint(x, self.height() - 1 - y)) + r.moveCenter(qt.TQPoint(int(x), int(self.height() - 1 - y))) return r def targetRect(self): diff --git a/examples3/tut8.py b/examples3/tut8.py index b884093..2e81a94 100755 --- a/examples3/tut8.py +++ b/examples3/tut8.py @@ -27,7 +27,7 @@ class LCDRange(qt.TQVBox): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) diff --git a/examples3/tut9.py b/examples3/tut9.py index 024f921..3eafed7 100755 --- a/examples3/tut9.py +++ b/examples3/tut9.py @@ -27,7 +27,7 @@ class LCDRange(qt.TQVBox): def setRange(self, minVal, maxVal): if minVal < 0 or maxVal > 99 or minVal > maxVal: - raise ValueError, "LCDRange.setRange(): invalid range" + raise ValueError("LCDRange.setRange(): invalid range") self.slider.setRange(minVal, maxVal) diff --git a/examples3/webbrowser/mainwindow.py b/examples3/webbrowser/mainwindow.py index 31b11f1..14929de 100644 --- a/examples3/webbrowser/mainwindow.py +++ b/examples3/webbrowser/mainwindow.py @@ -1064,34 +1064,34 @@ class MainWindow(TQMainWindow): def go(self): - print "MainWindow.go(): Not implemented yet" + print("MainWindow.go(): Not implemented yet") def newWindow(self): - print "MainWindow.newWindow(): Not implemented yet" + print("MainWindow.newWindow(): Not implemented yet") def setProgress(self,a0,a1): - print "MainWindow.setProgress(int,int): Not implemented yet" + print("MainWindow.setProgress(int,int): Not implemented yet") def init(self): pass def setTitle(self,a0): - print "MainWindow.setTitle(const TQString&): Not implemented yet" + print("MainWindow.setTitle(const TQString&): Not implemented yet") def setCommandState(self,a0,a1): - print "MainWindow.setCommandState(int,bool): Not implemented yet" + print("MainWindow.setCommandState(int,bool): Not implemented yet") def navigateComplete(self): - print "MainWindow.navigateComplete(): Not implemented yet" + print("MainWindow.navigateComplete(): Not implemented yet") def navigateBegin(self): - print "MainWindow.navigateBegin(): Not implemented yet" + print("MainWindow.navigateBegin(): Not implemented yet") def aboutSlot(self): - print "MainWindow.aboutSlot(): Not implemented yet" + print("MainWindow.aboutSlot(): Not implemented yet") def aboutTQtSlot(self): - print "MainWindow.aboutTQtSlot(): Not implemented yet" + print("MainWindow.aboutTQtSlot(): Not implemented yet") def __tr(self,s,c = None): return tqApp.translate("MainWindow",s,c) diff --git a/examples3/widgets.py b/examples3/widgets.py index 0d3ce3a..fe36049 100755 --- a/examples3/widgets.py +++ b/examples3/widgets.py @@ -18,7 +18,7 @@ def TQMIN( x, y ): class AnalogClock( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) self.time = TQTime.currentTime() # get current time internalTimer = TQTimer( self ) # create internal timer self.connect( internalTimer, SIGNAL("timeout()"), self.timeout ) @@ -74,7 +74,7 @@ class AnalogClock( TQWidget ): class DigitalClock( TQLCDNumber ): def __init__( self, *args ): - apply( TQLCDNumber.__init__,(self,) + args ) + TQLCDNumber.__init__(*(self,) + args) self.showingColon = 0 self.setFrameStyle(TQFrame.Panel | TQFrame.Raised) self.setLineWidth( 2 ) @@ -112,7 +112,7 @@ class DigitalClock( TQLCDNumber ): s[2] = ' ' if s[0] == '0': s[0] = ' ' - s = string.join(s,'') + s = ''.join(s) self.display( s ) def TQMIN( x, y ): @@ -130,7 +130,7 @@ MOVIEFILENAME = "trolltech.gif" class WidgetView ( TQWidget ): def __init__( self, *args ): - apply( TQWidget.__init__, (self,) + args ) + TQWidget.__init__(*(self,) + args) # Set the window caption/title self.setCaption( "TQt Widgets Demo Application" ) @@ -223,7 +223,7 @@ class WidgetView ( TQWidget ): self.vbox.addSpacing( self.bg.fontMetrics().height() ) - self.cb = range(3) + self.cb = list(range(3)) self.cb[0] = TQCheckBox( self.bg ) self.cb[0].setText( "Read" ) self.vbox.addWidget( self.cb[0] ) @@ -464,10 +464,10 @@ class WidgetView ( TQWidget ): TQApplication.setPalette( p, TRUE ) def lineEditTextChanged( self, newText ): - self.msg.setText("Line edit text: " + unicode(newText)) + self.msg.setText("Line edit text: " + str(newText)) def spinBoxValueChanged( self, valueText ): - self.msg.setText("Spin box value: " + unicode(valueText)) + self.msg.setText("Spin box value: " + str(valueText)) # All application events are passed throught this event filter. # We're using it to display some information about a clicked diff --git a/module-init.py b/module-init.py index 929a166..bc5f31b 100644 --- a/module-init.py +++ b/module-init.py @@ -17,8 +17,8 @@ __all__ = [ 'qt', 'qtcanvas', 'qtnetwork', - 'qtsql', 'qttable', + 'qtsql', 'qtui', 'qtxml', ] diff --git a/sip/qt/qapplication.sip b/sip/qt/qapplication.sip index 367ac2c..dcf333d 100644 --- a/sip/qt/qapplication.sip +++ b/sip/qt/qapplication.sip @@ -64,6 +64,9 @@ This has been renamed to exec_loop in Python. %End +%ModuleHeaderCode +#include +%End TQApplication *tqApp; @@ -128,7 +131,6 @@ public: } %End -%If (TQt_2_2_0 -) enum Type { Tty, GuiClient, @@ -159,7 +161,6 @@ public: // Now modify the original list. updatePyArgv(a0,argc,argv); } -%End %End ~TQApplication(); @@ -209,7 +210,7 @@ public: sipIsErr = 1; else for (int a = 0; a < argc; ++a) - if (PyList_SetItem(sipRes,a,PyString_FromString(sipCpp -> argv()[a])) < 0) + if (PyList_SetItem(sipRes,a,SIPBytes_FromString(sipCpp -> argv()[a])) < 0) { Py_DECREF(sipRes); sipIsErr = 1; @@ -217,39 +218,17 @@ public: } %End -%If (TQt_2_3_0 -) Type type() const; -%End -%If (- TQt_2_00) - static GUIStyle style(); - static void setStyle(GUIStyle); -%End -%If (TQt_2_00 -) static TQStyle &style(); static void setStyle(TQStyle * /Transfer/); -%End -%If (TQt_3_0_0 -) static TQStyle *setStyle(const TQString &); -%End -%If (- TQt_2_00) - enum ColorSpec - { - NormalColor = 0, - CustomColor = 1, - PrivateColor = 4, - ManyColor = 4, - TrueColor = 4 - }; -%End -%If (TQt_2_00 -) enum ColorSpec { NormalColor = 0, CustomColor = 1, ManyColor = 2 }; -%End static int colorSpec(); static void setColorSpec(int); @@ -258,51 +237,26 @@ public: static void restoreOverrideCursor(); static bool hasGlobalMouseTracking(); static void setGlobalMouseTracking(bool); -%If (- TQt_2_00) - static TQPalette *palette(); - static void setPalette(TQPalette &,bool = 0); - static TQFont *font(); - static void setFont(const TQFont &,bool = 0); -%End -%If (TQt_2_00 -) static TQPalette palette(const TQWidget * = 0); static void setPalette(TQPalette &,bool = 0,const char * = 0); static TQFont font(const TQWidget * = 0); static void setFont(const TQFont &,bool = 0,const char * = 0); -%End static TQFontMetrics fontMetrics(); TQWidget *mainWidget() const; -%If (- TQt_2_00) - // We may not need the /Transfer/ now that the TQApplication dtor is - // instrumented, but we'll leave it in so as not to break old programs - // needlessly. - void setMainWidget(TQWidget * /Transfer/); -%End -%If (TQt_2_00 -) virtual void setMainWidget(TQWidget *); virtual void polish(TQWidget *); -%End static TQWidgetList *allWidgets(); static TQWidgetList *topLevelWidgets(); -%If (- TQt_3_0_0) - static TQWidget *desktop(); -%End -%If (TQt_3_0_0 -) static TQDesktopWidget *desktop(); -%End static TQWidget *activePopupWidget(); static TQWidget *activeModalWidget(); static TQClipboard *clipboard(); TQWidget *focusWidget() const; -%If (TQt_2_00 -) TQWidget *activeWindow() const; -%End static TQWidget *widgetAt(int,int,bool = 0); static TQWidget *widgetAt(const TQPoint &,bool = 0); -%If (TQt_3_1_0 -) static TQEventLoop *eventLoop(); -%End int exec() /PyName=exec_loop, ReleaseGIL, PreHook=__pyTQtPreEventLoopHook__, @@ -310,44 +264,27 @@ public: void processEvents() /ReleaseGIL/; void processEvents(int) /ReleaseGIL/; void processOneEvent() /ReleaseGIL/; -%If (TQt_3_0_0 -) bool hasPendingEvents(); -%End int enter_loop() /ReleaseGIL/; void exit_loop(); -%If (TQt_2_00 -) int loopLevel() const; -%End static void exit(int = 0); static bool sendEvent(TQObject *,TQEvent *) /ReleaseGIL/; static void postEvent(TQObject *,TQEvent * /Transfer/) /ReleaseGIL/; static void sendPostedEvents(TQObject *,int) /ReleaseGIL/; -%If (TQt_2_00 -) static void sendPostedEvents() /ReleaseGIL/; static void removePostedEvents(TQObject *); -%End virtual bool notify(TQObject *,TQEvent *) /ReleaseGIL/; static bool startingUp(); static bool closingDown(); static void flushX(); -%If (TQt_3_0_0 -) static void flush(); -%End static void syncX(); static void beep(); -%If (TQt_2_00 -) void setDefaultCodec(TQTextCodec *); TQTextCodec *defaultCodec() const; void installTranslator(TQTranslator *); void removeTranslator(TQTranslator *); -%End -%If (TQt_2_00 - TQt_3_0_0) - TQString translate(const char *,const char *) const; -%End -%If (TQt_2_2_0 - TQt_3_0_0) - TQString translate(const char *,const char *,const char *) const; -%End -%If (TQt_3_0_0 -) enum Encoding { DefaultCodec, UnicodeUTF8 @@ -355,98 +292,59 @@ public: TQString translate(const char *,const char *,const char * = 0, Encoding = DefaultCodec) const; -%End -%If (TQt_3_2_0 -) TQString applicationDirPath(); TQString applicationFilePath(); -%End -%If (- TQt_3_0_0) - static void setWinStyleHighlightColor(const TQColor &); - static const TQColor &winStyleHighlightColor(); -%End -%If (TQt_2_00 -) static void setDesktopSettingsAware(bool); static bool desktopSettingsAware(); static void setCursorFlashTime(int); static int cursorFlashTime(); -%End static void setDoubleClickInterval(int); static int doubleClickInterval(); -%If (TQt_2_1_0 -) static void setWheelScrollLines(int); static int wheelScrollLines(); -%If (TQt_2_2_0 -) static void setGlobalStrut(const TQSize &); static TQSize globalStrut(); -%End -%If (TQt_3_0_0 -) static void setLibraryPaths(const TQStringList &); static TQStringList libraryPaths(); static void addLibraryPath(const TQString &); static void removeLibraryPath(const TQString &); -%End static void setStartDragTime(int); static int startDragTime(); static void setStartDragDistance(int); static int startDragDistance(); -%If (TQt_3_0_0 -) static void setReverseLayout(bool); static bool reverseLayout(); static int horizontalAlignment(int); -%End -%If (TQt_2_2_0 -) static bool isEffectEnabled(TQt::UIEffect); static void setEffectEnabled(TQt::UIEffect,bool = 1); -%End -%End -%If (TQt_2_00 -) bool isSessionRestored() const; TQString sessionId() const; -%If (TQt_3_1_0 -) TQString sessionKey() const; -%End virtual void commitData(TQSessionManager &); virtual void saveState(TQSessionManager &); -%End -%If (TQt_2_1_0 -) void wakeUpGuiThread(); -%End %If (TQt_THREAD_SUPPORT) -%If (TQt_2_2_0 -) void lock() /ReleaseGIL/; void unlock(bool = 1); bool locked(); -%End -%If (TQt_3_0_0 -) bool tryLock(); %End -%End signals: void lastWindowClosed(); -%If (TQt_2_00 -) void aboutToQuit(); -%End -%If (TQt_2_1_0 -) void guiThreadAwake(); -%End public slots: void quit(); -%If (TQt_2_00 -) void closeAllWindows(); -%End -%If (TQt_3_2_0 -) void aboutTQt(); -%End protected: -%If (TQt_3_1_0 -) bool event(TQEvent *); -%End private: TQApplication(const TQApplication &); @@ -471,19 +369,26 @@ static char **pyArgvToC(PyObject *argvlist,int &argc) // Convert the list. for (int a = 0; a < argc; ++a) { + PyObject *argObject = PyList_GET_ITEM(argvlist, a); char *arg; - // Get the argument and allocate memory for it. - if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL || - (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL) + if (PyUnicode_Check(argObject)) + { + arg = tqstrdup(sipString_AsLatin1String(&argObject)); + } + else if (SIPBytes_Check(argObject)) + { + arg = tqstrdup(SIPBytes_AS_STRING(argObject)); + } + else + { return NULL; + } - // Copy the argument and save a pointer to it. - strcpy(argv[a],arg); - argv[a + argc + 1] = argv[a]; + argv[a] = argv[a + argc + 1] = arg; } - argv[argc + argc + 1] = argv[argc] = NULL; + argv[argc] = argv[argc + argc + 1] = NULL; return argv; } @@ -544,19 +449,7 @@ static void pyqtMsgHandler(TQtMsgType type, const char *msg) SIP_BLOCK_THREADS -#if SIP_VERSION >= 0x040200 res = sipCallMethod(0, pyqtPyMsgHandler, "Es", type, sipEnum_TQtMsgType, msg); -#elif SIP_VERSION >= 0x040000 - res = sipCallMethod(0, pyqtPyMsgHandler, "es", type, msg); -#else - PyObject *args = Py_BuildValue("is", type, msg); - - if (args != NULL) - { - res = PyEval_CallObject(pyqtPyMsgHandler, args); - Py_DECREF(args); - } -#endif Py_XDECREF(res); diff --git a/sip/qt/qarray.sip b/sip/qt/qarray.sip index a7c34b8..6ce411e 100644 --- a/sip/qt/qarray.sip +++ b/sip/qt/qarray.sip @@ -52,7 +52,7 @@ converted to and from Python lists of the type. // Get it. for (uint i = 0; i < sipCpp -> count(); ++i) - if (PyList_SetItem(l,i,PyInt_FromLong((long)(sipCpp -> at(i)))) < 0) + if (PyList_SetItem(l,i,PyLong_FromLong((long)(sipCpp -> at(i)))) < 0) { Py_DECREF(l); @@ -74,7 +74,7 @@ converted to and from Python lists of the type. for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) { - qa[i] = (int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i)); + qa[i] = PyLong_AsLong(PyList_GET_ITEM(sipPy,i)); if (PyErr_Occurred() != NULL) { diff --git a/sip/qt/qbuttongroup.sip b/sip/qt/qbuttongroup.sip index 72d4009..e593e28 100644 --- a/sip/qt/qbuttongroup.sip +++ b/sip/qt/qbuttongroup.sip @@ -19,6 +19,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQButtonGroup diff --git a/sip/qt/qbytearray.sip b/sip/qt/qbytearray.sip index db5d266..d975472 100644 --- a/sip/qt/qbytearray.sip +++ b/sip/qt/qbytearray.sip @@ -98,6 +98,36 @@ class TQByteArray #include %End +%TypeCode +// Convert a TQByteArray to a Python string or Py_None if there's +// no data +static PyObject* TQByteArray_To_String(TQByteArray *ba) +{ + // TQByteArrays aren't '\0' terminated so set the size + // explicitly. + char *data; + uint len; + + Py_BEGIN_ALLOW_THREADS + data = ba->data(); + len = ba->size(); + Py_END_ALLOW_THREADS + + if (data) + { +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromStringAndSize(data, len); +#else + return SIPBytes_FromStringAndSize(data, len); +#endif + } + else + { + return Py_None; + } +} +%End + public: TQByteArray(); TQByteArray(int); @@ -105,27 +135,20 @@ public: SIP_PYOBJECT data() const; %MethodCode - // TQByteArrays aren't '\0' terminated so set the size - // explicitly. - - char *res; - uint len; - - Py_BEGIN_ALLOW_THREADS - res = sipCpp -> data(); - len = sipCpp -> size(); - Py_END_ALLOW_THREADS + PyObject* res = TQByteArray_To_String(sipCpp); - if (res) + if (res == Py_None) { - if ((sipRes = PyString_FromStringAndSize(res,len)) == NULL) - sipIsErr = 1; + Py_INCREF(Py_None); } - else + else if (res == NULL) { - Py_INCREF(Py_None); - sipRes = Py_None; + sipIsErr = 1; } + else + { + sipRes = res; + } %End // These are actually in TQMemArray, which isn't implemented so pretend @@ -151,36 +174,62 @@ public: SIP_PYOBJECT __str__(); %MethodCode - // TQByteArrays aren't '\0' terminated so set the size - // explicitly. + PyObject* res = TQByteArray_To_String(sipCpp); - char *data; - uint len; - - Py_BEGIN_ALLOW_THREADS - data = sipCpp -> data(); - len = sipCpp -> size(); - Py_END_ALLOW_THREADS - - if (data == NULL) - sipRes = PyString_FromString(""); + if (res == Py_None) + { + sipRes = SIPBytes_FromString(""); + } else - sipRes = PyString_FromStringAndSize(data,len); + { + sipRes = res; + } %End + %ConvertToTypeCode // Allow a Python string whenever a TQByteArray is expected. if (sipIsErr == NULL) - return (PyString_Check(sipPy) || + return (SIPBytes_Check(sipPy) || + PyUnicode_Check(sipPy) || sipCanConvertToInstance(sipPy,sipClass_TQByteArray,SIP_NO_CONVERTORS)); - if (PyString_Check(sipPy)) + if (PyUnicode_Check(sipPy)) + { + Py_BEGIN_ALLOW_THREADS + TQByteArray *ba = new TQByteArray(); + +#if PY_VERSION_HEX >= 0x03030000 + ba -> duplicate((char *)PyUnicode_1BYTE_DATA(sipPy),PyUnicode_GET_SIZE(sipPy)); +#else + ba -> duplicate((char *)PyUnicode_AS_DATA(sipPy),PyUnicode_GET_SIZE(sipPy)); +#endif + *sipCppPtr = ba; + Py_END_ALLOW_THREADS + + return sipGetState(sipTransferObj); + } +#if PY_VERSION_HEX >= 0x02060000 + else if (PyByteArray_Check(sipPy)) { Py_BEGIN_ALLOW_THREADS TQByteArray *ba = new TQByteArray(); - ba -> duplicate(PyString_AS_STRING(sipPy),PyString_GET_SIZE(sipPy)); + ba -> duplicate(PyByteArray_AS_STRING(sipPy),PyByteArray_GET_SIZE(sipPy)); + + *sipCppPtr = ba; + Py_END_ALLOW_THREADS + + return sipGetState(sipTransferObj); + } +#endif + else if (SIPBytes_Check(sipPy)) + { + Py_BEGIN_ALLOW_THREADS + TQByteArray *ba = new TQByteArray(); + + ba -> duplicate(SIPBytes_AS_STRING(sipPy),SIPBytes_GET_SIZE(sipPy)); *sipCppPtr = ba; Py_END_ALLOW_THREADS @@ -195,9 +244,7 @@ public: }; -%If (TQt_3_1_0 -) TQByteArray tqCompress(const uchar * /Array/,int /ArraySize/); TQByteArray tqCompress(const TQByteArray &); TQByteArray tqUncompress(const uchar * /Array/,int /ArraySize/); TQByteArray tqUncompress(const TQByteArray &); -%End diff --git a/sip/qt/qcstring.sip b/sip/qt/qcstring.sip index 5e877e6..9f076b6 100644 --- a/sip/qt/qcstring.sip +++ b/sip/qt/qcstring.sip @@ -197,19 +197,19 @@ public: if (s == NULL) s = ""; - sipRes = PyString_FromString(s); + sipRes = SIPBytes_FromString(s); %End %ConvertToTypeCode // Allow a Python string whenever a TQCString is expected. if (sipIsErr == NULL) - return (PyString_Check(sipPy) || + return (SIPBytes_Check(sipPy) || sipCanConvertToInstance(sipPy,sipClass_TQCString,SIP_NO_CONVERTORS)); - if (PyString_Check(sipPy)) + if (SIPBytes_Check(sipPy)) { - *sipCppPtr = new TQCString(PyString_AS_STRING(sipPy)); + *sipCppPtr = new TQCString(SIPBytes_AS_STRING(sipPy)); return sipGetState(sipTransferObj); } diff --git a/sip/qt/qdragobject.sip b/sip/qt/qdragobject.sip index f258596..fbd5e29 100644 --- a/sip/qt/qdragobject.sip +++ b/sip/qt/qdragobject.sip @@ -20,6 +20,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQColorDrag (TQt v2.1+) diff --git a/sip/qt/qfile.sip b/sip/qt/qfile.sip index f11da7f..38d91c3 100644 --- a/sip/qt/qfile.sip +++ b/sip/qt/qfile.sip @@ -167,7 +167,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); @@ -196,7 +196,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); @@ -238,7 +238,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -272,7 +272,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); diff --git a/sip/qt/qfontmetrics.sip b/sip/qt/qfontmetrics.sip index 294aedb..9ab3d89 100644 --- a/sip/qt/qfontmetrics.sip +++ b/sip/qt/qfontmetrics.sip @@ -201,7 +201,7 @@ static int intListToArray(PyObject *pl,int **ap) for (i = 0; i < nint; ++i) { - *ip++ = PyInt_AsLong(PyList_GetItem(pl,i)); + *ip++ = PyLong_AsLong(PyList_GetItem(pl,i)); if (PyErr_Occurred()) { diff --git a/sip/qt/qimage.sip b/sip/qt/qimage.sip index dc2c85a..47f44a0 100644 --- a/sip/qt/qimage.sip +++ b/sip/qt/qimage.sip @@ -515,7 +515,7 @@ const char **PyTQt_qt_ListToArray(PyObject *lst); // TQPixmap. const char **PyTQt_qt_ListToArray(PyObject *lst) { - int nstr; + SIP_SSIZE_T nstr; const char **str, **sp; nstr = PyList_Size(lst); @@ -528,15 +528,16 @@ const char **PyTQt_qt_ListToArray(PyObject *lst) for (int i = 0; i < nstr; ++i) { - char *s; + PyObject *item = PyList_GetItem(lst, i); + const char *item_ascii = sipString_AsASCIIString(&item); - if ((s = PyString_AsString(PyList_GetItem(lst,i))) == NULL) + if (item_ascii == NULL) { sipFree((void *)str); return NULL; } - *sp++ = s; + *sp++ = item_ascii; } return str; diff --git a/sip/qt/qiodevice.sip b/sip/qt/qiodevice.sip index 2f1f491..4fbbb05 100644 --- a/sip/qt/qiodevice.sip +++ b/sip/qt/qiodevice.sip @@ -151,7 +151,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -171,15 +171,15 @@ public: if (buf == Py_None) sipRes = -1; - else if (!PyString_Check(buf)) + else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { - memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); - sipRes = PyString_GET_SIZE(buf); + memcpy(a0,SIPBytes_AS_STRING(buf),SIPBytes_GET_SIZE(buf)); + sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); @@ -211,7 +211,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -231,15 +231,15 @@ public: if (buf == Py_None) sipRes = -1L; - else if (!PyString_Check(buf)) + else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { - memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); - sipRes = PyString_GET_SIZE(buf); + memcpy(a0,SIPBytes_AS_STRING(buf),SIPBytes_GET_SIZE(buf)); + sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); @@ -281,7 +281,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -301,15 +301,15 @@ public: if (buf == Py_None) sipRes = -1; - else if (!PyString_Check(buf)) + else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { - memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); - sipRes = PyString_GET_SIZE(buf); + memcpy(a0,SIPBytes_AS_STRING(buf),SIPBytes_GET_SIZE(buf)); + sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); @@ -341,7 +341,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -361,15 +361,15 @@ public: if (buf == Py_None) sipRes = -1L; - else if (!PyString_Check(buf)) + else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { - memcpy(a0,PyString_AS_STRING(buf),PyString_GET_SIZE(buf)); - sipRes = PyString_GET_SIZE(buf); + memcpy(a0,SIPBytes_AS_STRING(buf),SIPBytes_GET_SIZE(buf)); + sipRes = SIPBytes_GET_SIZE(buf); } Py_DECREF(buf); diff --git a/sip/qt/qkeysequence.sip b/sip/qt/qkeysequence.sip index 8d8e32e..9293ffe 100644 --- a/sip/qt/qkeysequence.sip +++ b/sip/qt/qkeysequence.sip @@ -71,7 +71,7 @@ public: PyErr_Clear(); - PyInt_AsLong(sipPy); + PyLong_AsLong(sipPy); return !PyErr_Occurred(); } @@ -106,7 +106,7 @@ public: return sipGetState(sipTransferObj); } - int key = PyInt_AsLong(sipPy); + int key = (int)PyLong_AsLong(sipPy); Py_BEGIN_ALLOW_THREADS *sipCppPtr = new TQKeySequence(key); diff --git a/sip/qt/qlabel.sip b/sip/qt/qlabel.sip index 99ac8ac..a19541e 100644 --- a/sip/qt/qlabel.sip +++ b/sip/qt/qlabel.sip @@ -19,6 +19,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQLabel diff --git a/sip/qt/qlcdnumber.sip b/sip/qt/qlcdnumber.sip index c071f50..2127210 100644 --- a/sip/qt/qlcdnumber.sip +++ b/sip/qt/qlcdnumber.sip @@ -19,6 +19,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQLCDNumber diff --git a/sip/qt/qlistview.sip b/sip/qt/qlistview.sip index d7ef8a1..fa2a5ab 100644 --- a/sip/qt/qlistview.sip +++ b/sip/qt/qlistview.sip @@ -56,91 +56,6 @@ call takeItem() and then del(). %End -%If (- TQt_2_00) - -class TQListViewItem -{ -%TypeHeaderCode -#include -%End - -public: - TQListViewItem(TQListView * /TransferThis/); - TQListViewItem(TQListViewItem * /TransferThis/); - TQListViewItem(TQListView * /TransferThis/,TQListViewItem *); - TQListViewItem(TQListViewItem * /TransferThis/,TQListViewItem *); - - TQListViewItem(TQListView * /TransferThis/, - const char *,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0); - - TQListViewItem(TQListViewItem * /TransferThis/, - const char *,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0); - - TQListViewItem(TQListView * /TransferThis/,TQListViewItem *, - const char *,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0); - - TQListViewItem(TQListViewItem * /TransferThis/,TQListViewItem *, - const char *,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0, - const char * = 0,const char * = 0); - - virtual void insertItem(TQListViewItem * /Transfer/); - virtual void removeItem(TQListViewItem * /TransferBack/); - int height() const; - virtual void invalidateHeight(); - int totalHeight() const; - virtual int width(const TQFontMetrics &,const TQListView *,int) const; - void widthChanged(int = -1) const; - int depth() const; - virtual void setText(int,const char *); - virtual const char *text(int) const; - virtual void setPixmap(int,const TQPixmap &); - virtual const TQPixmap *pixmap(int) const; - virtual const char *key(int,bool) const; - virtual void sortChildItems(int,bool); - int childCount() const; - bool isOpen() const; - virtual void setOpen(bool); - virtual void setup(); - virtual void setSelected(bool); - bool isSelected() const; - virtual void paintCell(TQPainter *,const TQColorGroup &,int,int,int); - virtual void paintBranches(TQPainter *,const TQColorGroup &,int,int,int, - GUIStyle); - virtual void paintFocus(TQPainter *,const TQColorGroup &,const TQRect &); - TQListViewItem *firstChild() const; - TQListViewItem *nextSibling() const; - TQListViewItem *parent() const; - TQListViewItem *itemAbove(); - TQListViewItem *itemBelow(); - int itemPos() const; - TQListView *listView() const; - virtual void setSelectable(bool); - bool isSelectable() const; - virtual void setExpandable(bool); - bool isExpandable(); - void repaint() const; - -protected: - virtual void enforceSortOrder() const; - virtual void setHeight(int); - virtual void activate(); -}; - -%End - -%If (TQt_2_00 -) - class TQListViewItem : TQt { %TypeHeaderCode @@ -194,9 +109,7 @@ public: virtual const TQPixmap *pixmap(int) const; virtual TQString key(int,bool) const; -%If (TQt_3_0_0 -) virtual int compare(TQListViewItem *,int,bool) const; -%End virtual void sortChildItems(int,bool); int childCount() const; @@ -209,13 +122,7 @@ public: bool isSelected() const; virtual void paintCell(TQPainter *,const TQColorGroup &,int,int,int); -%If (- TQt_3_0_0) - virtual void paintBranches(TQPainter *,const TQColorGroup &,int,int,int, - GUIStyle); -%End -%If (TQt_3_0_0 -) virtual void paintBranches(TQPainter *,const TQColorGroup &,int,int,int); -%End virtual void paintFocus(TQPainter *,const TQColorGroup &,const TQRect &); TQListViewItem *firstChild() const; @@ -237,17 +144,9 @@ public: void repaint() const; -%If (TQt_2_1_0 - TQt_3_0_0) - void sort(); -%End -%If (TQt_3_0_0 -) virtual void sort(); -%End -%If (TQt_2_2_0 -) void moveItem(TQListViewItem *); -%End -%If (TQt_3_0_0 -) virtual void setDragEnabled(bool); virtual void setDropEnabled(bool); bool dragEnabled() const; @@ -268,17 +167,13 @@ public: virtual void setMultiLinesEnabled(bool); bool multiLinesEnabled() const; -%End protected: virtual void enforceSortOrder() const; virtual void setHeight(int); virtual void activate(); -%If (TQt_2_1_0 -) bool activatedPos(TQPoint &); -%End -%If (TQt_3_0_0 -) virtual void dropped(TQDropEvent *); virtual void dragEntered(); virtual void dragLeft(); @@ -286,11 +181,8 @@ protected: virtual void cancelRename(int); void ignoreDoubleClick(); -%End }; -%End - class TQListView : TQScrollView { @@ -299,44 +191,22 @@ class TQListView : TQScrollView %End public: -%If (TQt_2_2_0 - TQt_3_0_0) - TQListView(TQWidget * /TransferThis/,const char *,WFlags); -%End -%If (- TQt_3_0_0) - TQListView(TQWidget * /TransferThis/ = 0,const char * = 0); -%End -%If (TQt_3_0_0 -) TQListView(TQWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0); -%End int treeStepSize() const; virtual void setTreeStepSize(int); virtual void insertItem(TQListViewItem * /Transfer/); -%If (TQt_2_00 -) virtual void takeItem(TQListViewItem * /TransferBack/); -%End -%If (- TQt_3_0_0) - virtual void clear(); -%End TQHeader *header() const; -%If (- TQt_2_00) - virtual int addColumn(const char *,int = -1); - virtual void setColumnText(int,const char *); - const char *columnText(int) const; -%End -%If (TQt_2_00 -) virtual int addColumn(const TQString &,int = -1); virtual int addColumn(const TQIconSet &,const TQString &,int = -1); -%If (TQt_2_1_0 -) void removeColumn(int); -%End virtual void setColumnText(int,const TQString &); virtual void setColumnText(int,const TQIconSet &,const TQString &); TQString columnText(int) const; -%End virtual void setColumnWidth(int,int); int columnWidth(int) const; @@ -348,9 +218,7 @@ public: virtual void setColumnWidthMode(int,WidthMode); WidthMode columnWidthMode(int) const; -%If (TQt_2_1_0 -) int columns() const; -%End virtual void setColumnAlignment(int,int); int columnAlignment(int) const; @@ -368,7 +236,6 @@ public: virtual void setMultiSelection(bool); bool isMultiSelection() const; -%If (TQt_2_1_0 -) enum SelectionMode { Single, Multi, @@ -378,19 +245,12 @@ public: void setSelectionMode(SelectionMode); SelectionMode selectionMode() const; -%End -%If (TQt_2_1_0 -) virtual void clearSelection(); -%End virtual void setSelected(TQListViewItem *,bool); -%If (TQt_3_2_0 -) void setSelectionAnchor(TQListViewItem *); -%End bool isSelected(TQListViewItem *) const; -%If (TQt_2_1_0 -) TQListViewItem *selectedItem() const; -%End virtual void setOpen(TQListViewItem *,bool); bool isOpen(TQListViewItem *) const; @@ -398,9 +258,7 @@ public: TQListViewItem *currentItem() const; TQListViewItem *firstChild() const; -%If (TQt_3_0_0 -) TQListViewItem *lastItem() const; -%End int childCount() const; @@ -414,43 +272,22 @@ public: bool rootIsDecorated() const; virtual void setSorting(int,bool = 1); -%If (TQt_3_1_0 -) int sortColumn() const; -%End -%If (TQt_3_2_0 -) void setSortColumn(int); SortOrder sortOrder() const; void setSortOrder(SortOrder); -%End -%If (TQt_3_0_0 -) virtual void sort(); -%End -%If (TQt_2_1_0 - TQt_3_0_0) - void sort(); -%End -%If (- TQt_2_00) - void setStyle(GUIStyle); - void setFont(const TQFont &); - void setPalette(const TQPalette &); -%End -%If (TQt_2_00 -) virtual void setFont(const TQFont &); virtual void setPalette(const TQPalette &); -%End bool eventFilter(TQObject *,TQEvent *); TQSize sizeHint() const; -%If (TQt_2_00 -) TQSize minimumSizeHint() const; -%End -%If (TQt_2_1_0 -) void setShowSortIndicator(bool); bool showSortIndicator() const; -%End -%If (TQt_3_0_0 -) virtual void setShowToolTips(bool); bool showToolTips() const; @@ -474,83 +311,51 @@ public: virtual void setDefaultRenameAction(RenameAction); RenameAction defaultRenameAction() const; bool isRenaming() const; -%End -%If (TQt_3_2_0 -) void hideColumn(int); -%End public slots: -%If (TQt_3_0_0 -) virtual void clear(); -%End -%If (TQt_2_1_0 -) void invertSelection(); void selectAll(bool); void setContentsPos(int,int); -%End void triggerUpdate(); -%If (TQt_3_2_0 -) void adjustColumn(int); -%End signals: void selectionChanged(); void selectionChanged(TQListViewItem *); void currentChanged(TQListViewItem *); -%If (TQt_2_1_0 -) void clicked(TQListViewItem *); void clicked(TQListViewItem *,const TQPoint &,int); void pressed(TQListViewItem *); void pressed(TQListViewItem *,const TQPoint &,int); -%End void doubleClicked(TQListViewItem *); -%If (TQt_3_2_0 -) void doubleClicked(TQListViewItem *,const TQPoint &,int); -%End void returnPressed(TQListViewItem *); -%If (TQt_3_0_0 -) void spacePressed(TQListViewItem *); -%End void rightButtonClicked(TQListViewItem *,const TQPoint &,int); void rightButtonPressed(TQListViewItem *,const TQPoint &,int); -%If (TQt_2_1_0 -) void mouseButtonPressed(int,TQListViewItem *,const TQPoint &,int); void mouseButtonClicked(int,TQListViewItem *,const TQPoint &,int); -%End -%If (TQt_3_0_0 -) void contextMenuRequested(TQListViewItem *,const TQPoint &,int); -%End -%If (TQt_2_1_0 -) void onItem(TQListViewItem *); void onViewport(); void expanded(TQListViewItem *); void collapsed(TQListViewItem *); -%End -%If (TQt_3_0_0 -) void dropped(TQDropEvent *); void itemRenamed(TQListViewItem *,int,const TQString &); void itemRenamed(TQListViewItem *,int); -%End protected: -%If (- TQt_2_00) - void mousePressEvent(TQMouseEvent *); - void mouseReleaseEvent(TQMouseEvent *); - void mouseMoveEvent(TQMouseEvent *); - void mouseDoubleClickEvent(TQMouseEvent *); -%End -%If (TQt_2_00 -) void contentsMousePressEvent(TQMouseEvent *); void contentsMouseReleaseEvent(TQMouseEvent *); void contentsMouseMoveEvent(TQMouseEvent *); void contentsMouseDoubleClickEvent(TQMouseEvent *); -%End -%If (TQt_3_0_0 -) void contentsContextMenuEvent(TQContextMenuEvent *); void contentsDragEnterEvent(TQDragEnterEvent *); void contentsDragMoveEvent(TQDragMoveEvent *); @@ -558,7 +363,6 @@ protected: void contentsDropEvent(TQDropEvent *); virtual TQDragObject *dragObject(); virtual void startDrag(); -%End void focusInEvent(TQFocusEvent *); void focusOutEvent(TQFocusEvent *); @@ -566,37 +370,22 @@ protected: void keyPressEvent(TQKeyEvent *); void resizeEvent(TQResizeEvent *); -%If (TQt_3_0_0 -) void viewportResizeEvent(TQResizeEvent *); -%End -%If (TQt_2_00 -) void showEvent(TQShowEvent *); -%End void drawContentsOffset(TQPainter *,int,int,int,int,int,int); virtual void paintEmptyArea(TQPainter *,const TQRect &); -%If (TQt_2_00 -) void styleChange(TQStyle &); -%End -%If (- TQt_3_0_0) - void enabledChange(bool); -%End -%If (TQt_3_0_0 -) void windowActivationChange(bool); -%End protected slots: void updateContents(); -%If (TQt_2_00 -) void doAutoScroll(); -%End private: -%If (TQt_2_1_0 -) TQListView(const TQWidget &); -%End }; @@ -611,21 +400,16 @@ public: RadioButton, CheckBox, Controller, -%If (TQt_3_2_0 -) RadioButtonController, CheckBoxController, -%End }; -%If (TQt_3_2_0 -) enum ToggleState { Off, NoChange, On }; -%End -%If (TQt_3_2_0 -) TQCheckListItem(TQCheckListItem * /TransferThis/,const TQString &, Type = RadioButtonController); TQCheckListItem(TQCheckListItem * /TransferThis/,TQListViewItem *, @@ -638,91 +422,36 @@ public: Type = RadioButtonController); TQCheckListItem(TQListView * /TransferThis/,TQListViewItem *, const TQString &,Type = RadioButtonController); -%End -%If (TQt_2_00 - TQt_3_2_0) - TQCheckListItem(TQCheckListItem * /TransferThis/,const TQString &, - Type = Controller); -%If (TQt_3_1_0 -) - TQCheckListItem(TQCheckListItem * /TransferThis/,TQListViewItem *, - const TQString &,Type = Controller); -%End - TQCheckListItem(TQListViewItem * /TransferThis/,const TQString &, - Type = Controller); -%If (TQt_3_1_0 -) - TQCheckListItem(TQListViewItem * /TransferThis/,TQListViewItem *, - const TQString &,Type = Controller); -%End - TQCheckListItem(TQListView * /TransferThis/,const TQString &, - Type = Controller); -%If (TQt_3_1_0 -) - TQCheckListItem(TQListView * /TransferThis/,TQListViewItem *, - const TQString &,Type = Controller); -%End -%End -%If (TQt_2_00 -) TQCheckListItem(TQListViewItem * /TransferThis/,const TQString &, const TQPixmap &); TQCheckListItem(TQListView * /TransferThis/,const TQString &, const TQPixmap &); -%End -%If (- TQt_2_00) - TQCheckListItem(TQCheckListItem * /TransferThis/,const char *, - Type = Controller); - TQCheckListItem(TQListView * /TransferThis/,const char *, - Type = Controller); - TQCheckListItem(TQListViewItem * /TransferThis/,const char *, - const TQPixmap &); - TQCheckListItem(TQListView * /TransferThis/,const char *, - const TQPixmap &); -%End void paintCell(TQPainter *,const TQColorGroup &,int,int,int); -%If (TQt_2_00 -) virtual void paintFocus(TQPainter *,const TQColorGroup &,const TQRect &); -%End int width(const TQFontMetrics &,const TQListView *,int) const; void setup(); -%If (- TQt_2_00) - void setOn(bool); -%End -%If (TQt_2_00 -) virtual void setOn(bool); -%End bool isOn() const; Type type() const; -%If (- TQt_2_00) - const char *text() const; - const char *text(int) const; -%End -%If (TQt_2_00 -) TQString text() const; TQString text(int) const; -%End -%If (TQt_3_2_0 -) void setTristate(bool); bool isTristate() const; ToggleState state() const; void setState(ToggleState); -%End -%If (TQt_3_0_0 -) int rtti() const; -%End protected: -%If (- TQt_3_0_0) - void paintBranches(TQPainter *,const TQColorGroup &,int,int,int,GUIStyle); -%End void activate(); void turnOffChild(); virtual void stateChange(bool); }; -%If (TQt_2_00 -) - class TQListViewItemIterator { %TypeHeaderCode @@ -730,7 +459,6 @@ class TQListViewItemIterator %End public: -%If (TQt_3_2_0 -) enum IteratorFlag { Visible, Invisible, @@ -747,24 +475,17 @@ public: Checked, NotChecked }; -%End TQListViewItemIterator(); TQListViewItemIterator(TQListViewItem *); -%If (TQt_3_2_0 -) TQListViewItemIterator(TQListViewItem *,int); -%End TQListViewItemIterator(const TQListViewItemIterator &); TQListViewItemIterator(TQListView *); -%If (TQt_3_2_0 -) TQListViewItemIterator(TQListView *,int); -%End TQListViewItemIterator &operator+=(int); TQListViewItemIterator &operator-=(int); TQListViewItem *current() const; }; - -%End diff --git a/sip/qt/qmainwindow.sip b/sip/qt/qmainwindow.sip index 4bdb3b3..342d8da 100644 --- a/sip/qt/qmainwindow.sip +++ b/sip/qt/qmainwindow.sip @@ -19,6 +19,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQMainWindow diff --git a/sip/qt/qmemarray.sip b/sip/qt/qmemarray.sip index 5fc5d02..d7a4a7b 100644 --- a/sip/qt/qmemarray.sip +++ b/sip/qt/qmemarray.sip @@ -50,7 +50,7 @@ converted to and from Python lists of the type. // Get it. for (uint i = 0; i < sipCpp -> size(); ++i) - if (PyList_SetItem(l,i,PyInt_FromLong((long)sipCpp -> at(i))) < 0) + if (PyList_SetItem(l,i,PyLong_FromLong((long)sipCpp -> at(i))) < 0) { Py_DECREF(l); @@ -72,7 +72,7 @@ converted to and from Python lists of the type. for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) { - (*qma)[i] = (int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i)); + (*qma)[i] = (int)PyLong_AsLong(PyList_GET_ITEM(sipPy,i)); if (PyErr_Occurred() != NULL) { diff --git a/sip/qt/qobject.sip b/sip/qt/qobject.sip index f039534..57b7760 100644 --- a/sip/qt/qobject.sip +++ b/sip/qt/qobject.sip @@ -403,7 +403,11 @@ public: // the true (Python) class name. SIP_PYOBJECT className() const; %MethodCode +#if PY_MAJOR_VERSION >= 3 + sipRes = PyUnicode_FromString(sipSelf->ob_type->tp_name); +#else sipRes = sipClassName(sipSelf); +#endif %End %If (- TQt_3_0_0) @@ -425,49 +429,69 @@ public: // trUtf8() methods for a Python sub-class instance in the sub-class's // ctor. - TQString tr(const char *,const char * = 0); + TQString tr(SIP_PYOBJECT sourceText /TypeHint="str"/,const char * = 0); %MethodCode - PyObject *nmobj; + if (tqApp) + { + const char *source = PyTQt_qt_encode(&a0, TQApplication::DefaultCodec); - if ((nmobj = sipClassName(sipSelf)) == NULL) - sipIsErr = 1; + if (source) + { + sipRes = new TQString(tqApp->translate(Py_TYPE(sipSelf)->tp_name, source, + a1, TQApplication::DefaultCodec)); + Py_DECREF(a0); + } + else + { + sipIsErr = 1; + } + } else { - char *cname = PyString_AsString(nmobj); + const char *source = sipString_AsLatin1String(&a0); - Py_BEGIN_ALLOW_THREADS - - if (cname && tqApp) - sipRes = new TQString(tqApp -> translate(cname,a0,a1,TQApplication::DefaultCodec)); + if (source) + { + sipRes = new TQString(QString::fromLatin1(source)); + Py_DECREF(a0); + } else - sipRes = new TQString(TQString::fromLatin1(a0)); - - Py_END_ALLOW_THREADS - - Py_DECREF(nmobj); + { + sipIsErr = 1; + } } %End - TQString trUtf8(const char *,const char * = 0); + TQString trUtf8(SIP_PYOBJECT sourceText /TypeHint="str"/,const char * = 0); %MethodCode - PyObject *nmobj; + if (tqApp) + { + const char *source = PyTQt_qt_encode(&a0, TQApplication::DefaultCodec); - if ((nmobj = sipClassName(sipSelf)) == NULL) - sipIsErr = 1; + if (source) + { + sipRes = new TQString(tqApp->translate(Py_TYPE(sipSelf)->tp_name, source, + a1, TQApplication::UnicodeUTF8)); + Py_DECREF(a0); + } + else + { + sipIsErr = 1; + } + } else { - char *cname = PyString_AsString(nmobj); - - Py_BEGIN_ALLOW_THREADS + const char *source = sipString_AsLatin1String(&a0); - if (cname && tqApp) - sipRes = new TQString(tqApp -> translate(cname,a0,a1,TQApplication::UnicodeUTF8)); + if (source) + { + sipRes = new TQString(TQString::fromLatin1(source)); + Py_DECREF(a0); + } else - sipRes = new TQString(TQString::fromUtf8(a0)); - - Py_END_ALLOW_THREADS - - Py_DECREF(nmobj); + { + sipIsErr = 1; + } } %End %End @@ -811,7 +835,11 @@ public: // it we can ignore it. SIP_PYOBJECT className() const; %MethodCode +#if PY_MAJOR_VERSION >= 3 + sipRes = PyUnicode_FromString(sipSelf->ob_type->tp_name); +#else sipRes = sipClassName(sipSelf); +#endif %End bool isA(const char *) const; @@ -866,7 +894,7 @@ private: %End -SIP_PYOBJECT SLOT(const char *); +SIP_PYOBJECT SLOT(const char * /Encoding="ASCII"/) /TypeHint="QT_SLOT"/; %MethodCode if (!a0) { @@ -877,11 +905,11 @@ SIP_PYOBJECT SLOT(const char *); { int len = strlen(a0); - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) + if ((sipRes = SIPBytes_FromStringAndSize(NULL,1 + len)) == NULL) sipIsErr = 1; else { - char *dp = PyString_AS_STRING(sipRes); + char *dp = SIPBytes_AS_STRING(sipRes); *dp++ = '1'; @@ -891,7 +919,7 @@ SIP_PYOBJECT SLOT(const char *); %End -SIP_PYOBJECT SIGNAL(const char *); +SIP_PYOBJECT SIGNAL(const char * /Encoding="ASCII"/) /TypeHint="QT_SIGNAL"/; %MethodCode if (!a0) { @@ -902,11 +930,11 @@ SIP_PYOBJECT SIGNAL(const char *); { int len = strlen(a0); - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) + if ((sipRes = SIPBytes_FromStringAndSize(NULL,1 + len)) == NULL) sipIsErr = 1; else { - char *dp = PyString_AS_STRING(sipRes); + char *dp = SIPBytes_AS_STRING(sipRes); *dp++ = '2'; @@ -916,7 +944,7 @@ SIP_PYOBJECT SIGNAL(const char *); %End -SIP_PYOBJECT PYSIGNAL(const char *); +SIP_PYOBJECT PYSIGNAL(const char * /Encoding="ASCII"/); %MethodCode if (!a0) { @@ -927,11 +955,11 @@ SIP_PYOBJECT PYSIGNAL(const char *); { int len = strlen(a0); - if ((sipRes = PyString_FromStringAndSize(NULL,1 + len)) == NULL) + if ((sipRes = SIPBytes_FromStringAndSize(NULL,1 + len)) == NULL) sipIsErr = 1; else { - char *dp = PyString_AS_STRING(sipRes); + char *dp = SIPBytes_AS_STRING(sipRes); *dp++ = '9'; @@ -992,16 +1020,30 @@ extern "C" { // The meta-type for PyTQt classes. It is just a marker type so that we can // safely cast to get access to PyTQt3-specific data structures. PyTypeObject pyqtWrapperType_Type = { +#if PY_MAJOR_VERSION >= 3 + PyVarObject_HEAD_INIT(NULL, 0) +#else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ +#endif "qt.pyqtWrapperType", /* tp_name */ sizeof (sipWrapperType), /* tp_basicsize */ 0, /* tp_itemsize */ 0, /* tp_dealloc */ +#if PY_VERSION_HEX >= 0x03080000 + 0, /* tp_vectorcall_offset */ +#else 0, /* tp_print */ +#endif 0, /* tp_getattr */ 0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03050000 + 0, /* tp_as_async */ +#elif PY_VERSION_HEX >= 0x03010000 + 0, /* tp_reserved */ +#else 0, /* tp_compare */ +#endif 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -1042,6 +1084,15 @@ PyTypeObject pyqtWrapperType_Type = { #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version_tag */ #endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#if PY_VERSION_HEX >= 0x03080000 + 0, /* tp_vectorcall */ +#endif +#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION == 8 + 0, /* tp_print (deprecated) */ +#endif }; @@ -1196,16 +1247,30 @@ static sipWrapperType pyqtWrapper_Type = { { #endif { +#if PY_MAJOR_VERSION >= 3 + PyVarObject_HEAD_INIT(&pyqtWrapperType_Type, 0) +#else PyObject_HEAD_INIT(&pyqtWrapperType_Type) 0, /* ob_size */ +#endif "qt.pyqtWrapper", /* tp_name */ sizeof (pyqtWrapper), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)pyqtWrapper_dealloc, /* tp_dealloc */ +#if PY_VERSION_HEX >= 0x03080000 + 0, /* tp_vectorcall_offset */ +#else 0, /* tp_print */ +#endif 0, /* tp_getattr */ 0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03050000 + 0, /* tp_as_async */ +#elif PY_VERSION_HEX >= 0x03010000 + 0, /* tp_reserved */ +#else 0, /* tp_compare */ +#endif 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -1245,6 +1310,15 @@ static sipWrapperType pyqtWrapper_Type = { 0, /* tp_del */ #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version_tag */ +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#if PY_VERSION_HEX >= 0x03080000 + 0, /* tp_vectorcall */ +#endif +#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION == 8 + 0, /* tp_print (deprecated) */ #endif }, #if !defined(STACKLESS) @@ -1500,17 +1574,17 @@ bool UniversalSlot::tqt_invoke(int id, TQUObject *qargs) case char_sat: case schar_sat: case uchar_sat: - arg = PyString_FromStringAndSize((char *)static_QUType_ptr.get(qargs), 1); + arg = SIPBytes_FromStringAndSize((char *)static_QUType_ptr.get(qargs), 1); break; case string_sat: case sstring_sat: case ustring_sat: - arg = PyString_FromString((char *)static_QUType_ptr.get(qargs)); + arg = SIPBytes_FromString((char *)static_QUType_ptr.get(qargs)); break; case short_sat: - arg = PyInt_FromLong(*(short *)static_QUType_ptr.get(qargs)); + arg = PyLong_FromLong(*(short *)static_QUType_ptr.get(qargs)); break; case ushort_sat: @@ -1519,9 +1593,9 @@ bool UniversalSlot::tqt_invoke(int id, TQUObject *qargs) case int_sat: if (qv) - arg = PyInt_FromLong(qv -> asInt()); + arg = PyLong_FromLong(qv -> asInt()); else - arg = PyInt_FromLong(static_QUType_int.get(qargs)); + arg = PyLong_FromLong(static_QUType_int.get(qargs)); break; case uint_sat: @@ -1557,7 +1631,7 @@ bool UniversalSlot::tqt_invoke(int id, TQUObject *qargs) break; case bool_sat: - arg = PyInt_FromLong(static_QUType_bool.get(qargs)); + arg = PyLong_FromLong(static_QUType_bool.get(qargs)); break; case void_sat: @@ -1628,7 +1702,14 @@ static void *sipTQtCreateUniversalSlot(sipWrapper *tx, const char *sig, pyqt3SlotConnection conn; /* Initialise the connection. */ - conn.sc_transmitter = (tx ? sipGetCppPtr((sipSimpleWrapper *)tx, 0) : 0); + if (sipGetAddress(&tx->super) == NULL) + { + conn.sc_transmitter = 0; + } + else + { + conn.sc_transmitter = (tx ? sipGetCppPtr(&tx->super, 0) : 0); + } /* Save the real slot. */ if (sipSaveSlot(&conn.sc_slot, rxObj, slot) < 0) diff --git a/sip/qt/qpainter.sip b/sip/qt/qpainter.sip index 15ef70b..17c359f 100644 --- a/sip/qt/qpainter.sip +++ b/sip/qt/qpainter.sip @@ -289,7 +289,7 @@ public: do { - if (PyList_SetItem(sipRes,len,PyInt_FromLong((long)*tp)) < 0) + if (PyList_SetItem(sipRes,len,PyLong_FromLong((long)*tp)) < 0) { Py_DECREF(sipRes); sipIsErr = 1; @@ -316,11 +316,11 @@ public: { // Convert the list. - int *tp = tabs; + long *tp = tabs; for (int i = 0; i < len; ++i) { - *tp++ = (int)PyInt_AsLong(PyList_GET_ITEM(a0,i)); + *tp++ = PyLong_AsLong(PyList_GET_ITEM(a0,i)); if (PyErr_Occurred() != NULL) { @@ -612,7 +612,7 @@ public: do { - if (PyList_SetItem(sipRes,len,PyInt_FromLong((long)*tp)) < 0) + if (PyList_SetItem(sipRes,len,PyLong_FromLong((long)*tp)) < 0) { Py_DECREF(sipRes); sipIsErr = 1; @@ -643,7 +643,7 @@ public: for (int i = 0; i < len; ++i) { - *tp++ = (int)PyInt_AsLong(PyList_GET_ITEM(a0,i)); + *tp++ = (int)PyLong_AsLong(PyList_GET_ITEM(a0,i)); if (PyErr_Occurred() != NULL) { diff --git a/sip/qt/qpair.sip b/sip/qt/qpair.sip index 22de053..5065d2a 100644 --- a/sip/qt/qpair.sip +++ b/sip/qt/qpair.sip @@ -51,8 +51,8 @@ converted to and from Python tuples of two elements. // Fill it. - PyTuple_SET_ITEM(t,0,PyInt_FromLong((long)sipCpp -> first)); - PyTuple_SET_ITEM(t,1,PyInt_FromLong((long)sipCpp -> second)); + PyTuple_SET_ITEM(t,0,PyLong_FromLong((long)sipCpp -> first)); + PyTuple_SET_ITEM(t,1,PyLong_FromLong((long)sipCpp -> second)); return t; %End @@ -65,8 +65,8 @@ converted to and from Python tuples of two elements. PyErr_Clear(); - int fst = (int)PyInt_AsLong(PyTuple_GET_ITEM(sipPy,0)); - int sec = (int)PyInt_AsLong(PyTuple_GET_ITEM(sipPy,1)); + int fst = (int)PyLong_AsLong(PyTuple_GET_ITEM(sipPy,0)); + int sec = (int)PyLong_AsLong(PyTuple_GET_ITEM(sipPy,1)); if (PyErr_Occurred() != NULL) { diff --git a/sip/qt/qpointarray.sip b/sip/qt/qpointarray.sip index 959963a..5112a2f 100644 --- a/sip/qt/qpointarray.sip +++ b/sip/qt/qpointarray.sip @@ -109,7 +109,7 @@ static TQCOORD *getPoints(int nrpnts,PyObject *pntlist) for (int i = 0; i < nrpnts; ++i) { - *pp++ = (TQCOORD)PyInt_AsLong(PyList_GetItem(pntlist,i)); + *pp++ = (TQCOORD)PyLong_AsLong(PyList_GetItem(pntlist,i)); if (PyErr_Occurred() != NULL) { diff --git a/sip/qt/qpushbutton.sip b/sip/qt/qpushbutton.sip index 69e961d..4fb26b1 100644 --- a/sip/qt/qpushbutton.sip +++ b/sip/qt/qpushbutton.sip @@ -19,6 +19,7 @@ // PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +%DefaultEncoding "UTF-8" %ExportedDoc TQPushButton diff --git a/sip/qt/qstring.sip b/sip/qt/qstring.sip index ab30fa4..581bb0a 100644 --- a/sip/qt/qstring.sip +++ b/sip/qt/qstring.sip @@ -195,53 +195,8 @@ public: static const TQChar replacement; static const TQChar byteOrderMark; static const TQChar byteOrderSwapped; -%If (TQt_2_2_0 -) static const TQChar nbsp; -%End -%If (- TQt_3_0_0) - enum Category { - NoCategory, - - Mark_NonSpacing, - Mark_SpacingCombining, - Mark_Enclosing, - - Number_DecimalDigit, - Number_Letter, - Number_Other, - - Separator_Space, - Separator_Line, - Separator_Paragraph, - - Other_Control, - Other_Format, - Other_Surrogate, - Other_PrivateUse, - Other_NotAssigned, - - Letter_Uppercase, - Letter_Lowercase, - Letter_Titlecase, - Letter_Modifier, - Letter_Other, - - Punctuation_Connector, - Punctuation_Dask, - Punctuation_Open, - Punctuation_Close, - Punctuation_InitialQuote, - Punctuation_FinalQuote, - Punctuation_Other, - - Symbol_Math, - Symbol_Currency, - Symbol_Modifier, - Symbol_Other - }; -%End -%If (TQt_3_0_0 -) enum Category { NoCategory, @@ -282,24 +237,7 @@ public: Symbol_Modifier, Symbol_Other }; -%End -%If (- TQt_3_0_0) - enum Direction { - DirL, - DirR, - DirEN, - DirES, - DirET, - DirAN, - DirCS, - DirB, - DirS, - DirWS, - DirON - }; -%End -%If (TQt_3_0_0 -) enum Direction { DirL, DirR, @@ -321,7 +259,6 @@ public: DirNSM, DirBN }; -%End enum Decomposition { Single, @@ -351,7 +288,6 @@ public: Center }; -%If (TQt_3_0_0 -) enum CombiningClass { Combining_BelowLeftAttached, Combining_BelowAttached, @@ -375,7 +311,6 @@ public: Combining_DoubleAbove, Combining_IotaSubscript }; -%End int digitValue() const; TQChar lower() const; @@ -385,19 +320,10 @@ public: Direction direction() const; Joining joining() const; bool mirrored() const; -%If (TQt_2_1_0 -) TQChar mirroredChar() const; -%End -%If (- TQt_3_0_0) - TQString decomposition() const; -%End -%If (TQt_3_0_0 -) const TQString &decomposition() const; -%End Decomposition decompositionTag() const; -%If (TQt_3_0_0 -) unsigned char combiningClass() const; -%End char latin1() const; ushort unicode() const; @@ -409,22 +335,16 @@ public: bool isMark() const; bool isLetter() const; bool isNumber() const; -%If (TQt_2_1_0 -) bool isLetterOrNumber() const; -%End bool isDigit() const; -%If (TQt_3_0_0 -) bool isSymbol() const; -%End // uchar& cell(); // uchar& row(); uchar cell() const; uchar row() const; -%If (TQt_3_0_0 -) void setCell(uchar); void setRow(uchar); -%End static bool networkOrdered(); }; @@ -447,6 +367,7 @@ class TQString { %TypeHeaderCode #include +#include %End public: @@ -457,18 +378,14 @@ public: // TQString(const TQChar *,uint); // TQString(const char *); -%If (TQt_2_1_0 -) // This is how we implement TQUrl::operator TQString() const. TQString(const TQUrl &); -%End -%If (TQt_3_0_0 -) // This is how we implement TQKeySequence::operator TQString() const. TQString(const TQKeySequence &); // This is how we implement TQUuid::operator TQString() const. TQString(const TQUuid &); -%End static const TQString null; @@ -476,20 +393,13 @@ public: bool isEmpty() const; uint length() const; void truncate(uint); -%If (- TQt_3_0_0) - void fill(TQChar,int = -1); -%End -%If (TQt_3_0_0 -) TQString &fill(TQChar,int = -1); -%End TQString copy() const; TQString arg(int /Constrained/,int = 0,int = 10) const; TQString arg(double /Constrained/,int = 0,char = 'g',int = -1) const; -%If (TQt_3_2_0 -) // TQString arg(TQ_LLONG,int = 0,int = 10) const; // TQString arg(TQ_ULLONG,int = 0,int = 10) const; -%End TQString arg(long,int = 0,int = 10) const; TQString arg(ulong,int = 0,int = 10) const; // TQString arg(uint,int = 0,int = 10) const; @@ -498,12 +408,10 @@ public: TQString arg(char,int = 0) const; TQString arg(TQChar,int = 0) const; TQString arg(const TQString&,int = 0) const; -%If (TQt_3_2_0 -) TQString arg(const TQString &,const TQString &) const; TQString arg(const TQString &,const TQString &,const TQString &) const; TQString arg(const TQString &,const TQString &,const TQString &, const TQString &) const; -%End // TQString &sprintf(const char *,...); @@ -523,7 +431,6 @@ public: int contains(const TQString &,bool = 1) const; int contains(const TQRegExp &) const; -%If (TQt_3_0_0 -) enum SectionFlags { SectionDefault, SectionSkipEmpty, @@ -540,7 +447,6 @@ public: int = SectionDefault) const; TQString section(const TQRegExp &,int,int = 0xffffffff, int = SectionDefault) const; -%End TQString left(uint) const; TQString right(uint) const; @@ -553,56 +459,36 @@ public: TQString simplifyWhiteSpace() const; TQString &insert(uint,const TQString &); -%If (TQt_3_2_0 -) TQString &insert(uint,const TQByteArray &); // TQString &insert(uint,const char *); -%End TQString &insert(uint,TQChar *,uint); TQString &insert(uint,TQChar); TQString &insert(uint,char); TQString &append(char); -%If (TQt_2_2_0 -) TQString &append(TQChar); -%End TQString &append(const TQString &); TQString &prepend(char); -%If (TQt_2_2_0 -) TQString &prepend(TQChar); -%End TQString &prepend(const TQString &); TQString &remove(uint,uint); -%If (TQt_3_1_0 -) TQString &remove(const TQString &); -%If (TQt_3_2_0 -) TQString &remove(const TQString &,bool); -%End TQString &remove(TQChar); TQString &remove(char); TQString &remove(const TQRegExp &); -%End TQString &replace(uint,uint,const TQString &); TQString &replace(uint,uint,const TQChar *,uint); -%If (TQt_3_1_0 -) TQString &replace(uint,uint,TQChar); TQString &replace(uint,uint,char); TQString &replace(TQChar,const TQString &); -%If (TQt_3_2_0 -) TQString &replace(TQChar,const TQString &,bool); -%End TQString &replace(char,const TQString &); -%If (TQt_3_2_0 -) TQString &replace(char,const TQString &,bool); -%End TQString &replace(const TQString &,const TQString &); -%If (TQt_3_2_0 -) TQString &replace(const TQString &,const TQString &,bool); -%End -%End TQString &replace(const TQRegExp &,const TQString &); -%If (TQt_3_1_0 -) TQString &replace(TQChar,TQChar); -%End short toShort(bool * = 0,int = 10) const; ushort toUShort(bool * = 0,int = 10) const; @@ -610,10 +496,8 @@ public: uint toUInt(bool * = 0,int = 10) const; long toLong(bool * = 0,int = 10) const; ulong toULong(bool * = 0,int = 10) const; -%If (TQt_3_2_0 -) // TQ_LLONG toLongLong(bool * = 0,int = 10) const; // TQ_ULLONG toULongLong(bool * = 0,int = 10) const; -%End float toFloat(bool * = 0) const; double toDouble(bool * = 0) const; @@ -624,28 +508,22 @@ public: // TQString &setNum(uint,int = 10); TQString &setNum(long,int = 10); TQString &setNum(ulong,int = 10); -%If (TQt_3_2_0 -) // TQString &setNum(TQ_LLONG,int = 10); // TQString &setNum(TQ_ULLONG,int = 10); -%End // TQString &setNum(float,char = 'g',int = 6); static TQString number(int /Constrained/,int = 10); static TQString number(double /Constrained/,char = 'g',int = 6); static TQString number(long,int = 10); static TQString number(ulong,int = 10); -%If (TQt_3_2_0 -) // static TQString number(TQ_LLONG,int = 10); // static TQString number(TQ_ULLONG,int = 10); -%End // static TQString number(uint,int = 10); void setExpand(uint,TQChar); TQString &operator+=(const TQString &); -%If (TQt_3_3_0 -) TQString &operator+=(const TQByteArray &); -%End TQString &operator+=(TQChar); //TQString &operator+=(char); @@ -673,9 +551,7 @@ public: // TQChar &ref(uint); // const TQChar *unicode() const; const char *ascii() const; -%If (TQt_3_1_0 -) static TQString fromAscii(const char *,int = -1); -%End const char *latin1() const; static TQString fromLatin1(const char *,int = -1); TQCString utf8() const; @@ -683,62 +559,34 @@ public: TQCString local8Bit() const; static TQString fromLocal8Bit(const char *,int = -1); -%If (TQt_3_1_0 -) // static TQString fromUcs2(const unsigned short *); // const unsigned short *ucs2() const; -%End -%If (TQt_2_1_0 -) // TQString &setUnicode(const TQChar *,uint); // TQString &setUnicodeCodes(const ushort *,uint); -%End -%If (TQt_3_1_0 -) TQString &setAscii(const char *,int = -1); -%End -%If (TQt_2_1_0 -) TQString &setLatin1(const char *,int = -1); -%End int compare(const TQString &) const; static int compare(const TQString &,const TQString &); -%If (TQt_3_0_0 -) int localeAwareCompare(const TQString &) const; static int localeAwareCompare(const TQString &,const TQString &); -%End void compose(); -%If (- TQt_3_0_0) - TQChar::Direction basicDirection(); - TQString visual(int = 0,int = -1); -%End -%If (TQt_2_2_0 -) bool startsWith(const TQString &) const; -%End -%If (TQt_3_2_0 -) bool startsWith(const TQString &,bool) const; -%End -%If (TQt_3_0_0 -) bool endsWith(const TQString &) const; -%End -%If (TQt_3_2_0 -) bool endsWith(const TQString &,bool) const; -%End -%If (TQt_3_0_0 -) void setLength(uint); -%End -%If (TQt_3_2_0 -) uint capacity() const; void reserve(uint); void squeeze(); -%End -%If (TQt_3_0_0 -) bool simpleText() const; bool isRightToLeft() const; -%End // Force the numeric interpretation so that str + TQString gets handled // as we want. @@ -792,81 +640,12 @@ public: SIP_PYOBJECT __unicode__(); %MethodCode -#if PY_VERSION_HEX >= 0x01060000 - sipRes = TQStringToPyUnicode(sipCpp); -#else - Py_INCREF(Py_None); - sipRes = Py_None; -#endif + sipRes = PyTQt_qt_PyObject_FromTQString(sipCpp); %End SIP_PYOBJECT __str__(); %MethodCode -#if PY_VERSION_HEX >= 0x01060000 - sipRes = TQStringToPyUnicode(sipCpp); -#else - const char *s; - - Py_BEGIN_ALLOW_THREADS - s = *sipCpp; - Py_END_ALLOW_THREADS - - if (s == NULL) - s = ""; - - sipRes = PyString_FromString(s); -#endif -%End - -%TypeCode -#include - -#if PY_VERSION_HEX >= 0x01060000 -// Convenience function for converting a TQString to a Python Unicode object. -static PyObject *TQStringToPyUnicode(TQString *qs) -{ - PyObject *uobj; - - if ((uobj = PyUnicode_FromUnicode(NULL,qs -> length())) == NULL) - return NULL; - - Py_UNICODE *pyu = PyUnicode_AS_UNICODE(uobj); - - for (uint i = 0; i < qs -> length(); ++i) - *pyu++ = (qs -> at(i)).unicode(); - - return uobj; -} -#endif - -// Convenience function for converting a Python unicode or string object to a -// TQString on the heap. -static TQString *PyUnicodeStringToTQString(PyObject *py) -{ -#if PY_VERSION_HEX >= 0x01060000 - if (PyUnicode_Check(py)) - { - TQString *qs = new TQString; - -#if defined(Py_UNICODE_WIDE) - PY_UNICODE_TYPE *ucode = PyUnicode_AS_UNICODE(py); - int len = PyUnicode_GET_SIZE(py); - - for (int i = 0; i < len; ++i) - qs->ref(i) = (uint)ucode[i]; -#else - qs -> setUnicodeCodes((ushort *)PyUnicode_AS_UNICODE(py),PyUnicode_GET_SIZE(py)); -#endif - - return qs; - } -#endif - - if (PyString_Check(py)) - return new TQString(PyString_AS_STRING(py)); - - return 0; -} + sipRes = PyTQt_qt_PyObject_FromTQString(sipCpp); %End %ConvertToTypeCode @@ -874,13 +653,11 @@ static TQString *PyUnicodeStringToTQString(PyObject *py) // expected. if (sipIsErr == NULL) - return (PyString_Check(sipPy) || -#if PY_VERSION_HEX >= 0x01060000 + return (SIPBytes_Check(sipPy) || PyUnicode_Check(sipPy) || -#endif sipCanConvertToInstance(sipPy,sipClass_TQString,SIP_NO_CONVERTORS)); - *sipCppPtr = PyUnicodeStringToTQString(sipPy); + *sipCppPtr = PyTQt_qt_PyObject_AsTQString(sipPy); if (*sipCppPtr) return sipGetState(sipTransferObj); @@ -942,7 +719,7 @@ static TQString *PyUnicodeStringToTQString(PyObject *py) enc = codec->fromUnicode(*sipCpp); - if ((encobj = PyString_FromString(enc.data())) != NULL) + if ((encobj = SIPBytes_FromString(enc.data())) != NULL) { *sipPtrPtr = (void *)PyString_AS_STRING(encobj); sipRes = PyString_GET_SIZE(encobj); @@ -973,107 +750,227 @@ bool operator>=(const TQString &,const TQString &); %End -%If (- TQt_2_00) +%ModuleHeaderCode +extern PyObject *PyTQt_qt_PyObject_FromTQString(const TQString *qstr); +%End -class TQString : TQByteArray +%ModuleCode +// Convert a QString to a Python Unicode object. +PyObject *PyTQt_qt_PyObject_FromTQString(const TQString *qstr) { -%TypeHeaderCode -#include + PyObject *obj; + +#if PY_VERSION_HEX >= 0x03030000 + // We have to work out exactly which kind to use. We assume ASCII while we + // are checking so that we only go through the string once in the most + // common case. Note that we can't use PyUnicode_FromKindAndData() because + // it doesn't handle surrogates in UCS2 strings. + + int qt_len = qstr->length(); + Py_UCS4 maxchar = 0x007f; + + for (int qt_i = 0; qt_i < qt_len && maxchar < 0xffff; ++qt_i) + { + Py_UCS4 uch = qstr->at(qt_i).unicode(); + + if (uch > 0x00ff) + { + maxchar = 0xffff; + } + else if (uch > 0x007f) + { + maxchar = 0x00ff; + } + } + + // Create the correctly sized object. + if ((obj = PyUnicode_New(qt_len, maxchar)) == NULL) + return NULL; + + int kind = PyUnicode_KIND(obj); + void *data = PyUnicode_DATA(obj); + + for (int qt_i = 0; qt_i < qt_len; ++qt_i) + { + Py_UCS4 uch = qstr->at(qt_i).unicode(); + PyUnicode_WRITE(kind, data, qt_i, uch); + } +#elif defined(Py_UNICODE_WIDE) + // Note that this doesn't handle code points greater than 0xffff. It could + // but it's only an issue for old versions of Qt. + + if ((obj = PyUnicode_FromUnicode(NULL, qstr->length())) == NULL) + return NULL; + + Py_UNICODE *pyu = PyUnicode_AS_UNICODE(obj); + + for (unsigned int i = 0; i < qstr->length(); ++i) + *pyu++ = (qstr->at(i)).unicode(); +#else + if ((obj = PyUnicode_FromUnicode(NULL, qstr->length())) == NULL) + return NULL; + + memcpy(PyUnicode_AS_UNICODE(obj), qstr->ucs2(), + qstr->length() * sizeof (Py_UNICODE)); +#endif + + return obj; +} %End -public: - TQString(); - TQString(int); - TQString(const TQString &); - TQString(const char *); - TQString(const char *,uint); - bool isNull() const; - bool isEmpty() const; - uint length() const; - bool resize(uint); - bool truncate(uint); - bool fill(char,int = -1); - TQString copy() const; -// TQString &sprintf(const char *,...); - int find(char,int = 0,bool = 1) const; - int find(const char *,int = 0,bool = 1) const; - int find(const TQRegExp &,int = 0) const; - int findRev(char,int = -1,bool = 1) const; - int findRev(const char *,int = -1,bool = 1) const; - int findRev(const TQRegExp &,int = -1) const; - int contains(char,bool = 1) const; - int contains(const char *,bool = 1) const; - int contains(const TQRegExp &) const; - TQString left(uint) const; - TQString right(uint) const; - TQString mid(uint,uint) const; - TQString leftJustify(uint,char = ' ',bool = 0) const; - TQString rightJustify(uint,char = ' ',bool = 0) const; - TQString lower() const; - TQString upper() const; - TQString stripWhiteSpace() const; - TQString simplifyWhiteSpace() const; - TQString &insert(uint,const char *); - TQString &insert(uint,char); - TQString &append(const char *); - TQString &prepend(const char *); - TQString &remove(uint,uint); - TQString &replace(uint,uint,const char *); - TQString &replace(const TQRegExp &,const char *); - - short toShort(bool * = 0) const; - ushort toUShort(bool * = 0) const; - int toInt(bool * = 0) const; - uint toUInt(bool * = 0) const; - long toLong(bool * = 0) const; - ulong toULong(bool * = 0) const; - float toFloat(bool * = 0) const; - double toDouble(bool * = 0) const; +%ModuleHeaderCode +extern TQString *PyTQt_qt_PyObject_AsTQString(PyObject *obj); +%End - TQString &setStr(const char *); -// TQString &setNum(short); -// TQString &setNum(ushort); - TQString &setNum(int /Constrained/); -// TQString &setNum(uint); -// TQString &setNum(long); -// TQString &setNum(ulong); -// TQString &setNum(float,char = 'g',int = 6); - TQString &setNum(double,char = 'g',int = 6); - bool setExpand(uint,char); +%ModuleCode +// Convert a Python Unicode object to a QString. +TQString *PyTQt_qt_PyObject_AsTQString(PyObject *obj) +{ + if (PyUnicode_Check(obj)) + { +#if PY_VERSION_HEX >= 0x03030000 + SIP_SSIZE_T len = PyUnicode_GET_LENGTH(obj); - SIP_PYOBJECT __str__(); -%MethodCode - const char *s; + switch (PyUnicode_KIND(obj)) + { + case PyUnicode_1BYTE_KIND: + return new TQString(TQString::fromLatin1((char *)PyUnicode_1BYTE_DATA(obj), len)); - Py_BEGIN_ALLOW_THREADS - s = *sipCpp; - Py_END_ALLOW_THREADS + case PyUnicode_2BYTE_KIND: + // The (TQChar *) cast should be safe. + return new TQString((TQChar *)PyUnicode_2BYTE_DATA(obj), len); - if (s == NULL) - s = ""; + case PyUnicode_4BYTE_KIND: + // Note that this doesn't handle code points greater than 0xffff. It + // could but it's only an issue for old versions of Qt. - sipRes = PyString_FromString(s); -%End + TQString *qstr = new TQString; -%ConvertToTypeCode - // Allow a Python string whenever a TQString is expected. + Py_UCS4 *ucode = PyUnicode_4BYTE_DATA(obj); - if (sipIsErr == NULL) - return (PyString_Check(sipPy) || - sipCanConvertToInstance(sipPy,sipClass_TQString,SIP_NO_CONVERTORS)); + for (SIP_SSIZE_T i = 0; i < len; ++i) + qstr->append(TQChar((uint)ucode[i])); - if (PyString_Check(sipPy)) - { - *sipCppPtr = new TQString(PyString_AS_STRING(sipPy)); + return qstr; + } - return sipGetState(sipTransferObj); - } + return NULL; +#else + TQString *qstr = new TQString; - *sipCppPtr = reinterpret_cast(sipConvertToInstance(sipPy,sipClass_TQString,sipTransferObj,SIP_NO_CONVERTORS,0,sipIsErr)); +# ifdef Py_UNICODE_WIDE + Py_UNICODE *ucode = PyUnicode_AS_UNICODE(obj); + SIP_SSIZE_T len = PyUnicode_GET_SIZE(obj); - return 0; + for (SIP_SSIZE_T i = 0; i < len; ++i) + qstr->append(TQChar((uint)ucode[i])); +# else + qstr->setUnicodeCodes((ushort *)PyUnicode_AS_UNICODE(obj),PyUnicode_GET_SIZE(obj)); +# endif + + return qstr; +#endif + } + else if (PyBytes_Check(obj)) + { + return new TQString(SIPBytes_AS_STRING(obj)); + } +#if PY_MAJOR_VERSION < 3 + else if (PyString_Check(obj)) + { + return new TQString(PyString_AS_STRING(obj)); + } +#endif + + return NULL; +} +%End + + +%ModuleHeaderCode +extern const char *PyTQt_qt_encode(PyObject **s, TQApplication::Encoding encoding); %End -}; +%ModuleCode +// Convert a Python unicode/string/bytes object to a character string encoded +// according to the given encoding. Update the object with a new reference to +// the object that owns the data. +const char *PyTQt_qt_encode(PyObject **s, TQApplication::Encoding encoding) +{ + PyObject *obj = *s; + const char *es = 0; + SIP_SSIZE_T sz; + + if (PyUnicode_Check(obj)) + { + if (encoding == TQApplication::UnicodeUTF8) + { + obj = PyUnicode_AsUTF8String(obj); + } + else + { + TQTextCodec *codec = TQTextCodec::codecForTr(); + + if (codec) + { + // Use the Qt codec to get to a byte string, and then to a + // Python object. + TQString *qstr = PyTQt_qt_PyObject_AsTQString(obj); + TQString qs = *qstr; + TQByteArray ba = codec->fromUnicode(qs); + delete qstr; + +#if PY_MAJOR_VERSION >= 3 + obj = PyBytes_FromStringAndSize(ba.data(), ba.size()); +#else + obj = PyString_FromStringAndSize(ba.data(), ba.size()); +#endif + } + else + { + obj = PyUnicode_AsLatin1String(obj); + } + } + + if (obj) + { +#if PY_MAJOR_VERSION >= 3 + es = PyBytes_AS_STRING(obj); +#else + es = PyString_AS_STRING(obj); +#endif + } + } +#if PY_MAJOR_VERSION >= 3 + else if (PyBytes_Check(obj)) + { + es = PyBytes_AS_STRING(obj); + Py_INCREF(obj); + } +#else + else if (PyString_Check(obj)) + { + es = PyString_AS_STRING(obj); + Py_INCREF(obj); + } +#endif + else if (PyObject_AsCharBuffer(obj, &es, &sz) >= 0) + { + Py_INCREF(obj); + } + + if (es) + { + *s = obj; + } + else + { + PyErr_Format(PyExc_UnicodeEncodeError, + "unable to convert '%s' to requested encoding", + Py_TYPE(*s)->tp_name); + } + + return es; +} %End diff --git a/sip/qt/qstringlist.sip b/sip/qt/qstringlist.sip index 23ef47b..ead39dc 100644 --- a/sip/qt/qstringlist.sip +++ b/sip/qt/qstringlist.sip @@ -188,7 +188,7 @@ public: sipRes = new TQString((*sipCpp)[a0]); %End - TQStringList operator[](SIP_PYSLICE); + TQStringList operator[](SIP_PYSLICE slice); %MethodCode #if PY_VERSION_HEX >= 0x02050000 Py_ssize_t len, start, stop, step, slicelength, i; diff --git a/sip/qt/qstrlist.sip b/sip/qt/qstrlist.sip index 0fd3976..695c872 100644 --- a/sip/qt/qstrlist.sip +++ b/sip/qt/qstrlist.sip @@ -57,7 +57,7 @@ is used instead. { PyObject *ps; - if ((ps = PyString_FromString(s)) == NULL || PyList_SetItem(l,i,ps) < 0) + if ((ps = SIPBytes_FromString(s)) == NULL || PyList_SetItem(l,i,ps) < 0) { Py_XDECREF(ps); Py_DECREF(l); @@ -80,13 +80,17 @@ is used instead. for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) { + PyObject *object = PyList_GET_ITEM(sipPy, i); char *s; - if ((s = PyString_AsString(PyList_GET_ITEM(sipPy,i))) == NULL) + if (PyUnicode_Check(object)) + { + s = tqstrdup(sipString_AsLatin1String(&object)); + } + else if ((s = (char *)sipBytes_AsString(object)) == NULL) { *sipIsErr = 1; delete qsl; - return 0; } diff --git a/sip/qt/qvaluelist.sip b/sip/qt/qvaluelist.sip index e64fb30..e2a1d9b 100644 --- a/sip/qt/qvaluelist.sip +++ b/sip/qt/qvaluelist.sip @@ -139,7 +139,7 @@ template // Get it. for (uint i = 0; i < sipCpp -> count(); ++i) - if (PyList_SetItem(l,i,PyInt_FromLong((long)(*sipCpp)[i])) < 0) + if (PyList_SetItem(l,i,PyLong_FromLong((long)(*sipCpp)[i])) < 0) { Py_DECREF(l); @@ -161,7 +161,7 @@ template for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) { - qvl -> append((int)PyInt_AsLong(PyList_GET_ITEM(sipPy,i))); + qvl -> append(PyLong_AsLong(PyList_GET_ITEM(sipPy,i))); if (PyErr_Occurred() != NULL) { diff --git a/sip/qtnetwork/qftp.sip b/sip/qtnetwork/qftp.sip index e5f46d8..94aed30 100644 --- a/sip/qtnetwork/qftp.sip +++ b/sip/qtnetwork/qftp.sip @@ -130,7 +130,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); diff --git a/sip/qtnetwork/qhttp.sip b/sip/qtnetwork/qhttp.sip index 8fbeae7..4762c30 100644 --- a/sip/qtnetwork/qhttp.sip +++ b/sip/qtnetwork/qhttp.sip @@ -226,7 +226,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); diff --git a/sip/qtnetwork/qsocket.sip b/sip/qtnetwork/qsocket.sip index 077443e..b97f243 100644 --- a/sip/qtnetwork/qsocket.sip +++ b/sip/qtnetwork/qsocket.sip @@ -194,7 +194,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -229,7 +229,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -263,7 +263,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); @@ -299,7 +299,7 @@ public: } else { - sipRes = PyString_FromStringAndSize(buf,actlen); + sipRes = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); diff --git a/sip/qtnetwork/qsocketdevice.sip b/sip/qtnetwork/qsocketdevice.sip index 41da2f5..bbaa008 100644 --- a/sip/qtnetwork/qsocketdevice.sip +++ b/sip/qtnetwork/qsocketdevice.sip @@ -145,7 +145,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); @@ -176,7 +176,7 @@ public: Py_INCREF(Py_None); sipRes = Py_None; } - else if ((sipRes = PyString_FromStringAndSize(buf,actlen)) == NULL) + else if ((sipRes = SIPBytes_FromStringAndSize(buf,actlen)) == NULL) sipIsErr = 1; sipFree((void *)buf); diff --git a/sip/qtpe/qpeapplication.sip b/sip/qtpe/qpeapplication.sip index 5b76b22..9e6b99b 100644 --- a/sip/qtpe/qpeapplication.sip +++ b/sip/qtpe/qpeapplication.sip @@ -186,7 +186,7 @@ static char **pyArgvToC(PyObject *argvlist,int *argcp) char *arg; // Get the argument and allocate memory for it. - if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL || + if ((arg = (char *)sipBytes_AsString(PyList_GetItem(argvlist,a))) == NULL || (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL) return NULL;