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

Reply via email to