aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-04-27 09:22:18 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-04-27 09:22:18 +0000
commitc803490aec2d7c7f13966e1a2e926cac018dea2e (patch)
treef50fbd414676fb98851254030d535dd15a7c7c72 /lib/python
parent59cee6bc80d4697bec7bebb8dd65312bddec34ad (diff)
downloadenigma2-c803490aec2d7c7f13966e1a2e926cac018dea2e.tar.gz
enigma2-c803490aec2d7c7f13966e1a2e926cac018dea2e.zip
make bouquet +/- useable in multiepg to change directly from one to another bouquet epg
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Components/MenuList.py7
-rw-r--r--lib/python/Screens/ChannelSelection.py17
-rw-r--r--lib/python/Screens/EpgSelection.py27
-rw-r--r--lib/python/Screens/InfoBarGenerics.py33
4 files changed, 65 insertions, 19 deletions
diff --git a/lib/python/Components/MenuList.py b/lib/python/Components/MenuList.py
index 0e337198..f4b2c361 100644
--- a/lib/python/Components/MenuList.py
+++ b/lib/python/Components/MenuList.py
@@ -4,12 +4,13 @@ from GUIComponent import *
from enigma import eListboxPythonStringContent, eListbox
class MenuList(HTMLComponent, GUIComponent):
- def __init__(self, list):
+ def __init__(self, list, enableWrapAround=False):
GUIComponent.__init__(self)
self.list = list
self.l = eListboxPythonStringContent()
self.l.setList(self.list)
self.onSelectionChanged = [ ]
+ self.enableWrapAround = enableWrapAround
def getCurrent(self):
return self.l.getCurrentSelection()
@@ -18,6 +19,8 @@ class MenuList(HTMLComponent, GUIComponent):
self.instance = eListbox(parent)
self.instance.setContent(self.l)
self.instance.selectionChanged.get().append(self.selectionChanged)
+ if self.enableWrapAround:
+ self.instance.setWrapAround(True)
def GUIdelete(self):
self.instance.setContent(None)
@@ -52,4 +55,4 @@ class MenuList(HTMLComponent, GUIComponent):
def selectionEnabled(self, enabled):
if self.instance is not None:
- self.instance.setSelectionEnable(enabled) \ No newline at end of file
+ self.instance.setSelectionEnable(enabled)
diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py
index a38182ed..32c3b107 100644
--- a/lib/python/Screens/ChannelSelection.py
+++ b/lib/python/Screens/ChannelSelection.py
@@ -21,7 +21,7 @@ from os import remove
import xml.dom.minidom
class BouquetSelector(Screen):
- def __init__(self, session, bouquets, selectedFunc):
+ def __init__(self, session, bouquets, selectedFunc, enableWrapAround=False):
Screen.__init__(self, session)
self.selectedFunc=selectedFunc
@@ -34,16 +34,25 @@ class BouquetSelector(Screen):
entrys = [ ]
for x in bouquets:
entrys.append((x[0], x[1]))
- self["menu"] = MenuList(entrys)
+ self["menu"] = MenuList(entrys, enableWrapAround)
+
+ def getCurrent(self):
+ cur = self["menu"].getCurrent()
+ return cur and cur[1]
def okbuttonClick(self):
- self.selectedFunc(self["menu"].getCurrent()[1])
+ self.selectedFunc(self.getCurrent())
+
+ def up(self):
+ self["menu"].up()
+
+ def down(self):
+ self["menu"].down()
def cancelClick(self):
self.close(False)
class ChannelContextMenu(Screen):
-
def __init__(self, session, csel):
Screen.__init__(self, session)
self.csel = csel
diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py
index a5b61a1c..1af2cbb9 100644
--- a/lib/python/Screens/EpgSelection.py
+++ b/lib/python/Screens/EpgSelection.py
@@ -19,9 +19,10 @@ from time import localtime
import xml.dom.minidom
class EPGSelection(Screen):
- def __init__(self, session, service, zapFunc=None, eventid=None):
+ def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None):
Screen.__init__(self, session)
- self.asked_specific_time = False
+ self.bouquetChangeCB = bouquetChangeCB
+ self.ask_time = -1 #now
self["key_red"] = Button("")
self.closeRecursive = False
if isinstance(service, str) and eventid != None:
@@ -70,12 +71,22 @@ class EPGSelection(Screen):
"blue": self.blueButtonPressed,
"info": self.infoKeyPressed,
"zapTo": self.zapTo,
- "input_date_time": self.enterDateTime
+ "input_date_time": self.enterDateTime,
+ "nextBouquet": self.nextBouquet,
+ "prevBouquet": self.prevBouquet
})
self["actions"].csel = self
self.onLayoutFinish.append(self.onCreate)
+ def nextBouquet(self):
+ if self.bouquetChangeCB:
+ self.bouquetChangeCB(1, self)
+
+ def prevBouquet(self):
+ if self.bouquetChangeCB:
+ self.bouquetChangeCB(-1, self)
+
def enterDateTime(self):
if self.type == EPG_TYPE_MULTI:
self.session.openWithCallback(self.onDateTimeInputClosed, TimeDateInput)
@@ -83,7 +94,7 @@ class EPGSelection(Screen):
def onDateTimeInputClosed(self, ret):
if len(ret) > 1:
if ret[0]:
- self.asked_specific_time=True
+ self.ask_time=ret[1]
self["list"].fillMultiEPG(self.services, ret[1])
def closeScreen(self):
@@ -106,12 +117,16 @@ class EPGSelection(Screen):
def openSimilarList(self, eventid, refstr):
self.session.open(EPGSelection, refstr, None, eventid)
+ def setServices(self, services):
+ self.services = services
+ self.onCreate()
+
#just used in multipeg
def onCreate(self):
l = self["list"]
if self.type == EPG_TYPE_MULTI:
l.recalcEntrySize()
- l.fillMultiEPG(self.services)
+ l.fillMultiEPG(self.services, self.ask_time)
elif self.type == EPG_TYPE_SINGLE:
if SINGLE_CPP == 0:
l.recalcEntrySize()
@@ -218,7 +233,7 @@ class EPGSelection(Screen):
def onSelectionChanged(self):
if self.type == EPG_TYPE_MULTI:
count = self["list"].getCurrentChangeCount()
- if self.asked_specific_time:
+ if self.ask_time != -1:
self.applyButtonState(0)
elif count > 1:
self.applyButtonState(3)
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py
index d826dedf..9daea0b9 100644
--- a/lib/python/Screens/InfoBarGenerics.py
+++ b/lib/python/Screens/InfoBarGenerics.py
@@ -343,6 +343,7 @@ class InfoBarEPG:
""" EPG - Opens an EPG list when the showEPGList action fires """
def __init__(self):
self.dlg_stack = [ ]
+ self.bouquetSel = None
self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
{
"showEventInfo": (self.openEventView, _("show EPG...")),
@@ -358,8 +359,7 @@ class InfoBarEPG:
self.servicelist.setCurrentSelection(service) #select the service in servicelist
self.servicelist.zap()
- def openBouquetEPG(self, bouquet, withCallback=True):
- ptr=eEPGCache.getInstance()
+ def getBouquetServices(self, bouquet):
services = [ ]
servicelist = eServiceCenter.getInstance().list(bouquet)
if not servicelist is None:
@@ -370,15 +370,33 @@ class InfoBarEPG:
if service.flags: #ignore non playable services
continue
services.append(ServiceReference(service))
+ return services
+
+ def openBouquetEPG(self, bouquet, withCallback=True):
+ services = self.getBouquetServices(bouquet)
if len(services):
self.epg_bouquet = bouquet
if withCallback:
- self.dlg_stack.append(self.session.openWithCallback(self.closed, EPGSelection, services, self.zapToService))
+ self.dlg_stack.append(self.session.openWithCallback(self.closed, EPGSelection, services, self.zapToService, None, self.changeBouquetCB))
+ else:
+ self.session.open(EPGSelection, services, self.zapToService, None, self.changeBouquetCB)
+
+ def changeBouquetCB(self, direction, epg):
+ if self.bouquetSel:
+ if direction > 0:
+ self.bouquetSel.down()
else:
- self.session.open(EPGSelection, services, self.zapToService)
+ self.bouquetSel.up()
+ bouquet = self.bouquetSel.getCurrent()
+ services = self.getBouquetServices(bouquet)
+ if len(services):
+ self.epg_bouquet = bouquet
+ epg.setServices(services)
def closed(self, ret=False):
- self.dlg_stack.pop()
+ closedScreen = self.dlg_stack.pop()
+ if self.bouquetSel and closedScreen == self.bouquetSel:
+ self.bouquetSel = None
if ret:
dlgs=len(self.dlg_stack)
assert dlgs>0
@@ -392,9 +410,10 @@ class InfoBarEPG:
cnt = len(bouquets)
if cnt > 1: # show bouquet list
if withCallback:
- self.dlg_stack.append(self.session.openWithCallback(self.closed, BouquetSelector, bouquets, self.openBouquetEPG))
+ self.bouquetSel = self.session.openWithCallback(self.closed, BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
+ self.dlg_stack.append(self.bouquetSel)
else:
- self.session.open(BouquetSelector, bouquets, self.openBouquetEPG)
+ self.bouquetSel = self.session.open(BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
elif cnt == 1:
self.openBouquetEPG(bouquets[0][1], withCallback)