delete characters in the InputBox with mute key
[enigma2.git] / lib / python / Screens / ServiceInfo.py
1 from Components.HTMLComponent import *
2 from Components.GUIComponent import *
3 from Screen import Screen
4 from Components.ActionMap import ActionMap
5 from Components.Label import Label
6 from Components.MenuList import MenuList
7 from ServiceReference import ServiceReference
8 from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation
9
10 RT_HALIGN_LEFT = 0
11
12 def ServiceInfoListEntry(a, b):
13         res = [ ]
14
15         #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
16         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""))
17         res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 150, 25, 0, RT_HALIGN_LEFT, a))
18         res.append((eListboxPythonMultiContent.TYPE_TEXT, 170, 0, 150, 25, 0, RT_HALIGN_LEFT, b))
19
20         return res
21
22 class ServiceInfoList(HTMLComponent, GUIComponent):
23         def __init__(self, source):
24                 GUIComponent.__init__(self)
25                 self.l = eListboxPythonMultiContent()
26                 self.list = source
27                 self.l.setList(self.list)
28                 self.l.setFont(0, gFont("Regular", 23))
29
30         def GUIcreate(self, parent):
31                 self.instance = eListbox(parent)
32                 self.instance.setContent(self.l)
33                 self.instance.setItemHeight(25)
34
35         def GUIdelete(self):
36                 self.instance.setContent(None)
37                 self.instance = None
38
39 class ServiceInfo(Screen):
40         def __init__(self, session):
41                 Screen.__init__(self, session)
42                 
43                 self["actions"] = ActionMap(["OkCancelActions"],
44                 {
45                         "ok": self.close,
46                         "cancel": self.close
47                 }, -1)
48                 
49                 service = session.nav.getCurrentService()
50                 if service is not None:
51                         self.info = service.info()
52                 else:
53                         self.info = None
54
55                 if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
56                         name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
57                 else:
58                         name = "N/A"
59                 Labels = ( ("Name",  name),
60                                    ("Provider", self.getValue(iServiceInformation.sProvider)),
61                                    ("VideoPID", self.getValue(iServiceInformation.sVideoPID)),
62                                    ("AudioPID", self.getValue(iServiceInformation.sAudioPID)),
63                                    ("PCRPID", self.getValue(iServiceInformation.sPCRPID)),
64                                    ("PMTPID", self.getValue(iServiceInformation.sPMTPID)),
65                                    ("TXTPID", self.getValue(iServiceInformation.sTXTPID)),
66                                    ("Videoformat", self.getValue(iServiceInformation.sAspect)),
67                                    ("TSID", self.getValue(iServiceInformation.sTSID)),
68                                    ("ONID", self.getValue(iServiceInformation.sONID)),
69                                    ("SID", self.getValue(iServiceInformation.sSID)),
70                                    ("Namespace", self.getValue(iServiceInformation.sNamespace)))
71         
72                 tlist = [ ]
73
74                 for item in Labels:
75                         value = item[1]
76                         tlist.append(ServiceInfoListEntry(item[0]+":", value))          
77
78                 self["infolist"] = ServiceInfoList(tlist)
79
80         def getValue(self, what):
81                 if self.info is None:
82                         return ""
83                 
84                 v = self.info.getInfo(what)
85                 if v == -2:
86                         v = self.info.getInfoString(what)
87                 elif v != -1:
88                         if what in [iServiceInformation.sVideoPID, 
89                                         iServiceInformation.sAudioPID, iServiceInformation.sPCRPID, iServiceInformation.sPMTPID, 
90                                         iServiceInformation.sTXTPID, iServiceInformation.sTSID, iServiceInformation.sONID,
91                                         iServiceInformation.sSID]:
92                                 v = "0x%04x (%dd)" % (v, v)
93                         elif what in [iServiceInformation.sNamespace]:
94                                 v = "0x%08x" % (v)
95                         else:
96                                 v = str(v)
97                 else:
98                         v = "N/A"
99
100                 return v