fixes bug #354
authorthedoc <thedoc@atom.(none)>
Tue, 15 Dec 2009 15:18:52 +0000 (16:18 +0100)
committerthedoc <thedoc@atom.(none)>
Wed, 23 Dec 2009 13:36:27 +0000 (14:36 +0100)
change MenuList to ChoiceList in ChannelContext and assign Blue button to PiP activation

data/skin_default.xml
lib/python/Components/ChoiceList.py
lib/python/Screens/ChannelSelection.py

index 71f579cb2f551be595b40126997b17532ab0449c..7aaff38fa213eff09136f9027876aec9c854c9e6 100755 (executable)
@@ -70,8 +70,8 @@
                <widget name="menu" position="10,10" size="290,225" scrollbarMode="showOnDemand" />
        </screen>
        <!-- Channel context menu -->
-       <screen name="ChannelContextMenu" position="center,center" size="300,255" title="Channellist menu">
-               <widget name="menu" position="10,10" size="290,230" scrollbarMode="showOnDemand" />
+       <screen name="ChannelContextMenu" position="center,center" size="350,255" title="Channellist menu">
+               <widget name="menu" position="10,10" size="340,230" scrollbarMode="showOnDemand" />
        </screen>
        <!-- Channel selection - TV -->
        <screen name="ChannelSelection" position="center,center" size="560,430" title="Channel Selection">
index 4700e9e61a8af591c3ee0b1104cf994c319ebad3..33868d610ade518f12703f2e01152589f90e16d7 100755 (executable)
@@ -3,7 +3,7 @@ from Tools.Directories import SCOPE_CURRENT_SKIN, resolveFilename
 from enigma import RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
 from Tools.LoadPixmap import LoadPixmap
 
-def ChoiceEntryComponent(key, text):
+def ChoiceEntryComponent(key = "", text = ["--"]):
        res = [ text ]
        if text[0] == "--":
                res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 00, 800, 25, 0, RT_HALIGN_LEFT, "-"*200))
index d4a098c35e5b13e2f37d679ea12255f01a269554..e8bbce156e964fad10987bc5c7d63c4babf06cd9 100644 (file)
@@ -21,6 +21,7 @@ profile("ChannelSelection.py 2.3")
 from Components.Input import Input
 profile("ChannelSelection.py 3")
 from Components.ParentalControl import parentalControl
+from Components.ChoiceList import ChoiceList, ChoiceEntryComponent
 from Screens.InputBox import InputBox, PinInput
 from Screens.MessageBox import MessageBox
 from Screens.ServiceInfo import ServiceInfo
@@ -70,9 +71,9 @@ OFF = 0
 EDIT_BOUQUET = 1
 EDIT_ALTERNATIVES = 2
 
-def append_when_current_valid(current, menu, args, level = 0):
+def append_when_current_valid(current, menu, args, level = 0, key = ""):
        if current and current.valid() and level <= config.usage.setup_level.index:
-               menu.append(args)
+               menu.append(ChoiceEntryComponent(key, args))
 
 class ChannelContextMenu(Screen):
        def __init__(self, session, csel):
@@ -81,13 +82,15 @@ class ChannelContextMenu(Screen):
                self.csel = csel
                self.bsel = None
 
-               self["actions"] = ActionMap(["OkCancelActions"],
+               self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "NumberActions"],
                        {
                                "ok": self.okbuttonClick,
-                               "cancel": self.cancelClick
+                               "cancel": self.cancelClick,
+                               "blue": self.showServiceInPiP
                        })
                menu = [ ]
 
+               self.pipAvailable = False
                current = csel.getCurrentSelection()
                current_root = csel.getRoot()
                current_sel_path = current.getPath()
@@ -102,7 +105,6 @@ class ChannelContextMenu(Screen):
                        if not inBouquetRootList:
                                isPlayable = not (current_sel_flags & (eServiceReference.isMarker|eServiceReference.isDirectory))
                                if isPlayable:
-                                       append_when_current_valid(current, menu, (_("Activate Picture in Picture"), self.showServiceInPiP), level = 0)
                                        if config.ParentalControl.configured.value:
                                                if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1:
                                                        append_when_current_valid(current, menu, (_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())), level = 0)
@@ -124,8 +126,11 @@ class ChannelContextMenu(Screen):
                                        append_when_current_valid(current, menu, (_("remove entry"), self.removeCurrentService), level = 0)
                                if current_root and current_root.getPath().find("flags == %d" %(FLAG_SERVICE_NEW_FOUND)) != -1:
                                        append_when_current_valid(current, menu, (_("remove new found flag"), self.removeNewFoundFlag), level = 0)
+                               if isPlayable:
+                                       append_when_current_valid(current, menu, (_("Activate Picture in Picture"), self.showServiceInPiP), level = 0, key = "blue")
+                                       self.pipAvailable = True
                        else:
-                                       menu.append((_("add bouquet"), self.showBouquetInputBox))
+                                       menu.append(ChoiceEntryComponent(text = (_("add bouquet"), self.showBouquetInputBox)))
                                        append_when_current_valid(current, menu, (_("remove entry"), self.removeBouquet), level = 0)
 
                if inBouquet: # current list is editable?
@@ -133,7 +138,7 @@ class ChannelContextMenu(Screen):
                                if not csel.movemode:
                                        append_when_current_valid(current, menu, (_("enable move mode"), self.toggleMoveMode), level = 1)
                                        if not inBouquetRootList and current_root and not (current_root.flags & eServiceReference.isGroup):
-                                               menu.append((_("add marker"), self.showMarkerInputBox))
+                                               menu.append(ChoiceEntryComponent(text = (_("add marker"), self.showMarkerInputBox)))
                                                if haveBouquets:
                                                        append_when_current_valid(current, menu, (_("enable bouquet edit"), self.bouquetMarkStart), level = 0)
                                                else:
@@ -158,11 +163,11 @@ class ChannelContextMenu(Screen):
                                                append_when_current_valid(current, menu, (_("end alternatives edit"), self.bouquetMarkEnd), level = 0)
                                                append_when_current_valid(current, menu, (_("abort alternatives edit"), self.bouquetMarkAbort), level = 0)
 
-               menu.append((_("back"), self.cancelClick))
-               self["menu"] = MenuList(menu)
+               menu.append(ChoiceEntryComponent(text = (_("back"), self.cancelClick)))
+               self["menu"] = ChoiceList(menu)
 
        def okbuttonClick(self):
-               self["menu"].getCurrent()[1]()
+               self["menu"].getCurrent()[0][1]()
 
        def cancelClick(self):
                self.close(False)
@@ -193,6 +198,8 @@ class ChannelContextMenu(Screen):
                        self.session.openWithCallback(self.close, MessageBox, _("The pin code you entered is wrong."), MessageBox.TYPE_ERROR)
                        
        def showServiceInPiP(self):
+               if not self.pipAvailable:
+                       return
                if self.session.pipshown:
                        del self.session.pip
                self.session.pip = self.session.instantiateDialog(PictureInPicture)