X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/02916ce89bca007f62951f0a130b0c2bc2e22027..0517c18e39080ea8a8cb49ba764ec2c143e31917:/lib/python/Screens/ServiceInfo.py diff --git a/lib/python/Screens/ServiceInfo.py b/lib/python/Screens/ServiceInfo.py index 03d03d8e..6b0a2e00 100644 --- a/lib/python/Screens/ServiceInfo.py +++ b/lib/python/Screens/ServiceInfo.py @@ -1,25 +1,100 @@ +from Components.HTMLComponent import * +from Components.GUIComponent import * from Screen import Screen 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, 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)) + + return res + +class ServiceInfoList(HTMLComponent, GUIComponent): + def __init__(self, source): + GUIComponent.__init__(self) + self.l = eListboxPythonMultiContent() + self.list = source + self.l.setList(self.list) + self.l.setFont(0, gFont("Arial", 23)) + + def GUIcreate(self, parent): + self.instance = eListbox(parent) + self.instance.setContent(self.l) + self.instance.setItemHeight(25) + + def GUIdelete(self): + self.instance.setContent(None) + self.instance = None class ServiceInfo(Screen): def __init__(self, session): Screen.__init__(self, session) - + self["actions"] = ActionMap(["OkCancelActions"], { "ok": self.close, "cancel": self.close }, -1) - - Labels = ("Name", "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: - tlist.append((item + ":",0)) + value = item[1] + tlist.append(ServiceInfoListEntry(item[0]+":", value)) + + self["infolist"] = ServiceInfoList(tlist) + + def getValue(self, what): + if self.info is None: + return "" - self["infolist"] = MenuList(tlist) + 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