add french
[enigma2.git] / lib / python / Components / PerServiceDisplay.py
1 from GUIComponent import *
2 from VariableText import *
3 from VariableValue import *
4
5 from enigma import iPlayableService
6 from enigma import eLabel, eSlider, eTimer
7
8 class PerServiceBase(GUIComponent):
9         def __init__(self, navcore, eventmap):
10                 GUIComponent.__init__(self)
11                 self.eventmap = eventmap
12                 self.navcore = navcore
13                 self.navcore.event.append(self.event)
14                 self.poll_timer = eTimer()
15                 self.poll_timer.timeout.get().append(self.poll)
16                 
17                 # start with stopped state, so simulate that
18                 self.event(iPlayableService.evEnd)
19
20         def destroy(self):
21                 self.navcore.event.remove(self.event)
22
23         def event(self, ev):
24                 # loop up if we need to handle this event
25                 if self.eventmap.has_key(ev):
26                         # call handler
27                         self.eventmap[ev]()
28         
29         def enablePolling(self, interval=60000):
30                 if interval:
31                         self.poll_timer.start(interval)
32                 else:
33                         self.poll_timer.stop()
34         
35         def disablePolling(self):
36                 self.enablePolling(interval=0)
37
38         def poll(self):
39                 pass
40
41 class PerServiceDisplay(PerServiceBase, VariableText):
42         """Mixin for building components which display something which changes on navigation events, for example "service name" """
43         def __init__(self, navcore, eventmap):
44                 VariableText.__init__(self)
45                 PerServiceBase.__init__(self, navcore, eventmap)
46
47         def createWidget(self, parent):
48                 # by default, we use a label to display our data.
49                 g = eLabel(parent)
50                 return g
51
52 class PerServiceDisplayProgress(GUIComponent, VariableValue, PerServiceBase):
53         def __init__(self, navcore, eventmap):
54                 GUIComponent.__init__(self)
55                 VariableValue.__init__(self)
56                 self.eventmap = eventmap
57                 self.navcore = navcore
58                 self.navcore.event.append(self.event)
59
60                 # start with stopped state, so simulate that
61                 self.event(iPlayableService.evEnd)
62
63         def createWidget(self, parent):
64                 # by default, we use a label to display our data.
65                 self.g = eSlider(parent)
66                 return self.g