X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/549ed3c87c4d3fe093472aa199ca6742c1f3654f..7b5f45dec47f8472cc699a72949c52e6e5b2c279:/lib/python/Components/HelpMenuList.py diff --git a/lib/python/Components/HelpMenuList.py b/lib/python/Components/HelpMenuList.py old mode 100644 new mode 100755 index 8905944a..ddf871a7 --- a/lib/python/Components/HelpMenuList.py +++ b/lib/python/Components/HelpMenuList.py @@ -1,65 +1,85 @@ -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 = [ ] - - entry.append( (actionmap, context, action) ) + buttons = queryKeyBinding(context, action) - buttonstring = "" - - first = True - for n in buttons: - name = getKeyDescription(n) - if name is None: - continue - if not first: - buttonstring += ", or " + # do not display entries which are not accessible from keys + if not len(buttons): + continue - first = False - buttonstring += name + name = None + flags = 0 - if not first: - buttonstring = "You can also press " + buttonstring + "." + for n in buttons: + (name, flags) = (getKeyDescription(n[0]), n[1]) + if name is not None: + break - entry.append( (0, 0, 200, 36, 0, 0, help) ) - entry.append( (0, 40, 200, 20, 1, 0, buttonstring) ) - + if flags & 8: # for long keypresses, prepend l_ into the key name. + name = (name[0], "long") + + entry.append( (actionmap, context, action, name ) ) + + if isinstance(help, list): + self.extendedHelp = True + print "extendedHelpEntry found" + entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 26, 0, 0, help[0]) ) + entry.append( (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", 36)) - self.l.setFont(1, gFont("Regular", 18)) - - def GUIcreate(self, parent): - self.instance = eListbox(parent) - self.instance.setContent(self.l) - self.instance.setItemHeight(75) - - def GUIdelete(self): - self.instance.setContent(None) - self.instance = None + 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... - l = self.l.getCurrentSelection()[0] - - # ...containing (Actionmap, Context, Action). + l = self.getCurrent() + if l is None: + return + # ...containing (Actionmap, Context, Action, keydata). # we returns this tuple to the callback. self.callback(l[0], l[1], l[2]) + + def getCurrent(self): + sel = self.l.getCurrentSelection() + return sel and sel[0] + + GUI_WIDGET = eListbox + + 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()