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()
33 seek = service and service.seek()
35 if what == self.TYPE_LENGTH:
37 elif what == self.TYPE_POSITION:
38 r = seek.getPlayPosition()
46 service = self.navcore.getCurrentService()
51 if self.type == self.TYPE_LENGTH:
52 l = self.get(self.TYPE_LENGTH)
53 elif self.type == self.TYPE_POSITION:
54 l = self.get(self.TYPE_POSITION)
55 elif self.type == self.TYPE_REMAINING:
56 l = self.get(self.TYPE_LENGTH) - self.get(self.TYPE_POSITION)
58 self.setText("%d:%02d" % (l/60, l%60))
59 self.updateTimer.start(500)
61 self.updateTimer.start(10000)
65 self.updateTimer.stop()
68 class ServicePositionGauge(PerServiceBase):
69 def __init__(self, navcore):
70 PerServiceBase.__init__(self, navcore,
72 iPlayableService.evStart: self.newService,
73 iPlayableService.evEnd: self.stopEvent,
74 iPlayableService.evCuesheetChanged: self.newCuesheet
79 if self.get() is None:
82 self.enablePolling(interval=500)
86 service = self.navcore.getCurrentService()
87 seek = service and service.seek()
91 len = seek.getLength()
92 pos = seek.getPlayPosition()
96 return (len[1], pos[1])
103 if self.instance is not None:
104 self.instance.setLength(data[0])
105 self.instance.setPosition(data[1])
108 self.disablePolling()
110 def GUIcreate(self, parent):
111 self.instance = ePositionGauge(parent)
117 def newCuesheet(self):
118 service = self.navcore.getCurrentService()
119 cue = service and service.cueSheet()
120 cutlist = (cue and cue.getCutList()) or [ ]
121 if self.instance is not None:
122 self.instance.setInOutList(cutlist)