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 *
13 from enigma import eListbox, eListboxPythonConfigContent
15 class CiEntryList(HTMLComponent, GUIComponent):
16 def __init__(self, list):
17 GUIComponent.__init__(self)
18 self.l = eListboxPythonConfigContent()
20 self.l.setSeperation(100)
24 selection = self.getCurrent()
26 self.invalidateCurrent()
28 def handleKey(self, key):
29 #not every element got an .handleKey
31 selection = self.getCurrent()
32 selection[1].handleKey(key)
33 self.invalidateCurrent()
38 return self.l.getCurrentSelection()
40 def getCurrentIndex(self):
41 return self.l.getCurrentSelectionIndex()
43 def invalidateCurrent(self):
44 self.l.invalidateEntry(self.l.getCurrentSelectionIndex())
46 def GUIcreate(self, parent):
47 self.instance = eListbox(parent)
48 self.instance.setContent(self.l)
51 self.instance.setContent(None)
55 def addEntry(self, list, entry, index):
56 if entry[0] == "TEXT": #handle every item (text / pin only?)
57 list.append( (entry[1], index) )
61 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "-")))
64 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "")))
66 self.pin = getConfigListEntry(entry[2],x)
67 list.append( self.pin )
69 def okbuttonClick(self):
70 if self.tag == 0: #ENQ
71 print "enq- answer pin:" + str(self.pin[1].parent.value[0])
72 #ci[self.slotid]->getInstance().mmiEnqAnswer(self.pin[1].parent.value[0])
73 elif self.tag == 1: #Menu
74 print "answer - actual:" + str(self["entries"].getCurrentIndex())
75 #ci[self.slotid]->getInstance().mmiAnswer(self["entries"].getCurrentIndex())
76 elif self.tag == 2: #List
77 print "answer on List - send 0"
78 #ci[self.slotid]->getInstance().mmiAnswer(0)
81 def keyNumberGlobal(self, number):
82 self["entries"].handleKey(config.key[str(number)])
85 self["entries"].handleKey(config.key["prevElement"])
88 self["entries"].handleKey(config.key["nextElement"])
94 #tag is 0=ENQ 1=Menu 2=List
95 def __init__(self, session, slotid, tag, title, subtitle, bottom, entries):
96 Screen.__init__(self, session)
100 self["title"] = Label(title)
101 self["subtitle"] = Label(subtitle)
102 self["bottom"] = Label(bottom)
106 for entry in entries:
107 self.addEntry(list, entry, cnt)
109 self["entries"] = CiEntryList(list)
111 self["actions"] = NumberActionMap(["SetupActions"],
113 "ok": self.okbuttonClick,
114 "cancel": self.keyCancel,
116 "left": self.keyLeft,
117 "right": self.keyRight,
118 "1": self.keyNumberGlobal,
119 "2": self.keyNumberGlobal,
120 "3": self.keyNumberGlobal,
121 "4": self.keyNumberGlobal,
122 "5": self.keyNumberGlobal,
123 "6": self.keyNumberGlobal,
124 "7": self.keyNumberGlobal,
125 "8": self.keyNumberGlobal,
126 "9": self.keyNumberGlobal,
127 "0": self.keyNumberGlobal
130 class CiSelection(Screen):
131 def okbuttonClick(self):
133 if self["entries"].getCurrent()[1] == 0: #reset
134 print "ci reset requested"
136 if self["entries"].getCurrent()[1] == 1: #init
137 print "ci init requested"
139 if self["entries"].getCurrent()[1] == 2: #mmi open
140 #ci->getInstance().mmiOpen() and wait for list of elments ???
141 #generate menu / list
143 list.append( ("TEXT", "CA-Info") )
144 list.append( ("TEXT", "Card Status") )
145 list.append( ("PIN", 6, "Card Pin", 1) )
146 self.session.open(CiMmi, 0, 0, "Wichtiges CI", "Mainmenu", "Footer", list)
148 def __init__(self, session):
149 #FIXME support for one ci only
150 Screen.__init__(self, session)
152 self["actions"] = ActionMap(["OkCancelActions"],
154 "ok": self.okbuttonClick,
159 list.append( ("Reset", 0) )
160 list.append( ("Init", 1) )
161 #add timer for "app-manager name" ?
162 list.append( ("Irdeto Blasel SE", 2) )
163 self["entries"] = CiEntryList(list)