From 0252a3bc3bb43d56b35f0ffe05df0b734b3c9588 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Thu, 8 Dec 2005 18:41:52 +0000 Subject: [PATCH] define movepaths for MovingPixmaps and proof of concept in the start-wizard moving over pixmaps flickers sometimes. is this fixable somehow? --- lib/python/Components/Pixmap.py | 48 +++++++++++++++++++++++++++------ lib/python/Screens/Wizard.py | 14 +++++++--- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/lib/python/Components/Pixmap.py b/lib/python/Components/Pixmap.py index fc7bfe27..d25530ea 100644 --- a/lib/python/Components/Pixmap.py +++ b/lib/python/Components/Pixmap.py @@ -35,26 +35,58 @@ class MovingPixmap(Pixmap): self.x = 0.0 self.y = 0.0 + self.clearPath() + self.moveTimer = eTimer() self.moveTimer.timeout.get().append(self.doMove) + def clearPath(self, repeated = False): + if (self.moving): + self.moving = False + self.moveTimer.stop() + + self.path = [] + self.currDest = 0 + self.repeated = repeated + + def addMovePoint(self, x, y, time = 20): + self.path.append((x, y, time)) + def moveTo(self, x, y, time = 20): - self.time = time - self.destX = x - self.destY = y - self.stepX = (self.destX - self.x) / float(time) - self.stepY = (self.destY - self.y) / float(time) + self.clearPath() + self.addMovePoint(x, y, time) def startMoving(self): if not self.moving: + self.time = self.path[self.currDest][2] + self.stepX = (self.path[self.currDest][0] - self.x) / float(self.time) + self.stepY = (self.path[self.currDest][1] - self.y) / float(self.time) + self.moving = True - self.moveTimer.start(10) + self.moveTimer.start(100) + + def stopMoving(self): + self.moving = False + self.moveTimer.stop() def doMove(self): self.x += self.stepX self.y += self.stepY self.time -= 1 - self.move(int(self.x), int(self.y)) + try: + self.move(int(self.x), int(self.y)) + except: # moving not possible... widget not there any more... stop moving + self.stopMoving() + if (self.time == 0): + self.currDest += 1 self.moveTimer.stop() - self.moving = False \ No newline at end of file + self.moving = False + if (self.currDest >= len(self.path)): # end of path + if (self.repeated): + self.currDest = 0 + self.moving = False + self.startMoving() + else: + self.moving = False + self.startMoving() diff --git a/lib/python/Screens/Wizard.py b/lib/python/Screens/Wizard.py index 5aa0fada..818d99ec 100644 --- a/lib/python/Screens/Wizard.py +++ b/lib/python/Screens/Wizard.py @@ -43,7 +43,7 @@ class WelcomeWizard(Screen, HelpableScreen): self["text"] = Label() self["rc"] = Pixmap() self["arrowdown"] = MovingPixmap() - self["arrowdown"].moveTo(557, 232, 100) + self["arrowdown"].moveTo(557, 232, 10) self["arrowup"] = MovingPixmap() self.onShown.append(self["arrowdown"].startMoving) @@ -85,11 +85,17 @@ class WelcomeWizard(Screen, HelpableScreen): self.updateValues() if (self.currStep == 2): - self["arrowdown"].moveTo(557, 200, 100) - self["arrowup"].moveTo(557, 355, 100) + self["arrowdown"].moveTo(557, 200, 10) + self["arrowup"].moveTo(557, 355, 10) self["arrowdown"].startMoving() self["arrowup"].startMoving() - + if (self.currStep == 3): + self["arrowup"].moveTo(740, 355, 10) + self["arrowup"].startMoving() + self["arrowdown"].clearPath(True) + self["arrowdown"].addMovePoint(510, 300, 10) + self["arrowdown"].addMovePoint(610, 300, 10) + self["arrowdown"].startMoving() def listActiveWizards(): wizards = [ ] -- 2.30.2