introduce the movingPixmap and use it to position the arrow in the start-wizard ...
[enigma2.git] / lib / python / Components / Pixmap.py
index c97c0ab1645b2104d9b9265326b78a794e335c16..fc7bfe27b1df343aa21a674b6ce46f3650af57f4 100644 (file)
@@ -1,25 +1,60 @@
-import skin
+from ConditionalWidget import *
 
 from enigma import *
 
-class Pixmap:
-       """Pixmap can be used for components which use a pixmap"""
-       
+class Pixmap(Widget):
        def __init__(self):
-               self.instance = None
-       
-       def GUIcreate(self, parent):
-               self.instance = self.createWidget(parent)
-               #self.instance.setText(self.message)
-       
-       def GUIdelete(self):
-               self.removeWidget(self.instance)
-               self.instance = None
-       
-       def getePixmap(self, parent, filename):
-               pixmap = ePixmap(parent)
-               pixmap.setPixmapFromFile(filename)
-               return pixmap
+               Widget.__init__(self)
+
+       def getePixmap(self, parent):
+               #pixmap = ePixmap(parent)
+               #pixmap.setPixmapFromFile(self.filename)
+               return ePixmap(parent)
        
-       def removeWidget(self, instance):
+       def createWidget(self, parent):
+               return self.getePixmap(parent)
+
+       def removeWidget(self, w):
                pass
+
+       def move(self, x, y):
+               self.instance.move(ePoint(int(x), int(y)))
+
+class PixmapConditional(ConditionalWidget, Pixmap):
+       def __init__(self, withTimer = True):
+               ConditionalWidget.__init__(self)
+               Pixmap.__init__(self)
+
+class MovingPixmap(Pixmap):
+       def __init__(self):
+               Pixmap.__init__(self)
+               
+               self.moving = False
+               
+               # TODO: get real values
+               self.x = 0.0
+               self.y = 0.0
+               
+               self.moveTimer = eTimer()
+               self.moveTimer.timeout.get().append(self.doMove)
+               
+       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)
+               
+       def startMoving(self):
+               if not self.moving:
+                       self.moving = True
+                       self.moveTimer.start(10)
+               
+       def doMove(self):
+               self.x += self.stepX
+               self.y += self.stepY
+               self.time -= 1
+               self.move(int(self.x), int(self.y))
+               if (self.time == 0):
+                       self.moveTimer.stop()
+                       self.moving = False
\ No newline at end of file