-from GUIComponent import *
-from VariableText import *
-from VariableValue import *
+from GUIComponent import GUIComponent
+from VariableText import VariableText
+from VariableValue import VariableValue
from enigma import iPlayableService
from enigma import eLabel, eSlider, eTimer
-class PerServiceBase(GUIComponent):
- def __init__(self, navcore, eventmap):
- GUIComponent.__init__(self)
+class PerServiceBase(object):
+ def __init__(self, navcore, eventmap, with_event=False):
self.eventmap = eventmap
self.navcore = navcore
- self.navcore.event.append(self.event)
+ self.navcore.event.append(self.event_callback)
self.poll_timer = eTimer()
- self.poll_timer.timeout.get().append(self.poll)
+ self.poll_timer.callback.append(self.poll)
+ self.with_event = with_event
# start with stopped state, so simulate that
- self.event(iPlayableService.evEnd)
+ self.event_callback(iPlayableService.evEnd)
def destroy(self):
- self.navcore.event.remove(self.event)
+ self.navcore.event.remove(self.event_callback)
- def event(self, ev):
+ def event_callback(self, ev):
# loop up if we need to handle this event
if self.eventmap.has_key(ev):
# call handler
- self.eventmap[ev]()
+ if self.with_event:
+ self.eventmap[ev](ev)
+ else:
+ self.eventmap[ev]()
def enablePolling(self, interval=60000):
if interval:
def poll(self):
pass
-class PerServiceDisplay(PerServiceBase, VariableText):
+class PerServiceDisplay(PerServiceBase, VariableText, GUIComponent):
"""Mixin for building components which display something which changes on navigation events, for example "service name" """
def __init__(self, navcore, eventmap):
+ GUIComponent.__init__(self)
VariableText.__init__(self)
PerServiceBase.__init__(self, navcore, eventmap)
def __init__(self, navcore, eventmap):
GUIComponent.__init__(self)
VariableValue.__init__(self)
+ PerServiceBase.__init__(self, navcore, eventmap)
self.eventmap = eventmap
self.navcore = navcore
self.navcore.event.append(self.event)