we don't have positioner support so we don't need a config menu for it
[enigma2.git] / lib / python / Components / Pixmap.py
index c97c0ab1645b2104d9b9265326b78a794e335c16..8f59880b2b27dd721ff096510bf9fd1862d41255 100644 (file)
@@ -1,25 +1,76 @@
 import skin
+from GUIComponent import *
 
 from enigma import *
 
-class Pixmap:
-       """Pixmap can be used for components which use a pixmap"""
+class Pixmap(GUIComponent):
+       """Pixmap can be used for components which diplay a pixmap"""
+       
+       SHOWN = 0
+       HIDDEN = 1
        
        def __init__(self):
+               GUIComponent.__init__(self)
                self.instance = None
+               self.state = self.SHOWN
        
        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
+       def getePixmap(self, parent):
+               #pixmap = ePixmap(parent)
+               #pixmap.setPixmapFromFile(self.filename)
+               return ePixmap(parent)
+       
+       def createWidget(self, parent):
+               return self.getePixmap(parent)
+
+       def removeWidget(self, w):
+               pass
+       
+       def showPixmap(self):
+               self.state = self.SHOWN
+               self.instance.show()
+
+       def hidePixmap(self):
+               self.state = self.HIDDEN
+               self.instance.hide()
        
        def removeWidget(self, instance):
                pass
+
+class PixmapConditional(Pixmap):
+       def __init__(self, withTimer = True):
+               Pixmap.__init__(self)
+               
+               self.setConnect(None)
+               
+               if (withTimer):
+                       self.conditionCheckTimer = eTimer()
+                       self.conditionCheckTimer.timeout.get().append(self.update)
+                       self.conditionCheckTimer.start(1000)
+               
+       def setConnect(self, conditionalFunction):
+               self.conditionalFunction = conditionalFunction
+               
+       def activateCondition(self, condition):
+               if (condition):
+                       if (self.state == self.HIDDEN):
+                               self.showPixmap()
+               else:
+                       if (self.state == self.SHOWN):
+                               self.hidePixmap()
+
+       def update(self):
+               if (self.conditionalFunction != None):
+                       try:
+                               self.conditionalFunction() # check, if the conditionalfunction is still valid
+                       except:
+                               self.conditionalFunction = None
+                               self.activateCondition(False)
+                       
+                       self.activateCondition(self.conditionalFunction())