07d59e02be63a658a259cc148197e0785015a751
[enigma2.git] / lib / python / Components / ConditionalWidget.py
1 import skin
2 from GUIComponent import *
3
4 from enigma import *
5
6 class Widget(GUIComponent):
7         def __init__(self):
8                 GUIComponent.__init__(self)
9         
10         def GUIcreate(self, parent):
11                 self.instance = self.createWidget(parent)
12                 if self.state == self.HIDDEN:
13                         self.instance.hide()
14         
15         def GUIdelete(self):
16                 self.removeWidget(self.instance)
17                 self.instance = None
18         
19         def removeWidget(self, w):
20                 pass
21         
22         def move(self, x, y):
23                 self.instance.move(ePoint(int(x), int(y)))
24         
25 class ConditionalWidget(Widget):
26         def __init__(self, withTimer = True):
27                 Widget.__init__(self)
28                 
29                 self.setConnect(None)
30                 
31                 if (withTimer):
32                         self.conditionCheckTimer = eTimer()
33                         self.conditionCheckTimer.timeout.get().append(self.update)
34                         self.conditionCheckTimer.start(1000)
35                 
36         def setConnect(self, conditionalFunction):
37                 self.conditionalFunction = conditionalFunction
38                 
39         def activateCondition(self, condition):
40                 if (condition):
41                         if self.state == self.HIDDEN:
42                                 self.show()
43                 else:
44                         if self.state == self.SHOWN:
45                                 self.hide()
46
47         def update(self):
48                 if (self.conditionalFunction != None):
49                         try:
50                                 self.conditionalFunction() # check, if the conditionalfunction is still valid
51                                 self.activateCondition(self.conditionalFunction())
52                         except:
53                                 self.conditionalFunction = None
54                                 self.activateCondition(False)
55                         
56 import time
57
58 class BlinkingWidget(Widget):
59         def __init__(self):
60                 Widget.__init__(self)
61                 
62                 self.blinking = True
63                 
64                 self.setBlinkTime(500)
65
66                 self.timer = eTimer()
67                 self.timer.timeout.get().append(self.blink)
68         
69         def setBlinkTime(self, time):
70                 self.blinktime = time
71                 
72         def blink(self):
73                 if self.blinking == True:
74                         if self.state == self.SHOWN:
75                                 self.hide()
76                         elif self.state == self.HIDDEN:
77                                 self.show()
78                         
79         def startBlinking(self):
80                 self.blinking = True
81                 self.timer.start(self.blinktime)
82                 
83         def stopBlinking(self):
84                 self.blinking = False
85                 if self.state == self.SHOWN:
86                         self.hide()
87                 self.timer.stop()
88                 
89 class BlinkingWidgetConditional(BlinkingWidget, ConditionalWidget):
90         def __init__(self):
91                 BlinkingWidget.__init__(self)
92                 ConditionalWidget.__init__(self)
93                 
94         def activateCondition(self, condition):
95                 if (condition):
96                         if not self.blinking: # we are already blinking
97                                 self.startBlinking()
98                 else:
99                         if self.blinking: # we are blinking
100                                 self.stopBlinking()