1 from PerServiceDisplay import *
2 from enigma import eTimer
4 from enigma import iPlayableService, iSeekableServicePtr, ePositionGauge
6 class ServicePosition(PerServiceDisplay):
11 def __init__(self, navcore, type):
12 self.updateTimer = eTimer()
13 self.updateTimer.timeout.get().append(self.update)
14 PerServiceDisplay.__init__(self, navcore,
16 iPlayableService.evStart: self.newService,
17 iPlayableService.evEnd: self.stopEvent
23 self.setType(self.type)
25 def setType(self, type):
28 self.updateTimer.start(500)
32 service = self.navcore.getCurrentService()
37 if what == self.TYPE_LENGTH:
39 elif what == self.TYPE_POSITION:
40 r = seek.getPlayPosition()
48 service = self.navcore.getCurrentService()
53 if self.type == self.TYPE_LENGTH:
54 l = self.get(self.TYPE_LENGTH)
55 elif self.type == self.TYPE_POSITION:
56 l = self.get(self.TYPE_POSITION)
57 elif self.type == self.TYPE_REMAINING:
58 l = self.get(self.TYPE_LENGTH) - self.get(self.TYPE_POSITION)
60 self.setText("%d:%02d" % (l/60, l%60))
61 self.updateTimer.start(500)
63 self.updateTimer.start(10000)
67 self.updateTimer.stop()
70 class ServicePositionGauge(PerServiceBase):
71 def __init__(self, navcore):
72 PerServiceBase.__init__(self, navcore,
74 iPlayableService.evStart: self.newService,
75 iPlayableService.evEnd: self.stopEvent
79 if self.get() is None:
82 self.enablePolling(interval=500)
85 service = self.navcore.getCurrentService()
92 len = seek.getLength()
93 pos = seek.getPlayPosition()
97 return (len[1], pos[1])
103 self.instance.setLength(data[0])
104 self.instance.setPosition(data[1])
107 self.disablePolling()
109 def GUIcreate(self, parent):
110 self.instance = ePositionGauge(parent)