X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/47c79edd46ef8d5cf7da20dd4e376d70c55b6243..4aa7b11f525aaa22b3ad6b0d247ea67f39b498de:/lib/python/Screens/ServiceInfo.py diff --git a/lib/python/Screens/ServiceInfo.py b/lib/python/Screens/ServiceInfo.py index f57c1cdd..6b0a2e00 100644 --- a/lib/python/Screens/ServiceInfo.py +++ b/lib/python/Screens/ServiceInfo.py @@ -1,39 +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", "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" - tlist.append((item[0] + ": " + value,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