2 from Components.MenuList import MenuList
3 from Components.ActionMap import ActionMap
4 from Components.ActionMap import NumberActionMap
5 from Components.Header import Header
6 from Components.Button import Button
7 from Components.Label import Label
9 from Components.HTMLComponent import *
10 from Components.GUIComponent import *
11 from Components.config import *
15 class CiConfigList(HTMLComponent, GUIComponent):
16 def __init__(self, list):
17 GUIComponent.__init__(self)
18 self.l = eListboxPythonConfigContent()
20 self.l.setSeperation(100)
26 def handleKey(self, key):
27 selection = self.getCurrent()
28 selection[1].handleKey(key)
29 self.invalidateCurrent()
32 return self.l.getCurrentSelection()
34 def invalidateCurrent(self):
35 self.l.invalidateEntry(self.l.getCurrentSelectionIndex())
37 def invalidate(self, entry):
40 if (entry.getConfigPath() == x[1].parent.getConfigPath()):
41 self.l.invalidateEntry(i)
45 def GUIcreate(self, parent):
46 self.instance = eListbox(parent)
47 self.instance.setContent(self.l)
50 self.instance.setContent(None)
54 def addEntry(self, list, entry):
55 if entry[0] == "TEXT": #handle every item (text / pin only?)
56 #list.append( (entry[1], entry[2]) )
57 list.append( (entry[1], entry[2]) )
61 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "-")))
64 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "")))
66 list.append( (entry[2], 0) )
67 self.pin = getConfigListEntry("",x)
68 list.append( self.pin )
70 def okbuttonClick(self):
72 if self.tag == "WAIT":
73 print "do nothing - wait"
74 elif self.tag == "MENU":
76 eDVBCI_UI.getInstance().answerMenu(self.slotid, self["entries"].getCurrent()[1])
78 elif self.tag == "LIST":
80 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
82 elif self.tag == "ENQ":
84 #eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
94 if self.tag == "WAIT":
96 elif self.tag == "MENU":
97 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
99 elif self.tag == "LIST":
100 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
102 elif self.tag == "ENQ":
103 eDVBCI_UI.getInstance().cancelEnq(self.slotid)
106 print "give cancel action to ci"
108 def keyNumberGlobal(self, number):
109 self["entries"].handleKey(config.key[str(number)])
112 self["entries"].handleKey(config.key["prevElement"])
115 self["entries"].handleKey(config.key["nextElement"])
117 def updateList(self, list):
118 self["entries"].list = list
119 self["entries"].l.setList(list)
123 self["title"].setText("")
124 self["subtitle"].setText("")
125 self["bottom"].setText("")
127 list.append( ("wait for ci...", 0) )
128 self.updateList(list)
130 def showScreen(self):
131 screen = eDVBCI_UI.getInstance().getMMIScreen(self.slotid)
135 self.tag = screen[0][0]
138 if entry[0] == "TITLE":
139 self["title"].setText(entry[1])
140 elif entry[0] == "SUBTITLE":
141 self["subtitle"].setText(entry[1])
142 elif entry[0] == "BOTTOM":
143 self["bottom"].setText(entry[1])
144 elif entry[0] == "TEXT":
145 self.addEntry(list, entry)
146 elif entry[0] == "PIN":
147 self.addEntry(list, entry)
149 self.updateList(list)
151 def TimerCheck(self):
153 if self.action == 0: #reset
155 if self.action == 1: #init
158 #module still there ?
159 if eDVBCI_UI.getInstance().getState(self.slotid) != 2:
162 #mmi session still active ?
163 if eDVBCI_UI.getInstance().getMMIState(self.slotid) != 1:
166 #new screen available?
167 if eDVBCI_UI.getInstance().availableMMI(self.slotid) == 1:
170 #FIXME: check for mmi-session closed
172 def __init__(self, session, slotid, action):
173 Screen.__init__(self, session)
175 print "ciMMI with action" + str(action)
179 self.Timer = eTimer()
180 self.Timer.timeout.get().append(self.TimerCheck)
181 self.Timer.start(1000)
183 #else the skins fails
184 self["title"] = Label("")
185 self["subtitle"] = Label("")
186 self["bottom"] = Label("")
187 self["entries"] = MenuList([ ])
188 #self["entries"] = CiConfigList([ ])
190 self["actions"] = NumberActionMap(["SetupActions"],
192 "ok": self.okbuttonClick,
193 "cancel": self.keyCancel,
195 "left": self.keyLeft,
196 "right": self.keyRight,
197 "1": self.keyNumberGlobal,
198 "2": self.keyNumberGlobal,
199 "3": self.keyNumberGlobal,
200 "4": self.keyNumberGlobal,
201 "5": self.keyNumberGlobal,
202 "6": self.keyNumberGlobal,
203 "7": self.keyNumberGlobal,
204 "8": self.keyNumberGlobal,
205 "9": self.keyNumberGlobal,
206 "0": self.keyNumberGlobal
211 if action == 0: #reset
212 eDVBCI_UI.getInstance().setReset(self.slotid)
214 elif action == 1: #init
217 elif action == 2: #start MMI
218 eDVBCI_UI.getInstance().startMMI(self.slotid)
220 elif action == 3: #mmi already there (called from infobar)
223 class CiSelection(Screen):
224 def createMenu(self):
226 self.list.append( ("Reset", 0) )
227 self.list.append( ("Init", 1) )
229 self.state = eDVBCI_UI.getInstance().getState(0)
230 if self.state == 0: #no module
231 self.list.append( ("no module found", 2) )
232 elif self.state == 1: #module in init
233 self.list.append( ("init module", 2) )
234 elif self.state == 2: #module ready
236 appname = eDVBCI_UI.getInstance().getAppName(0)
237 self.list.append( (appname, 2) )
239 self["entries"] .list = self.list
240 self["entries"] .l.setList(self.list)
242 def TimerCheck(self):
243 state = eDVBCI_UI.getInstance().getState(0)
244 if self.state != state:
245 #print "something happens"
249 def okbuttonClick(self):
253 self.session.open(CiMmi, 0, self["entries"].getCurrent()[1])
255 #generate menu / list
257 #list.append( ("TEXT", "CA-Info") )
258 #list.append( ("TEXT", "Card Status") )
259 #list.append( ("PIN", 6, "Card Pin", 1) )
260 #self.session.open(CiMmi, 0, 0, "Wichtiges CI", "Mainmenu", "Footer", list)
266 def __init__(self, session):
267 #FIXME support for one ci only
268 Screen.__init__(self, session)
270 self["actions"] = ActionMap(["OkCancelActions"],
272 "ok": self.okbuttonClick,
273 "cancel": self.cancel
277 self["entries"] = MenuList(list)
280 self.Timer = eTimer()
281 self.Timer.timeout.get().append(self.TimerCheck)
282 self.Timer.start(1000)