X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/cbd793948836c6bf46a0d8cf2af8db9add628039..6dbbf2167e1a8ca25dd2cd8e20bef82686b28f61:/lib/python/Components/ActionMap.py diff --git a/lib/python/Components/ActionMap.py b/lib/python/Components/ActionMap.py index 2ed2fcc3..046a92d9 100644 --- a/lib/python/Components/ActionMap.py +++ b/lib/python/Components/ActionMap.py @@ -33,3 +33,31 @@ class NumberActionMap(ActionMap): return 1 else: return ActionMap.action(self, contexts, action) + +class HelpableActionMap(ActionMap): + """An Actionmap which automatically puts the actions into the helpList. + + Note that you can only use ONE context here!""" + + # sorry for this complicated code. + # it's not more than converting a "documented" actionmap + # (where the values are possibly (function, help)-tuples) + # into a "classic" actionmap, where values are just functions. + # the classic actionmap is then passed to the ActionMap constructor, + # the collected helpstrings (with correct context, action) is + # added to the screen's "helpList", which will be picked up by + # the "HelpableScreen". + def __init__(self, parent, context, actions = { }, prio=0): + alist = [ ] + adict = { } + for (action, funchelp) in actions.iteritems(): + # check if this is a tuple + if type(funchelp) is type(()): + alist.append((action, funchelp[1])) + adict[action] = funchelp[0] + else: + adict[action] = funchelp + + ActionMap.__init__(self, [context], adict, prio) + + parent.helpList.append((self, context, alist))