add support for cyclic garbage collection to eTimer and eSocketNotifier
[vuplus_dvbapp] / lib / python / Components / ConditionalWidget.py
index 5ff7798..192813f 100644 (file)
@@ -1,67 +1,71 @@
-import skin
-from GUIComponent import *
+from GUIComponent import GUIComponent
+from enigma import eTimer
 
-from enigma import *
-
-class Widget(GUIComponent):
-       
-       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)
-       
-       def GUIdelete(self):
-               self.removeWidget(self.instance)
-               self.instance = None
-       
-       def removeWidget(self, w):
-               pass
-       
-       def showWidget(self):
-               self.state = self.SHOWN
-               self.instance.show()
-
-       def hideWidget(self):
-               self.state = self.HIDDEN
-               self.instance.hide()
-       
-       def removeWidget(self, instance):
-               pass
-
-class ConditionalWidget(Widget):
+class ConditionalWidget(GUIComponent):
        def __init__(self, withTimer = True):
-               Widget.__init__(self)
+               GUIComponent.__init__(self)
                
                self.setConnect(None)
                
                if (withTimer):
                        self.conditionCheckTimer = eTimer()
-                       self.conditionCheckTimer.timeout.get().append(self.update)
+                       self.conditionCheckTimer.callback.append(self.update)
                        self.conditionCheckTimer.start(1000)
-               
+
+       def postWidgetCreate(self, instance):
+               self.visible = 0
+
        def setConnect(self, conditionalFunction):
                self.conditionalFunction = conditionalFunction
                
        def activateCondition(self, condition):
-               if (condition):
-                       if (self.state == self.HIDDEN):
-                               self.showWidget()
+               if condition:
+                       self.visible = 1
                else:
-                       if (self.state == self.SHOWN):
-                               self.hideWidget()
+                       self.visible = 0
 
        def update(self):
                if (self.conditionalFunction != None):
                        try:
-                               self.conditionalFunction() # check, if the conditionalfunction is still valid
+                               self.activateCondition(self.conditionalFunction())
                        except:
                                self.conditionalFunction = None
                                self.activateCondition(False)
+
+class BlinkingWidget(GUIComponent):
+       def __init__(self):
+               GUIComponent.__init__(self)
+               self.blinking = False
+               self.setBlinkTime(500)
+               self.timer = eTimer()
+               self.timer.callback.append(self.blink)
+       
+       def setBlinkTime(self, time):
+               self.blinktime = time
+               
+       def blink(self):
+               if self.blinking == True:
+                       self.visible = not self.visible
                        
-                       self.activateCondition(self.conditionalFunction())
+       def startBlinking(self):
+               self.blinking = True
+               self.timer.start(self.blinktime)
+               
+       def stopBlinking(self):
+               self.blinking = False
+               if self.visible:
+                       self.hide()
+               self.timer.stop()
+
+class BlinkingWidgetConditional(BlinkingWidget, ConditionalWidget):
+       def __init__(self):
+               BlinkingWidget.__init__(self)
+               ConditionalWidget.__init__(self)
+               
+       def activateCondition(self, condition):
+               if (condition):
+                       if not self.blinking: # we are already blinking
+                               self.startBlinking()
+               else:
+                       if self.blinking: # we are blinking
+                               self.stopBlinking()