from enigma import eListboxPythonMultiContent, eListbox, gFont
+from Tools.KeyBindings import queryKeyBinding, getKeyDescription
+#getKeyPositions
+
# [ ( actionmap, context, [(action, help), (action, help), ...] ), (actionmap, ... ), ... ]
class HelpMenuList(GUIComponent):
def __init__(self, list, callback):
GUIComponent.__init__(self)
-
+ self.onSelChanged = [ ]
self.l = eListboxPythonMultiContent()
self.callback = callback
l = [ ]
for (actionmap, context, actions) in list:
-
- print "actionmap:" + str(actionmap)
- print "context: " + str(context)
- print "actions: " + str(actions)
-
for (action, help) in actions:
entry = [ ]
- entry.append( (actionmap, context, action) )
- entry.append( (0, 36, 200, 20, 1, 0, "you can also press a secret button") )
- entry.append( (0, 0, 200, 36, 0, 0, help) )
+ buttons = queryKeyBinding(context, action)
+
+ name = None
+
+ for n in buttons:
+ name = getKeyDescription(n)
+ if name is not None:
+ break
+
+ entry.append( (actionmap, context, action, name ) )
+ entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
l.append(entry)
self.l.setList(l)
- self.l.setFont(0, gFont("Arial", 36))
- self.l.setFont(1, gFont("Arial", 18))
-
- def GUIcreate(self, parent):
- self.instance = eListbox(parent)
- self.instance.setContent(self.l)
- self.instance.setItemHeight(75)
+ self.l.setFont(0, gFont("Regular", 26))
- def GUIdelete(self):
- self.instance.setContent(None)
- self.instance = None
-
def ok(self):
# a list entry has a "private" tuple as first entry...
l = self.l.getCurrentSelection()[0]
- # ...containing (Actionmap, Context, Action).
+ # ...containing (Actionmap, Context, Action, keydata).
# we returns this tuple to the callback.
self.callback(l[0], l[1], l[2])
+
+ def getCurrent(self):
+ return self.l.getCurrentSelection()[0]
+
+ GUI_WIDGET = eListbox
+
+ def postWidgetCreate(self, instance):
+ instance.setContent(self.l)
+ instance.setItemHeight(42)
+ instance.selectionChanged.get().append(self.selectionChanged)
+
+ def selectionChanged(self):
+ for x in self.onSelChanged:
+ x()