On Thu, Apr 23, 2009 at 10:54 AM, Phil Thompson <p...@riverbankcomputing.com> wrote: > I'd like to replace the old PyQt qtdemo with a port of the one that comes > with newer versions of Qt. This is the wrapper application which launches > all the individual examples. > > I've translated all the C++ code to Python (and got rid of the syntax > errors) - it just needs debugging! > > If anybody would like to take this on then let me know. > The attached file contains some fixes. But I have no time left today. Maybe someone else likes to continue?
Greets Henning
diff -u qtdemo.old/demoitem.py qtdemo/demoitem.py --- qtdemo.old/demoitem.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/demoitem.py 2009-04-23 12:51:08.000000000 +0200 @@ -16,7 +16,7 @@ matrix = QtGui.QMatrix() def __init__(self, scene=None, parent=None): - super(DemoItem, self).__init__(scene, parent) + super(DemoItem, self).__init__(parent) self.opacity = 1.0 self.locked = False diff -u qtdemo.old/guidecircle.py qtdemo/guidecircle.py --- qtdemo.old/guidecircle.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/guidecircle.py 2009-04-23 13:38:09.000000000 +0200 @@ -12,21 +12,23 @@ CW = 1 CCW = -1 - def __init__(self, rect, startAngle=0.0, span=360.0, dir=CCW, follows=None): + def __init__(self, rect, startAngle=0.0, span=360.0, dir=None, follows=None): super(GuideCircle, self).__init__(follows) - + if dir is None: + dir = self.CCW + self.radiusX = rect.width() / 2.0 self.radiusY = rect.height() / 2.0 self.posX = rect.topLeft().x() self.posY = rect.topLeft().y() self.spanRad = span * PI2 / -360.0 - if dir == CCW: + if dir == self.CCW: self.startAngleRad = startAngle * PI2 / -360.0 - self.endAngleRad = startAngleRad + spanRad + self.endAngleRad = self.startAngleRad + self.spanRad self.stepAngleRad = self.spanRad / self.length() else: - self.startAngleRad = spanRad + (startAngle * PI2 / -360.0) + self.startAngleRad = self.spanRad + (startAngle * PI2 / -360.0) self.endAngleRad = startAngle * PI2 / -360.0 self.stepAngleRad = -self.spanRad / self.length() @@ -34,15 +36,15 @@ return abs(self.radiusX * self.spanRad) def startPos(self): - return QtCore.QPointF((posX + radiusX + radiusX * math.cos(startAngleRad)) * scaleX, - (posY + radiusY + radiusY * math.sin(startAngleRad)) * scaleY) + return QtCore.QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad)) * self.scaleX, + (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad)) * self.scaleY) def endPos(self): - return QtCore.QPointF((posX + radiusX + radiusX * math.cos(endAngleRad)) * scaleX, - (posY + radiusY + radiusY * math.sin(endAngleRad)) * scaleY) + return QtCore.QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.endAngleRad)) * self.scaleX, + (self.posY + self.radiusY + self.radiusY * math.sin(self.endAngleRad)) * self.scaleY) def guide(self, item, moveSpeed): frame = item.guideFrame - self.startLength - end = QtCore.QPointF((posX + radiusX + radiusX * math.cos(startAngleRad + (frame * stepAngleRad))) * scaleX, - (posY + radiusY + radiusY * math.sin(startAngleRad + (frame * stepAngleRad))) * scaleY) + end = QtCore.QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleX, + (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleY) self.move(item, end, moveSpeed) Gemeinsame Unterverzeichnisse: qtdemo.old/images und qtdemo/images. diff -u qtdemo.old/itemcircleanimation.py qtdemo/itemcircleanimation.py --- qtdemo.old/itemcircleanimation.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/itemcircleanimation.py 2009-04-23 13:39:02.000000000 +0200 @@ -1,6 +1,8 @@ import math import random +from PyQt4 import QtCore + from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation @@ -179,7 +181,7 @@ s = Colors.tickerText tlen = len(s) - room = self.letterCount() + room = self.letterCount while room >= tlen: for c in s: self.createLetter(c) diff -u qtdemo.old/mainwindow.py qtdemo/mainwindow.py --- qtdemo.old/mainwindow.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/mainwindow.py 2009-04-23 14:30:05.000000000 +0200 @@ -14,7 +14,7 @@ self.updateTimer = QtCore.QTimer(self) self.demoStartTime = QtCore.QTime() - self.fpsTime = QtCore.QTime() + self.fpsTime = QtCore.QTimer() self.background = QtGui.QPixmap() self.scene = None @@ -131,7 +131,7 @@ if on and not Colors.noTimerUpdate: self.useTimer = True - self.fpsTime = QtGui.QTime.currentTime() + self.fpsTime = QtCore.QTime.currentTime() self.updateTimer.start(int(1000 / Colors.fps)) update_mode = QtGui.QGraphicsView.NoViewportUpdate else: @@ -216,9 +216,9 @@ self.fpsLabel.setPos(Colors.stageStartX, 600 - QtGui.QFontMetricsF(Colors.buttonFont()).height() - 5) - self.trolltechLogo = ImageItem(QImage(':/images/trolltech-logo.png'), + self.trolltechLogo = ImageItem(QtGui.QImage(':/images/trolltech-logo.png'), 1000, 1000, self.scene, None, True, 0.5) - self.qtLogo = ImageItem(QImage(':/images/qtlogo_small.png'), 1000, + self.qtLogo = ImageItem(QtGui.QImage(':/images/qtlogo_small.png'), 1000, 1000, self.scene, None, True, 0.5) self.trolltechLogo.setZValue(100) self.qtLogo.setZValue(100) diff -u qtdemo.old/menumanager.py qtdemo/menumanager.py --- qtdemo.old/menumanager.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/menumanager.py 2009-04-23 14:28:27.000000000 +0200 @@ -77,7 +77,7 @@ # Store help collection file in cache dir of assistant. cacheDir = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DataLocation) + '/Trolltech/Assistant/' - helpDataFile = 'qtdemo_%d.qhc' % QtCore.QT_VERSION_STR + helpDataFile = 'qtdemo_%s.qhc' % QtCore.QT_VERSION_STR dir = QtCore.QDir() if not dir.exists(cacheDir): @@ -92,7 +92,7 @@ qchFiles = ['/qt.qch', '/designer.qch', '/linguist.qch'] - oldDir = self.helpEngine.customValue('docDir', '').toString() + oldDir = self.helpEngine.customValue('docDir', QtCore.QVariant('')).toString() if oldDir != qtDocRoot: for qchFile in qchFiles: self.helpEngine.unregisterDocumentation(QtHelp.QHelpEngineCore.namespaceName(qtDocRoot + qchFile)) @@ -102,7 +102,7 @@ for qchFile in qchFiles: self.helpEngine.registerDocumentation(qtDocRoot + qchFile) - self.helpEngine.setCustomValue('docDir', qtDocRoot) + self.helpEngine.setCustomValue('docDir', QtCore.QVariant(qtDocRoot)) def itemSelected(self, userCode, menuName): if userCode == MenuManager.LAUNCH: @@ -357,7 +357,7 @@ "Demo/example with name", name, "appears twice in " "the xml-file!__") - self.info[name]['filename'] = example.attribute('filename') + self.info.setdefault(name, {})['filename'] = example.attribute('filename') self.info[name]['category'] = example.parentNode().toElement().tagName() self.info[name]['dirname'] = example.parentNode().toElement().attribute('dirname') self.info[name]['changedirectory'] = example.attribute('changedirectory') @@ -453,7 +453,7 @@ menuButtonsIn = self.score.insertMovie(name + ' -buttons') menuButtonsOut = self.score.insertMovie(name + ' -buttons -out') self.createLowLeftButton("Quit", MenuManager.QUIT, menuButtonsIn, - menuButtonsOut, None) + menuButtonsOut, None, None) self.createLowRightButton("Toggle fullscreen", MenuManager.FULLSCREEN, menuButtonsIn, menuButtonsOut, None) @@ -498,7 +498,7 @@ # Create a normal menu button. label = currentNode.toElement().attribute('name') item = TextButton(label, TextButton.LEFT, type, - self.window.scene) + self.window.scene, None, TextButton.PANEL) currentNode = currentNode.nextSibling() # Skip the OpenGL examples if they can't run. @@ -550,9 +550,9 @@ anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration((200 + (30 * i)) * Colors.animSpeedButtons) - anim.setStartPos(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) - anim.setPosAt(0.70, QPointF(xOffset, yOffset + Colors.contentStartY)) - anim.setPosAt(1.00, QPointF(-iw, yOffset + Colors.contentStartY)) + anim.setStartPos(QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) + anim.setPosAt(0.70, QtCore.QPointF(xOffset, yOffset + Colors.contentStartY)) + anim.setPosAt(1.00, QtCore.QPointF(-iw, yOffset + Colors.contentStartY)) movieNextTopOut.append(anim) # Create next-menu bottom-out-animation. @@ -587,14 +587,14 @@ # We need another menu, so register for 'more' and 'back' # buttons. menuIndex += 1 - self.info[currentMenu]['more'] = '%s -menu%d' % (name, menuIndex) - currentMenu = '%s -menu%d' (name, menuIndex) - self.info[currentMenu]['back'] = '%s -menu%d' % (name, menuIndex - 1) + self.info.setdefault(currentMenu, {})['more'] = '%s -menu%d' % (name, menuIndex) + currentMenu = '%s -menu%d' % (name, menuIndex) + self.info.setdefault(currentMenu, {})['back'] = '%s -menu%d' % (name, menuIndex - 1) def createLowLeftButton(self, label, type, movieIn, movieOut, movieShake, menuString): button = TextButton(label, TextButton.RIGHT, type, self.window.scene, None, TextButton.PANEL) - if not menuString.isNull(): + if not menuString or QtCore.QString(menuString).isNull(): button.setMenuString(menuString) button.setRecursiveVisible(False) button.setZValue(10) @@ -683,8 +683,8 @@ anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration(300 * Colors.animSpeedButtons) - anim.setStartPos(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) - anim.setPosAt(1.0, QPointF(xOffset, sh)) + anim.setStartPos(QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) + anim.setPosAt(1.0, QtCore.QPointF(xOffset, sh)) movieOut.append(anim) def createInfo(self, item, name): Nur in qtdemo: qtdemo_rc.py. diff -u qtdemo.old/score.py qtdemo/score.py --- qtdemo.old/score.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/score.py 2009-04-23 14:30:26.000000000 +0200 @@ -71,7 +71,7 @@ try: movie = self.index[indexName] except KeyError: - Colours.debug("Queuing movie:", indexName, "(does not exist)") + Colors.debug("Queuing movie:", indexName, "(does not exist)") return self.prepare(movie, runMode, lockMode) @@ -85,11 +85,8 @@ self.playList = [] Colors.debug("********* Playing que *********") - def insertMovie(self, indexName, movie): + def insertMovie(self, indexName, movie=None): + if movie is None: + movie = [] self.index[indexName] = movie - - def insertMovie(self, indexName): - movie = [] - insertMovie(indexName, movie) - return movie diff -u qtdemo.old/textbutton.py qtdemo/textbutton.py --- qtdemo.old/textbutton.py 2009-04-23 04:41:23.000000000 +0200 +++ qtdemo/textbutton.py 2009-04-23 13:39:33.000000000 +0200 @@ -187,7 +187,7 @@ def setMenuString(self, menu): self.menuString = menu - def prepare(): + def prepare(self): if not self.prepared: self.prepared = True self.setupHoverText() Gemeinsame Unterverzeichnisse: qtdemo.old/xml und qtdemo/xml.
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt