1 from GUIComponent import *
2 from VariableText import *
3 from VariableValue import *
5 from enigma import iPlayableService
6 from enigma import eLabel, eSlider, eTimer
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)
17 # start with stopped state, so simulate that
18 self.event(iPlayableService.evEnd)
21 self.navcore.event.remove(self.event)
24 # loop up if we need to handle this event
25 if self.eventmap.has_key(ev):
29 def enablePolling(self, interval=60000):
31 self.poll_timer.start(interval)
33 self.poll_timer.stop()
35 def disablePolling(self):
36 self.enablePolling(interval=0)
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)
47 def createWidget(self, parent):
48 # by default, we use a label to display our data.
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)
60 # start with stopped state, so simulate that
61 self.event(iPlayableService.evEnd)
63 def createWidget(self, parent):
64 # by default, we use a label to display our data.
65 self.g = eSlider(parent)