add "show transponder" info to service context menu in channellist
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 22 Dec 2006 15:50:51 +0000 (15:50 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Fri, 22 Dec 2006 15:50:51 +0000 (15:50 +0000)
Navigation.py
lib/python/Screens/ChannelSelection.py
lib/python/Screens/ScanSetup.py
lib/python/Screens/ServiceInfo.py
lib/service/servicedvb.cpp

index c2d2752..ece8922 100644 (file)
@@ -1,4 +1,4 @@
-from enigma import eServiceCenter, eServiceReference, pNavigation
+from enigma import eServiceCenter, eServiceReference, pNavigation, getBestPlayableServiceReference
 from Components.ParentalControl import parentalControl
 from Tools.BoundFunction import boundFunction
 import RecordTimer
 from Components.ParentalControl import parentalControl
 from Tools.BoundFunction import boundFunction
 import RecordTimer
index 9cbb422..db2789d 100644 (file)
@@ -15,6 +15,7 @@ from Components.Input import Input
 from Components.ParentalControl import parentalControl
 from Screens.InputBox import InputBox, PinInput
 from Screens.MessageBox import MessageBox
 from Components.ParentalControl import parentalControl
 from Screens.InputBox import InputBox, PinInput
 from Screens.MessageBox import MessageBox
+from Screens.ServiceInfo import ServiceInfo
 from ServiceReference import ServiceReference
 from Tools.BoundFunction import boundFunction
 from re import *
 from ServiceReference import ServiceReference
 from Tools.BoundFunction import boundFunction
 from re import *
@@ -81,6 +82,8 @@ class ChannelContextMenu(Screen):
                inBouquet = csel.getMutableList() is not None
                haveBouquets = config.usage.multibouquet.value
 
                inBouquet = csel.getMutableList() is not None
                haveBouquets = config.usage.multibouquet.value
 
+               if not (len(current_sel_path) or current_sel_flags & eServiceReference.isDirectory):
+                       menu.append((_("show transponder info"), self.showServiceInformations))
                if csel.bouquet_mark_edit == OFF and not csel.movemode:
                        if not inBouquetRootList:
                                isPlayable = not (current_sel_flags & (eServiceReference.isMarker|eServiceReference.isDirectory))
                if csel.bouquet_mark_edit == OFF and not csel.movemode:
                        if not inBouquetRootList:
                                isPlayable = not (current_sel_flags & (eServiceReference.isMarker|eServiceReference.isDirectory))
@@ -146,7 +149,10 @@ class ChannelContextMenu(Screen):
 
        def cancelClick(self):
                self.close(False)
 
        def cancelClick(self):
                self.close(False)
-               
+
+       def showServiceInformations(self):
+               self.session.open( ServiceInfo, self.csel.getCurrentSelection() )
+
        def showBouquetInputBox(self):
                self.session.openWithCallback(self.bouquetInputCallback, InputBox, title=_("Please enter a name for the new bouquet"), text="bouquetname", maxSize=False, type=Input.TEXT)
 
        def showBouquetInputBox(self):
                self.session.openWithCallback(self.bouquetInputCallback, InputBox, title=_("Please enter a name for the new bouquet"), text="bouquetname", maxSize=False, type=Input.TEXT)
 
index 81985a8..f9c25c7 100644 (file)
@@ -188,10 +188,10 @@ class ScanSetup(ConfigListScreen, Screen):
                        self.list.append(self.typeOfScanEntry)
 
                if nimmanager.getNimType(self.scan_nims.index) == nimmanager.nimType["DVB-S"]:
                        self.list.append(self.typeOfScanEntry)
 
                if nimmanager.getNimType(self.scan_nims.index) == nimmanager.nimType["DVB-S"]:
-
                        if self.scan_type.value == "single_transponder":
                        if self.scan_type.value == "single_transponder":
-#                              self.systemEntry = getConfigListEntry(_('Transpondertype'), self.scan_sat.system)
-#                              self.list.append(self.systemEntry)
+                               if nimmanager.getNimName(self.scan_nims.index).find("DVB-S2") != -1:
+                                       self.systemEntry = getConfigListEntry(_('Transpondertype'), self.scan_sat.system)
+                                       self.list.append(self.systemEntry)
                                self.list.append(getConfigListEntry(_('Satellite'), self.scan_satselection[self.scan_nims.index]))
                                self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency))
                                self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion))
                                self.list.append(getConfigListEntry(_('Satellite'), self.scan_satselection[self.scan_nims.index]))
                                self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency))
                                self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion))
index 639b970..3899968 100644 (file)
@@ -5,7 +5,7 @@ from Components.ActionMap import ActionMap
 from Components.Label import Label
 from Components.MenuList import MenuList
 from ServiceReference import ServiceReference
 from Components.Label import Label
 from Components.MenuList import MenuList
 from ServiceReference import ServiceReference
-from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation
+from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation, eServiceCenter
 
 RT_HALIGN_LEFT = 0
 
 
 RT_HALIGN_LEFT = 0
 
@@ -51,8 +51,11 @@ class ServiceInfoList(HTMLComponent, GUIComponent):
                self.instance.setContent(self.l)
                self.instance.setItemHeight(25)
 
                self.instance.setContent(self.l)
                self.instance.setItemHeight(25)
 
+TYPE_SERVICE_INFO = 1
+TYPE_TRANSPONDER_INFO = 2
+
 class ServiceInfo(Screen):
 class ServiceInfo(Screen):
-       def __init__(self, session):
+       def __init__(self, session, serviceref=None):
                Screen.__init__(self, session)
                
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
                Screen.__init__(self, session)
                
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
@@ -64,60 +67,96 @@ class ServiceInfo(Screen):
                        "yellow": self.transponder,
                        "blue": self.tuner
                }, -1)
                        "yellow": self.transponder,
                        "blue": self.tuner
                }, -1)
-               
-               service = session.nav.getCurrentService()
-               if service is not None:
-                       self.info = service.info()
-                       self.feinfo = service.frontendInfo()
-                       print self.info.getInfoObject(iServiceInformation.sCAIDs);
-               else:
-                       self.info = None
-                       self.feinfo = None
 
 
+               if serviceref:
+                       self.type = TYPE_TRANSPONDER_INFO
+                       self["red"] = Label()
+                       self["green"] = Label()
+                       self["yellow"] = Label()
+                       self["blue"] = Label()
+                       info = eServiceCenter.getInstance().info(serviceref)
+                       self.transponder_info = info.getInfoObject(serviceref, iServiceInformation.sTransponderData)
+               else:
+                       self.type = TYPE_SERVICE_INFO
+                       self["red"] = Label(_("Serviceinfo"))
+                       self["green"] = Label(_("PIDs"))
+                       self["yellow"] = Label(_("Transponder"))
+                       self["blue"] = Label(_("Tuner status"))
+                       service = session.nav.getCurrentService()
+                       if service is not None:
+                               self.info = service.info()
+                               self.feinfo = service.frontendInfo()
+                               print self.info.getInfoObject(iServiceInformation.sCAIDs);
+                       else:
+                               self.info = None
+                               self.feinfo = None
 
 
-               self["red"] = Label(_("Serviceinfo"))
-               self["green"] = Label(_("PIDs"))
-               self["yellow"] = Label(_("Transponder"))
-               self["blue"] = Label(_("Tuner status"))
-       
                tlist = [ ]
 
                self["infolist"] = ServiceInfoList(tlist)
                self.onShown.append(self.information)
 
        def information(self):
                tlist = [ ]
 
                self["infolist"] = ServiceInfoList(tlist)
                self.onShown.append(self.information)
 
        def information(self):
-               if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
-                       name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
+               if self.type == TYPE_SERVICE_INFO:
+                       if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
+                               name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
+                       else:
+                               name = "N/A"
+                       Labels = ( ("Name",  name, TYPE_TEXT),
+                                          ("Provider", self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
+                                          ("Videoformat", self.getServiceInfoValue(iServiceInformation.sAspect), TYPE_TEXT),
+                                          ("Namespace", self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8))
+                       self.fillList(Labels)
                else:
                else:
-                       name = "N/A"
-               Labels = ( ("Name",  name, TYPE_TEXT),
-                                  ("Provider", self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
-                                  ("Videoformat", self.getServiceInfoValue(iServiceInformation.sAspect), TYPE_TEXT),
-                                  ("Namespace", self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8))
-               self.fillList(Labels)
-       
+                       if self.transponder_info:
+                               conv = { "type"                         : _("Transponder Type:"),
+                                                "frequency"            : _("Frequency:"),
+                                                "symbolrate"           : _("Symbolrate:"),
+                                                "orbital position" : _("Orbital Position:"),
+                                                "inversion"            : _("Inversion:"),
+                                                "fec inner"            : _("FEC:"),
+                                                "modulation"           : _("Modulation:"),
+                                                "polarization"         : _("Polarization:"),
+                                                "roll off"                     : _("Rolloff:"),
+                                                "system"                       : _("System:"),
+                                                "bandwidth"            : _("Bandwidth:"),
+                                                "code rate lp"         : _("Coderate LP:"),
+                                                "code rate hp"         : _("Coderate HP:"),
+                                                "constellation"        : _("Constellation:"),
+                                                "transmission mode": _("Transmission Mode:"),
+                                                "guard interval"       : _("Guard Interval:"),
+                                                "hierarchy"            : _("Hierarchy Information:") }
+                               Labels = [ ]
+                               for i in self.transponder_info.keys():
+                                       Labels.append( (conv[i], self.transponder_info[i], TYPE_TEXT) )
+                               self.fillList(Labels)
+
        def pids(self):
        def pids(self):
-               Labels = ( ("VideoPID", self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("AudioPID", self.getServiceInfoValue(iServiceInformation.sAudioPID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("PCRPID", self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("PMTPID", self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("TXTPID", self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("TSID", self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("ONID", self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
-                                  ("SID", self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4))
-               self.fillList(Labels)
+               if self.type == TYPE_SERVICE_INFO:
+                       Labels = ( ("VideoPID", self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("AudioPID", self.getServiceInfoValue(iServiceInformation.sAudioPID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("PCRPID", self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("PMTPID", self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("TXTPID", self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("TSID", self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("ONID", self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
+                                          ("SID", self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4))
+                       self.fillList(Labels)
        
        def showFrontendData(self, real):
        
        def showFrontendData(self, real):
-               frontendData = self.feinfo and self.feinfo.getFrontendData(real)
-               Labels = self.getFEData(frontendData)
-               self.fillList(Labels)
+               if self.type == TYPE_SERVICE_INFO:
+                       frontendData = self.feinfo and self.feinfo.getFrontendData(real)
+                       Labels = self.getFEData(frontendData)
+                       self.fillList(Labels)
        
        def transponder(self):
        
        def transponder(self):
-               self.showFrontendData(True)
+               if self.type == TYPE_SERVICE_INFO:
+                       self.showFrontendData(True)
                
        def tuner(self):
                
        def tuner(self):
-               self.showFrontendData(False)
-               
+               if self.type == TYPE_SERVICE_INFO:
+                       self.showFrontendData(False)
+
        def getFEData(self, frontendData):
                if frontendData is None:
                        return []
        def getFEData(self, frontendData):
                if frontendData is None:
                        return []
index 774e3f6..ea014a1 100644 (file)
@@ -125,7 +125,7 @@ extern void PutToDict(ePyObject &dict, const char*key, const char *value);
 void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &feparm)
 {
        const char *tmp=0;
 void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &feparm)
 {
        const char *tmp=0;
-       PutToDict(dict, "type", "satellite");
+       PutToDict(dict, "type", "Satellite");
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        PutToDict(dict, "orbital position", feparm.orbital_position);
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        PutToDict(dict, "orbital position", feparm.orbital_position);
@@ -192,7 +192,7 @@ void PutSatelliteDataToDict(ePyObject &dict, eDVBFrontendParametersSatellite &fe
 
 void PutTerrestrialDataToDict(ePyObject &dict, eDVBFrontendParametersTerrestrial &feparm)
 {
 
 void PutTerrestrialDataToDict(ePyObject &dict, eDVBFrontendParametersTerrestrial &feparm)
 {
-       PutToDict(dict, "type", "terrestrial");
+       PutToDict(dict, "type", "Terrestrial");
        PutToDict(dict, "frequency", feparm.frequency);
        const char *tmp=0;
        switch (feparm.bandwidth)
        PutToDict(dict, "frequency", feparm.frequency);
        const char *tmp=0;
        switch (feparm.bandwidth)
@@ -276,7 +276,7 @@ void PutTerrestrialDataToDict(ePyObject &dict, eDVBFrontendParametersTerrestrial
 void PutCableDataToDict(ePyObject &dict, eDVBFrontendParametersCable &feparm)
 {
        const char *tmp=0;
 void PutCableDataToDict(ePyObject &dict, eDVBFrontendParametersCable &feparm)
 {
        const char *tmp=0;
-       PutToDict(dict, "type", "cable");
+       PutToDict(dict, "type", "Cable");
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        switch (feparm.modulation)
        PutToDict(dict, "frequency", feparm.frequency);
        PutToDict(dict, "symbolrate", feparm.symbol_rate);
        switch (feparm.modulation)