-from GUIComponent import *
+from GUIComponent import GUIComponent
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):
+ def __init__(self, helplist, callback):
GUIComponent.__init__(self)
self.onSelChanged = [ ]
self.l = eListboxPythonMultiContent()
self.callback = callback
+ self.extendedHelp = False
l = [ ]
- for (actionmap, context, actions) in list:
+ for (actionmap, context, actions) in helplist:
for (action, help) in actions:
- entry = [ ]
-
buttons = queryKeyBinding(context, action)
# do not display entries which are not accessible from keys
break
if flags & 8: # for long keypresses, prepend l_ into the key name.
- name = ("l_" + name[0], name[1], name[2])
-
- entry.append( (actionmap, context, action, name ) )
- entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
-
+ name = (name[0], "long")
+
+ entry = [ (actionmap, context, action, name ) ]
+
+ if isinstance(help, list):
+ self.extendedHelp = True
+ print "extendedHelpEntry found"
+ entry.extend((
+ (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 26, 0, 0, help[0]),
+ (eListboxPythonMultiContent.TYPE_TEXT, 0, 28, 400, 20, 1, 0, help[1])
+ ))
+ else:
+ entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
+
l.append(entry)
self.l.setList(l)
-
- self.l.setFont(0, gFont("Regular", 24))
- self.l.setItemHeight(38)
+ if self.extendedHelp is True:
+ self.l.setFont(0, gFont("Regular", 24))
+ self.l.setFont(1, gFont("Regular", 18))
+ self.l.setItemHeight(50)
+ else:
+ self.l.setFont(0, gFont("Regular", 24))
+ self.l.setItemHeight(38)
def ok(self):
# a list entry has a "private" tuple as first entry...
def postWidgetCreate(self, instance):
instance.setContent(self.l)
-
instance.selectionChanged.get().append(self.selectionChanged)
+ def preWidgetRemove(self, instance):
+ instance.setContent(None)
+ instance.selectionChanged.get().remove(self.selectionChanged)
+
def selectionChanged(self):
for x in self.onSelChanged:
x()