from Components.ProgressBar import *
from Components.ServiceEventTracker import ServiceEventTracker
from Components.ServiceName import ServiceName
-from Components.config import config, configElement, ConfigSubsection, configSequence, configElementBoolean
+from Components.config import config, configElement, ConfigSubsection, configSequence, configElementBoolean, configSelection, configElement_nonSave, getConfigListEntry
from Components.config import configfile, configsequencearg
from Components.TimerList import TimerEntryComponent
from Components.TunerInfo import TunerInfo
config.misc.initialchannelselection.value = 0
config.misc.initialchannelselection.save()
self.switchChannelDown()
-
+
def historyBack(self):
self.servicelist.historyBack()
if self.is_now_next and len(self.dlg_stack) == 1:
self.getNowNext()
assert self.eventView
- self.eventView.setEvent(self.epglist[0])
+ if len(self.epglist):
+ self.eventView.setEvent(self.epglist[0])
def openEventView(self):
ref = self.session.nav.getCurrentlyPlayingServiceReference()
{
"extensions": (self.extensions, "Extensions..."),
})
-
+
+ PIPON = 0
+ PIPOFF = 1
+ MOVEPIP = 2
+ PIPSWAP = 3
+
def extensions(self):
list = []
if self.pipshown == False:
- list.append((_("Activate Picture in Picture"), "pipon"))
+ list.append((_("Activate Picture in Picture"), self.PIPON))
elif self.pipshown == True:
- list.append((_("Disable Picture in Picture"), "pipoff"))
- list.append((_("Move Picture in Picture"), "movepip"))
+ list.append((_("Disable Picture in Picture"), self.PIPOFF))
+ list.append((_("Move Picture in Picture"), self.MOVEPIP))
+ list.append((_("Swap services"), self.PIPSWAP))
self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list)
def extensionCallback(self, answer):
if answer is not None:
- if answer[1] == "pipon":
- self.session.nav.stopService()
+ if answer[1] == self.PIPON:
self.pip = self.session.instantiateDialog(PictureInPicture)
- #self.pip.show()
newservice = self.session.nav.getCurrentlyPlayingServiceReference()
- self.pipservice = eServiceCenter.getInstance().play(newservice)
- if self.pipservice and not self.pipservice.setTarget(1):
- self.pipservice.start()
+
+ if self.pip.playService(newservice):
self.pipshown = True
else:
- self.pipservice = None
+ self.pipshown = False
del self.pip
self.session.nav.playService(newservice)
- elif answer[1] == "pipoff":
- #self.pip.hide()
- self.pipservice = None
+ elif answer[1] == self.PIPOFF:
del self.pip
self.pipshown = False
- elif answer[1] == "movepip":
+ elif answer[1] == self.PIPSWAP:
+ swapservice = self.pip.getCurrentService()
+ self.pip.playService(self.session.nav.getCurrentlyPlayingServiceReference())
+ self.session.nav.playService(swapservice)
+
+ elif answer[1] == self.MOVEPIP:
self.session.open(PiPSetup, pip = self.pip)
from RecordTimer import parseEvent
def audioSelection(self):
service = self.session.nav.getCurrentService()
audio = service.audioTracks()
- self.audio = audio
+ self.audioTracks = audio
n = audio.getNumberOfTracks()
if n > 0:
+# self.audioChannel = service.audioChannel()
+# config.audio.audiochannel = configElement_nonSave("config.audio.audiochannel", configSelection, self.audioChannel.getCurrentChannel(), (("left", _("Left >")), ("stereo", _("< Stereo >")), ("right", _("< Right"))))
tlist = []
for x in range(n):
i = audio.getTrackInfo(x)
selectedAudio = tlist[0][1]
tlist.sort(lambda x,y : cmp(x[0], y[0]))
+
+# tlist.insert(0, getConfigListEntry(_("Audio Channel"), config.audio.audiochannel))
+
selection = 0
for x in tlist:
if x[1] != selectedAudio:
break
self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection)
+ else:
+ del self.audioTracks
def audioSelected(self, audio):
if audio is not None:
- self.audio.selectTrack(audio[1])
+ self.audioTracks.selectTrack(audio[1])
+ del self.audioTracks
+# del self.audioChannel
+# del config.audio.audiochannel
class InfoBarSubserviceSelection:
def __init__(self):
self["SubserviceSelectionAction"] = HelpableActionMap(self, "InfobarSubserviceSelectionActions",
{
- "subserviceSelection": (self.subserviceSelection, "Subservice list..."),
+ "subserviceSelection": (self.subserviceSelection, _("Subservice list...")),
})
+ self["SubserviceQuickzapAction"] = HelpableActionMap(self, "InfobarSubserviceQuickzapActions",
+ {
+ "nextSubservice": (self.nextSubservice, _("Switch to next subservice")),
+ "prevSubservice": (self.prevSubservice, _("Switch to previous subservice"))
+ }, -1)
+ self["SubserviceQuickzapAction"].setEnabled(False)
+
+ self.session.nav.event.append(self.checkSubservicesAvail) # we like to get service events
+
+ def checkSubservicesAvail(self, ev):
+ if ev == iPlayableService.evUpdatedEventInfo:
+ service = self.session.nav.getCurrentService()
+ subservices = service.subServices()
+ if subservices.getNumberOfSubservices() == 0:
+ self["SubserviceQuickzapAction"].setEnabled(False)
+
+ def nextSubservice(self):
+ self.changeSubservice(+1)
+
+ def prevSubservice(self):
+ self.changeSubservice(-1)
+
+ def changeSubservice(self, direction):
+ service = self.session.nav.getCurrentService()
+ subservices = service.subServices()
+ n = subservices.getNumberOfSubservices()
+ if n > 0:
+ selection = -1
+ ref = self.session.nav.getCurrentlyPlayingServiceReference()
+ for x in range(n):
+ if subservices.getSubservice(x).toString() == ref.toString():
+ selection = x
+ if selection != -1:
+ selection += direction
+ if selection >= n:
+ selection=0
+ elif selection < 0:
+ selection=n-1
+ newservice = subservices.getSubservice(selection)
+ if newservice.valid():
+ del subservices
+ del service
+ self.session.nav.playService(newservice)
+
def subserviceSelection(self):
service = self.session.nav.getCurrentService()
subservices = service.subServices()
def subserviceSelected(self, service):
if not service is None:
+ self["SubserviceQuickzapAction"].setEnabled(True)
self.session.nav.playService(service[1])
class InfoBarAdditionalInfo:
Notifications.notificationAdded.append(self.checkNotificationsIfExecing)
def checkNotificationsIfExecing(self):
- if self.execing:
- self.checkNotifications()
+ try:
+ if self.execing:
+ self.checkNotifications()
+ except:
+ print "******************************* A SEVERE ERROR HAPPENED... Someone who understands the code... please fix :) *******"
def checkNotifications(self):
if len(Notifications.notifications):
print "open",n
cb = n[0]
if cb is not None:
- self.session.openWithCallback(cb, *n[1:])
+ self.session.openWithCallback(cb, n[1], *n[2], **n[3])
else:
- self.session.open(*n[1:])
+ self.session.open(n[1], *n[2], **n[3])
class InfoBarServiceNotifications:
def __init__(self):