X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b66054905ad03ecc77b93119424c0a1b4401f548..bcbd5801c2be23b2ee1a22e7b088fc2fb654f1c9:/lib/python/Components/ServicePosition.py diff --git a/lib/python/Components/ServicePosition.py b/lib/python/Components/ServicePosition.py index 467a80e3..b4964250 100644 --- a/lib/python/Components/ServicePosition.py +++ b/lib/python/Components/ServicePosition.py @@ -1,16 +1,18 @@ from PerServiceDisplay import PerServiceDisplay, PerServiceBase -from enigma import eTimer, iPlayableService, iSeekableServicePtr, ePositionGauge +from Components.GUIComponent import GUIComponent +from enigma import eTimer, iPlayableService, ePositionGauge import time -class ServicePosition(PerServiceDisplay): +class ServicePosition(PerServiceDisplay, object): TYPE_LENGTH = 0, TYPE_POSITION = 1, TYPE_REMAINING = 2, TYPE_RELATIVE = 3 def __init__(self, navcore, type): + object.__init__(self) self.updateTimer = eTimer() - self.updateTimer.timeout.get().append(self.update) + self.updateTimer.callback.append(self.update) PerServiceDisplay.__init__(self, navcore, { iPlayableService.evStart: self.newService, @@ -65,8 +67,11 @@ class ServicePosition(PerServiceDisplay): l = self.get(self.TYPE_POSITION) if l != -1: l += self.relative_base - t = time.localtime(l) - timestr = "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec) + try: + t = time.localtime(l) + timestr = "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec) + except ValueError: + timestr = "" else: timestr = "" @@ -81,8 +86,9 @@ class ServicePosition(PerServiceDisplay): self.updateTimer.stop() self.setText(""); -class ServicePositionGauge(PerServiceBase): +class ServicePositionGauge(PerServiceBase, GUIComponent): def __init__(self, navcore): + GUIComponent.__init__(self) PerServiceBase.__init__(self, navcore, { iPlayableService.evStart: self.newService, @@ -90,6 +96,7 @@ class ServicePositionGauge(PerServiceBase): iPlayableService.evCuesheetChanged: self.newCuesheet }) self.instance = None + self.__seek_position = 0 def newService(self): if self.get() is None: @@ -102,7 +109,7 @@ class ServicePositionGauge(PerServiceBase): service = self.navcore.getCurrentService() seek = service and service.seek() if seek is None: - return None + return (0, 0) len = seek.getLength() pos = seek.getPlayPosition() @@ -123,16 +130,41 @@ class ServicePositionGauge(PerServiceBase): def stopEvent(self): self.disablePolling() - def GUIcreate(self, parent): - self.instance = ePositionGauge(parent) + GUI_WIDGET = ePositionGauge + + def postWidgetCreate(self, instance): self.newService() + self.setSeekPosition(self.__seek_position) - def GUIdelete(self): - self.instance = None - def newCuesheet(self): service = self.navcore.getCurrentService() cue = service and service.cueSheet() cutlist = (cue and cue.getCutList()) or [ ] if self.instance is not None: self.instance.setInOutList(cutlist) + + def getSeekEnable(self): + return self.__seek_enable + + def setSeekEnable(self, val): + self.__seek_enable = val + if self.instance is not None: + self.instance.enableSeekPointer(val) + + seek_pointer_enabled = property(getSeekEnable, setSeekEnable) + + def getSeekPosition(self): + return self.__seek_position + + def setSeekPosition(self, pos): + print "set seek position:", pos + self.__seek_position = pos + if self.instance is not None: + print "set instance." + self.instance.setSeekPosition(pos) + + seek_pointer_position = property(getSeekPosition, setSeekPosition) + + def destroy(self): + PerServiceBase.destroy(self) + GUIComponent.destroy(self)