diff --git a/build.py b/build.py index fa63bfc..890acad 100644 --- a/build.py +++ b/build.py @@ -37,8 +37,8 @@ import string try: import sip_tqt_config except: - print "Unable to import the sip_tqt_config module. Please make sure you have" - print "SIP-TQt v3.9 or later installed." + print("Unable to import the sip_tqt_config module. Please make sure you have") + print("SIP-TQt v3.9 or later installed.") sys.exit(1) config = sip_tqt_config.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]" % sip_tqt_config.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-TQt 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]" % sip_tqt_config.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-TQt 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 a34b71d..b5c4221 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(): sip_tqt_config.inform("TQt v%s %sis being used." % (sip_tqt_config.version_to_string(qt_version), edstr)) sip_tqt_config.inform("SIP-TQt %s is being used." % sipcfg.sip_version_str) - sip_tqt_config.inform("These PyTQt modules will be built: %s." % string.join(pyqt_modules)) + sip_tqt_config.inform("These PyTQt modules will be built: %s." % ' '.join(pyqt_modules)) if disabled_classes: - sip_tqt_config.inform("Support for these TQt classes has been disabled: %s." % string.join(disabled_classes)) + sip_tqt_config.inform("Support for these TQt classes has been disabled: %s." % ' '.join(disabled_classes)) sip_tqt_config.inform("The PyTQt modules will be installed in %s." % opt_pyqtmoddir) sip_tqt_config.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: sip_tqt_config.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-TQt 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 - sip_tqt_config.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)) + sip_tqt_config.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): sip_tqt_config.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_TQT") names.append("LIBDIR_TQT") 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): sip_tqt_config.error("No TQt libraries could be found in %s." % qt_libdir) if len(names) > 1: - sip_tqt_config.error("These TQt libraries were found: %s. Use the -y argument to explicitly specify which you want to use." % string.join(names)) + sip_tqt_config.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: - sip_tqt_config.error("PyTQt v3.x does not support Python v3.x") - # Check SIP-TQt 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_tqtlib = 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 4b67156..28e5a88 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 e0835bb..d6b6b2e 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("TQTDIR") + if qtdir is None: + raise Exception("The TQTDIR 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 ca21ec4..19535ca 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 2ce5778..0f3a23e 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;