X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/8ef98e5273d9778bd7c53b5ea30de3e1c5d0165e..4f46a90d789f28eb0ca156caeb2bb55136d8ac85:/lib/python/Screens/ServiceInfo.py diff --git a/lib/python/Screens/ServiceInfo.py b/lib/python/Screens/ServiceInfo.py index 10f7b28c..d32c3e85 100644 --- a/lib/python/Screens/ServiceInfo.py +++ b/lib/python/Screens/ServiceInfo.py @@ -5,17 +5,17 @@ from Components.ActionMap import ActionMap from Components.Label import Label from Components.MenuList import MenuList from ServiceReference import ServiceReference -from enigma import eListboxPythonMultiContent, eListbox, gFont +from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation RT_HALIGN_LEFT = 0 def ServiceInfoListEntry(a, b): res = [ ] - #PyObject *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags; - res.append((0, 0, 200, 30, 0, RT_HALIGN_LEFT, "")) - res.append((0, 0, 150, 25, 0, RT_HALIGN_LEFT, a)) - res.append((170, 0, 150, 25, 0, RT_HALIGN_LEFT, b)) + #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags; + res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, "")) + res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 150, 25, 0, RT_HALIGN_LEFT, a)) + res.append((eListboxPythonMultiContent.TYPE_TEXT, 170, 0, 150, 25, 0, RT_HALIGN_LEFT, b)) return res @@ -25,7 +25,7 @@ class ServiceInfoList(HTMLComponent, GUIComponent): self.l = eListboxPythonMultiContent() self.list = source self.l.setList(self.list) - self.l.setFont(0, gFont("Arial", 23)) + self.l.setFont(0, gFont("Regular", 23)) def GUIcreate(self, parent): self.instance = eListbox(parent) @@ -39,33 +39,62 @@ class ServiceInfoList(HTMLComponent, GUIComponent): class ServiceInfo(Screen): def __init__(self, session): Screen.__init__(self, session) - + self["actions"] = ActionMap(["OkCancelActions"], { "ok": self.close, "cancel": self.close }, -1) - - Labels = ( ("Name", "ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()"), - ("Provider", ), - ("VideoPID",""), - ("AudioPID",""), - ("PCRPID",""), - ("PMTPID",""), - ("TXTPID",""), - ("Videoformat",""), - ("TSID",""), - ("ONID",""), - ("SID",""), - ("Namespace","")) + + service = session.nav.getCurrentService() + if service is not None: + self.info = service.info() + else: + self.info = None + + if self.session.nav.getCurrentlyPlayingServiceReference() is not None: + name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName() + else: + name = "N/A" + Labels = ( ("Name", name), + ("Provider", self.getValue(iServiceInformation.sProvider)), + ("VideoPID", self.getValue(iServiceInformation.sVideoPID)), + ("AudioPID", self.getValue(iServiceInformation.sAudioPID)), + ("PCRPID", self.getValue(iServiceInformation.sPCRPID)), + ("PMTPID", self.getValue(iServiceInformation.sPMTPID)), + ("TXTPID", self.getValue(iServiceInformation.sTXTPID)), + ("Videoformat", self.getValue(iServiceInformation.sAspect)), + ("TSID", self.getValue(iServiceInformation.sTSID)), + ("ONID", self.getValue(iServiceInformation.sONID)), + ("SID", self.getValue(iServiceInformation.sSID)), + ("Namespace", self.getValue(iServiceInformation.sNamespace))) tlist = [ ] for item in Labels: - try: - value = str(eval(item[1])) - except: - value = "N/A" + value = item[1] tlist.append(ServiceInfoListEntry(item[0]+":", value)) self["infolist"] = ServiceInfoList(tlist) + + def getValue(self, what): + if self.info is None: + return "" + + v = self.info.getInfo(what) + if v == -2: + v = self.info.getInfoString(what) + elif v != -1: + if what in [iServiceInformation.sVideoPID, + iServiceInformation.sAudioPID, iServiceInformation.sPCRPID, iServiceInformation.sPMTPID, + iServiceInformation.sTXTPID, iServiceInformation.sTSID, iServiceInformation.sONID, + iServiceInformation.sSID]: + v = "0x%04x (%dd)" % (v, v) + elif what in [iServiceInformation.sNamespace]: + v = "0x%08x" % (v) + else: + v = str(v) + else: + v = "N/A" + + return v