1 from GUIComponent import GUIComponent
3 from enigma import eListboxPythonMultiContent, eListbox, gFont
5 from Tools.KeyBindings import queryKeyBinding, getKeyDescription
8 # [ ( actionmap, context, [(action, help), (action, help), ...] ), (actionmap, ... ), ... ]
10 class HelpMenuList(GUIComponent):
11 def __init__(self, list, callback):
12 GUIComponent.__init__(self)
13 self.onSelChanged = [ ]
14 self.l = eListboxPythonMultiContent()
15 self.callback = callback
18 for (actionmap, context, actions) in list:
19 for (action, help) in actions:
22 buttons = queryKeyBinding(context, action)
24 # do not display entries which are not accessible from keys
32 (name, flags) = (getKeyDescription(n[0]), n[1])
36 if flags & 8: # for long keypresses, prepend l_ into the key name.
37 name = (name[0], "long")
41 entry.append( (actionmap, context, action, name ) )
42 entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
48 self.l.setFont(0, gFont("Regular", 24))
49 self.l.setItemHeight(38)
52 # a list entry has a "private" tuple as first entry...
56 # ...containing (Actionmap, Context, Action, keydata).
57 # we returns this tuple to the callback.
58 self.callback(l[0], l[1], l[2])
61 sel = self.l.getCurrentSelection()
66 def postWidgetCreate(self, instance):
67 instance.setContent(self.l)
68 instance.selectionChanged.get().append(self.selectionChanged)
70 def preWidgetRemove(self, instance):
71 instance.setContent(None)
72 instance.selectionChanged.get().remove(self.selectionChanged)
74 def selectionChanged(self):
75 for x in self.onSelChanged: