self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
{
"showEventInfo": (self.openEventView, _("show EPG...")),
+ "showInfobarOrEpgWhenInfobarAlreadyVisible": self.showEventInfoWhenNotVisible,
})
+ def showEventInfoWhenNotVisible(self):
+ if self.shown:
+ self.openEventView()
+ else:
+ self.toggleShow()
+ return 1
+
def zapToService(self, service):
if not service is None:
if self.servicelist.getRoot() != self.epg_bouquet: #already in correct bouquet?
SEEK_STATE_EOF = (1, 0, 0, "END")
- def __init__(self):
+ def __init__(self, actionmap = "InfobarSeekActions"):
self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged,
if action[:5] == "seek:":
time = int(action[5:])
self.screen.seekRelative(time * 90000)
- self.screen.doShow()
+ self.screen.showAfterSeek()
return 1
else:
return HelpableActionMap.action(self, contexts, action)
- self["SeekActions"] = InfoBarSeekActionMap(self, "InfobarSeekActions",
+ self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,
{
- "playpauseService": (self.playpauseService, _("pause")),
+ "playpauseService": self.playpauseService,
"pauseService": (self.pauseService, _("pause")),
"unPauseService": (self.unPauseService, _("continue")),
"seekFwd": (self.seekFwd, _("skip forward")),
- "seekFwdDown": self.seekFwdDown,
- "seekFwdUp": self.seekFwdUp,
+ "seekFwdManual": (self.seekFwdManual, _("skip forward (enter time)")),
"seekBack": (self.seekBack, _("skip backward")),
- "seekBackDown": self.seekBackDown,
- "seekBackUp": self.seekBackUp,
+ "seekBackManual": (self.seekBackManual, _("skip backward (enter time)")),
+
+ "seekFwdDef": (self.seekFwdDef, _("skip forward (self defined)")),
+ "seekBackDef": (self.seekBackDef, _("skip backward (self defined)"))
}, prio=-1)
# give them a little more priority to win over color buttons
self["SeekActions"].setEnabled(False)
self.seekstate = self.SEEK_STATE_PLAY
- self.onClose.append(self.delTimer)
-
- self.fwdtimer = False
- self.fwdKeyTimer = eTimer()
- self.fwdKeyTimer.timeout.get().append(self.fwdTimerFire)
-
- self.rwdtimer = False
- self.rwdKeyTimer = eTimer()
- self.rwdKeyTimer.timeout.get().append(self.rwdTimerFire)
self.onPlayStateChanged = [ ]
self.lockedBecauseOfSkipping = False
+ self.__seekableStatusChanged()
+
+ def showAfterSeek(self):
+ if isinstance(self, InfoBarShowHide):
+ self.doShow()
+
def up(self):
pass
def down(self):
pass
- def delTimer(self):
- del self.fwdKeyTimer
- del self.rwdKeyTimer
-
def getSeek(self):
service = self.session.nav.getCurrentService()
if service is None:
seekable.seekTo(90 * seektime)
- def seekFwdDown(self):
- print "start fwd timer"
- self.fwdtimer = True
- self.fwdKeyTimer.start(1000)
-
- def seekBackDown(self):
- print "start rewind timer"
- self.rwdtimer = True
- self.rwdKeyTimer.start(1000)
-
- def seekFwdUp(self):
- print "seekFwdUp"
- if self.fwdtimer:
- self.fwdKeyTimer.stop()
- self.fwdtimer = False
- self.seekFwd()
-
def seekFwd(self):
lookup = {
self.SEEK_STATE_PLAY: self.SEEK_STATE_FF_2X,
}
self.setSeekState(lookup[self.seekstate])
- def seekBackUp(self):
- print "seekBackUp"
- if self.rwdtimer:
- self.rwdKeyTimer.stop()
- self.rwdtimer = False
- self.seekBack()
-
def seekBack(self):
lookup = {
self.SEEK_STATE_PLAY: self.SEEK_STATE_BACK_16X,
if seekable is not None:
seekable.seekRelative(-1, 3)
- def fwdTimerFire(self):
- print "Display seek fwd"
- self.fwdKeyTimer.stop()
- self.fwdtimer = False
+ def seekFwdDef(self):
+ seconds = config.usage.self_defined_seek.value
+ print "Seek", seconds, "seconds self defined forward"
+ seekable = self.getSeek()
+ if seekable is not None:
+ seekable.seekRelative(1, seconds * 90000)
+
+ def seekBackDef(self):
+ seconds = config.usage.self_defined_seek.value
+ print "Seek", seconds, "seconds self defined backward"
+ seekable = self.getSeek()
+ if seekable is not None:
+ seekable.seekRelative(1, 0 - seconds * 90000)
+
+ def seekFwdManual(self):
self.session.openWithCallback(self.fwdSeekTo, MinuteInput)
def fwdSeekTo(self, minutes):
if seekable is not None:
seekable.seekRelative(1, minutes * 60 * 90000)
- def rwdTimerFire(self):
- print "rwdTimerFire"
- self.rwdKeyTimer.stop()
- self.rwdtimer = False
+ def seekBackManual(self):
self.session.openWithCallback(self.rwdSeekTo, MinuteInput)
def rwdSeekTo(self, minutes):
def __init__(self):
self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions",
{
- "movieList": (self.showMovies, "movie list"),
- "up": (self.showMovies, "movie list"),
- "down": (self.showMovies, "movie list")
+ "movieList": (self.showMovies, _("movie list")),
+ "up": (self.showMovies, _("movie list")),
+ "down": (self.showMovies, _("movie list"))
})
# InfoBarTimeshift requires InfoBarSeek, instantiated BEFORE!
self.session.pipshown = False
else:
self.session.pip = self.session.instantiateDialog(PictureInPicture)
+ self.session.pip.show()
newservice = self.session.nav.getCurrentlyPlayingServiceReference()
if self.session.pip.playService(newservice):
self.session.pipshown = True
ENABLE_RESUME_SUPPORT = False
- def __init__(self):
- self["CueSheetActions"] = HelpableActionMap(self, "InfobarCueSheetActions",
+ def __init__(self, actionmap = "InfobarCueSheetActions"):
+ self["CueSheetActions"] = HelpableActionMap(self, actionmap,
{
- "jumpPreviousMark": (self.jumpPreviousMark, "jump to next marked position"),
- "jumpNextMark": (self.jumpNextMark, "jump to previous marked position"),
- "toggleMark": (self.toggleMark, "toggle a cut mark at the current position")
+ "jumpPreviousMark": (self.jumpPreviousMark, _("jump to previous marked position")),
+ "jumpNextMark": (self.jumpNextMark, _("jump to next marked position")),
+ "toggleMark": (self.toggleMark, _("toggle a cut mark at the current position"))
}, prio=1)
self.cut_list = [ ]
seekable = self.__getSeekable()
if seekable is not None:
seekable.seekTo(self.resume_point)
+ self.hideAfterResume()
+
+ def hideAfterResume(self):
+ if isinstance(self, InfoBarShowHide):
+ self.hide()
def __getSeekable(self):
service = self.session.nav.getCurrentService()
nearest = None
for cp in self.cut_list:
diff = cmp(cp[0] - pts)
- if diff >= 0 and (nearest is None or cmp(nearest[0] - pts) > diff):
+ if cp[1] == self.CUT_TYPE_MARK and diff >= 0 and (nearest is None or cmp(nearest[0] - pts) > diff):
nearest = cp
return nearest
def addMark(self, point):
insort(self.cut_list, point)
self.uploadCuesheet()
+ self.showAfterCuesheetOperation()
def removeMark(self, point):
self.cut_list.remove(point)
self.uploadCuesheet()
+ self.showAfterCuesheetOperation()
+
+ def showAfterCuesheetOperation(self):
+ if isinstance(self, InfoBarShowHide):
+ self.doShow()
def __getCuesheet(self):
service = self.session.nav.getCurrentService()
cue = self.__getCuesheet()
if cue is None:
- print "upload failed, no cuesheet interface"
- return
- self.cut_list = cue.getCutList()
+ print "download failed, no cuesheet interface"
+ self.cut_list = [ ]
+ else:
+ self.cut_list = cue.getCutList()
class InfoBarSummary(Screen):
skin = """