new help
[openblackhole/openblackhole-enigma2.git] / lib / python / Components / HelpMenuList.py
1 from GUIComponent import *
2
3 from enigma import eListboxPythonMultiContent, eListbox, gFont
4
5 from Tools.KeyBindings import queryKeyBinding, getKeyDescription
6 #getKeyPositions
7
8 # [ ( actionmap, context, [(action, help), (action, help), ...] ), (actionmap, ... ), ... ]
9
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
16                 
17                 l = [ ]
18                 for (actionmap, context, actions) in list:
19                         for (action, help) in actions:
20                                 entry = [ ]
21                                 
22                                 buttons = queryKeyBinding(context, action)
23
24                                 name = None
25                                 
26                                 for n in buttons:
27                                         name = getKeyDescription(n)
28                                         if name is not None:
29                                                 break
30
31                                 entry.append( (actionmap, context, action, name ) )
32                                 entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
33                                 
34                                 l.append(entry)
35                 
36                 self.l.setList(l)
37                 
38                 self.l.setFont(0, gFont("Regular", 26))
39         
40         def ok(self):
41                 # a list entry has a "private" tuple as first entry...
42                 l = self.l.getCurrentSelection()[0]
43                 
44                 # ...containing (Actionmap, Context, Action, keydata).
45                 # we returns this tuple to the callback.
46                 self.callback(l[0], l[1], l[2])
47         
48         def getCurrent(self):
49                 return self.l.getCurrentSelection()[0]
50
51         def GUIcreate(self, parent):
52                 self.instance = eListbox(parent)
53                 self.instance.setContent(self.l)
54                 self.instance.setItemHeight(42)
55                 self.instance.selectionChanged.get().append(self.selectionChanged)
56                 
57         def GUIdelete(self):
58                 self.instance.setContent(None)
59                 self.instance.selectionChanged.get().remove(self.selectionChanged)
60                 self.instance = None
61
62         def selectionChanged(self):
63                 for x in self.onSelChanged:
64                         x()