X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c0d78035b8c76e719bf7c05ff3812eb5a6ce9fe3..080c2a83b79af8afe48105bb0a1b69d3597a2e49:/lib/python/Components/ServicePosition.py diff --git a/lib/python/Components/ServicePosition.py b/lib/python/Components/ServicePosition.py index cb444921..6f7082d5 100644 --- a/lib/python/Components/ServicePosition.py +++ b/lib/python/Components/ServicePosition.py @@ -1,14 +1,16 @@ 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) PerServiceDisplay.__init__(self, navcore, @@ -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() @@ -127,6 +134,7 @@ class ServicePositionGauge(PerServiceBase): def postWidgetCreate(self, instance): self.newService() + self.setSeekPosition(self.__seek_position) def newCuesheet(self): service = self.navcore.getCurrentService() @@ -134,3 +142,25 @@ class ServicePositionGauge(PerServiceBase): 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)