from Components.ActionMap import ActionMap, HelpableActionMap
from Components.ActionMap import NumberActionMap
from Components.BlinkingPixmap import BlinkingPixmapConditional
-from Components.Clock import Clock
from Components.Harddisk import harddiskmanager
from Components.Input import Input
from Components.Label import *
from Components.Sources.EventInfo import EventInfo
from Components.Sources.FrontendStatus import FrontendStatus
from Components.Sources.Boolean import Boolean
+from Components.Sources.Clock import Clock
from Components.TimerList import TimerEntryComponent
from Components.config import config, configElement, ConfigSubsection, configSequence, configElementBoolean, configSelection, configElement_nonSave, getConfigListEntry
from Components.config import configfile, configsequencearg
self["ChannelSelectActions"] = HelpableActionMap(self, "InfobarChannelSelection",
{
- "switchChannelUp": self.switchChannelUp,
- "switchChannelDown": self.switchChannelDown,
+ "switchChannelUp": (self.switchChannelUp, _("open servicelist(up)")),
+ "switchChannelDown": (self.switchChannelDown, _("open servicelist(down)")),
"zapUp": (self.zapUp, _("previous channel")),
"zapDown": (self.zapDown, _("next channel")),
"historyBack": (self.historyBack, _("previous channel in history")),
"historyNext": (self.historyNext, _("next channel in history")),
- "openServiceList": (self.openServiceList, _("open service list")),
+ "openServiceList": (self.openServiceList, _("open servicelist")),
})
def showTvChannelList(self, zap=False):
self.session.execDialog(self.servicelist)
def zapUp(self):
- if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes":
- if self.servicelist.inBouquet() and self.servicelist.atBegin():
- self.servicelist.prevBouquet()
- self.servicelist.moveUp()
+ if self.servicelist.inBouquet():
+ prev = self.servicelist.getCurrentSelection()
+ if prev:
+ prev = prev.toString()
+ while True:
+ if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes":
+ if self.servicelist.atBegin():
+ self.servicelist.prevBouquet()
+ self.servicelist.moveUp()
+ cur = self.servicelist.getCurrentSelection()
+ if not cur or (not (cur.flags & 64)) or cur.toString() == prev:
+ break
+ else:
+ self.servicelist.moveUp()
self.servicelist.zap()
self.doShow()
def zapDown(self):
- if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.inBouquet() and self.servicelist.atEnd():
- self.servicelist.nextBouquet()
+ if self.servicelist.inBouquet():
+ prev = self.servicelist.getCurrentSelection()
+ if prev:
+ prev = prev.toString()
+ while True:
+ if currentConfigSelectionElement(config.usage.quickzap_bouquet_change) == "yes" and self.servicelist.atEnd():
+ self.servicelist.nextBouquet()
+ else:
+ self.servicelist.moveDown()
+ cur = self.servicelist.getCurrentSelection()
+ if not cur or (not (cur.flags & 64)) or cur.toString() == prev:
+ break
else:
self.servicelist.moveDown()
self.servicelist.zap()
def __init__(self):
self["MenuActions"] = HelpableActionMap(self, "InfobarMenuActions",
{
- "mainMenu": (self.mainMenu, "Enter main menu..."),
+ "mainMenu": (self.mainMenu, _("Enter main menu...")),
})
def mainMenu(self):
self["SeekActions"] = InfoBarSeekActionMap(self, "InfobarSeekActions",
{
- "pauseService": (self.pauseService, "pause"),
- "unPauseService": (self.unPauseService, "continue"),
+ "pauseService": (self.pauseService, _("pause")),
+ "unPauseService": (self.unPauseService, _("continue")),
- "seekFwd": (self.seekFwd, "skip forward"),
+ "seekFwd": (self.seekFwd, _("skip forward")),
"seekFwdDown": self.seekFwdDown,
"seekFwdUp": self.seekFwdUp,
- "seekBack": (self.seekBack, "skip backward"),
+ "seekBack": (self.seekBack, _("skip backward")),
"seekBackDown": self.seekBackDown,
"seekBackUp": self.seekBackUp,
}, prio=-1)
def __init__(self):
InfoBarPVRState.__init__(self, screen=TimeshiftState)
-
class InfoBarShowMovies:
# i don't really like this class.
def __init__(self):
self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions",
{
- "timeshiftStart": (self.startTimeshift, "start timeshift"), # the "yellow key"
- "timeshiftStop": (self.stopTimeshift, "stop timeshift") # currently undefined :), probably 'TV'
+ "timeshiftStart": (self.startTimeshift, _("start timeshift")), # the "yellow key"
+ "timeshiftStop": (self.stopTimeshift, _("stop timeshift")) # currently undefined :), probably 'TV'
}, prio=1)
self["TimeshiftActivateActions"] = ActionMap(["InfobarTimeshiftActivateActions"],
{
print "enable timeshift"
ts = self.getTimeshift()
if ts is None:
- self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
- print "no ts interface"
- return
+# self.session.open(MessageBox, _("Timeshift not possible!"), MessageBox.TYPE_ERROR)
+# print "no ts interface"
+ return 0;
if self.timeshift_enabled:
print "hu, timeshift already enabled?"
if not ts.startTimeshift():
import time
self.timeshift_enabled = 1
-
+
# we remove the "relative time" for now.
#self.pvrStateDialog["timeshift"].setRelative(time.time())
-
+
# PAUSE.
self.setSeekState(self.SEEK_STATE_PAUSE)
def stopTimeshift(self):
if not self.timeshift_enabled:
- return
+ return 0
print "disable timeshift"
ts = self.getTimeshift()
if ts is None:
- return
+ return 0
self.session.openWithCallback(self.stopTimeshiftConfirmed, MessageBox, _("Stop Timeshift?"), MessageBox.TYPE_YESNO)
def stopTimeshiftConfirmed(self, confirmed):
self["InstantExtensionsActions"] = HelpableActionMap(self, "InfobarExtensions",
{
- "extensions": (self.extensions, "Extensions..."),
+ "extensions": (self.extensions, _("view extensions...")),
})
PIPON = 0
l = s and s.getSubtitleList() or [ ]
for x in l:
- list.append(("DEBUG: Enable Subtitles: " + x[0], self.ENABLE_SUBTITLE, x[1]))
+ list.append(("Enable Subtitles: " + x[0], self.ENABLE_SUBTITLE, x[1]))
self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list)
def __init__(self):
self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
{
- "instantRecord": (self.instantRecord, "Instant Record..."),
+ "instantRecord": (self.instantRecord, _("Instant Record...")),
})
self.recording = []
self["BlinkingPoint"] = BlinkingPixmapConditional()
except:
self.session.open(MessageBox, _("No HDD found or HDD not initialized!"), MessageBox.TYPE_ERROR)
return
-
+
if self.isInstantRecordRunning():
self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("A recording is currently running.\nWhat do you want to do?"), list=[(_("stop recording"), "stop"), (_("change recording (duration)"), "changeduration"), (_("add recording (indefinitely)"), "indefinitely"), (_("add recording (stop after current event)"), "event"), (_("add recording (enter recording duration)"), "manualduration"), (_("do nothing"), "no")])
else:
def __init__(self):
self["AudioSelectionAction"] = HelpableActionMap(self, "InfobarAudioSelectionActions",
{
- "audioSelection": (self.audioSelection, "Audio Options..."),
+ "audioSelection": (self.audioSelection, _("Audio Options...")),
})
def audioSelection(self):
CUT_TYPE_IN = 0
CUT_TYPE_OUT = 1
CUT_TYPE_MARK = 2
+ CUT_TYPE_LAST = 3
+
+ ENABLE_RESUME_SUPPORT = False
def __init__(self):
self["CueSheetActions"] = HelpableActionMap(self, "InfobarCueSheetActions",
}, prio=1)
self.cut_list = [ ]
+ self.is_closing = False
self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
{
iPlayableService.evStart: self.__serviceStarted,
})
def __serviceStarted(self):
+ if self.is_closing:
+ return
print "new service started! trying to download cuts!"
self.downloadCuesheet()
+
+ if self.ENABLE_RESUME_SUPPORT:
+ last = None
+
+ for (pts, what) in self.cut_list:
+ if what == self.CUT_TYPE_LAST:
+ last = pts
+
+ if last is not None:
+ self.resume_point = last
+ Notifications.AddNotificationWithCallback(self.playLastCB, MessageBox, _("Do you want to resume this playback?"), timeout=10)
+
+ def playLastCB(self, answer):
+ if answer == True:
+ seekable = self.__getSeekable()
+ if seekable is not None:
+ seekable.seekTo(self.resume_point)
def __getSeekable(self):
service = self.session.nav.getCurrentService()
class InfoBarSummary(Screen):
skin = """
<screen position="0,0" size="132,64">
- <widget name="Clock" position="50,46" size="82,18" font="Regular;16" />
- <widget name="CurrentService" position="0,4" size="132,42" font="Regular;18" />
+ <widget source="CurrentTime" render="Label" position="50,46" size="82,18" font="Regular;16" >
+ <convert type="ClockToText">WithSeconds</convert>
+ </widget>
+ <widget source="CurrentService" render="Label" position="0,4" size="132,42" font="Regular;18" >
+ <convert type="ServiceName">Name</convert>
+ </widget>
</screen>"""
def __init__(self, session, parent):
Screen.__init__(self, session)
self["CurrentService"] = CurrentService(self.session.nav)
- self["Clock"] = Clock()
+ self["CurrentTime"] = Clock()
class InfoBarSummarySupport:
def __init__(self):
if self.teletext_plugin is not None:
self["TeletextActions"] = HelpableActionMap(self, "InfobarTeletextActions",
{
- "startTeletext": (self.startTeletext, "View teletext...")
+ "startTeletext": (self.startTeletext, _("View teletext..."))
})
else:
print "no teletext plugin found!"