From 80453c6467be812555d6839aa37adc83a2c69708 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 15 Feb 2006 01:17:14 +0000 Subject: [PATCH] new help --- data/skin.xml | 13 +++--- lib/python/Components/HelpMenuList.py | 57 +++++++++++++-------------- lib/python/Screens/HelpMenu.py | 36 +++++++++++++---- lib/python/Tools/KeyBindings.py | 30 ++++++++------ 4 files changed, 82 insertions(+), 54 deletions(-) diff --git a/data/skin.xml b/data/skin.xml index 27262765..6a607645 100644 --- a/data/skin.xml +++ b/data/skin.xml @@ -3,13 +3,13 @@ - + - + @@ -21,7 +21,6 @@ - @@ -337,8 +336,10 @@ - - + + + + wsizex): wsize = (wsizex, wsizey) -# resize +# resize self.instance.resize(eSize(*wsize)) # resize label diff --git a/lib/python/Components/HelpMenuList.py b/lib/python/Components/HelpMenuList.py index 521496b6..c8ff3795 100644 --- a/lib/python/Components/HelpMenuList.py +++ b/lib/python/Components/HelpMenuList.py @@ -3,13 +3,14 @@ from GUIComponent import * 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): GUIComponent.__init__(self) - + self.onSelChanged = [ ] self.l = eListboxPythonMultiContent() self.callback = callback @@ -18,48 +19,46 @@ class HelpMenuList(GUIComponent): for (action, help) in actions: entry = [ ] - entry.append( (actionmap, context, action) ) buttons = queryKeyBinding(context, action) - buttonstring = "" - - first = True + + name = None + for n in buttons: name = getKeyDescription(n) - if name is None: - continue - - if not first: - buttonstring += ", or " - - first = False - buttonstring += name + if name is not None: + break - if not first: - buttonstring = "You can also press " + buttonstring + "." - - entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 550, 36, 0, 0, help) ) - entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 40, 550, 20, 1, 0, buttonstring) ) + entry.append( (actionmap, context, action, name ) ) + 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)) + self.l.setFont(0, gFont("Regular", 26)) + def ok(self): + # a list entry has a "private" tuple as first entry... + l = self.l.getCurrentSelection()[0] + + # ...containing (Actionmap, Context, Action, keydata). + # we returns this tuple to the callback. + self.callback(l[0], l[1], l[2]) + + def getCurrent(self): + return self.l.getCurrentSelection()[0] + def GUIcreate(self, parent): self.instance = eListbox(parent) self.instance.setContent(self.l) - self.instance.setItemHeight(75) - + self.instance.setItemHeight(42) + self.instance.selectionChanged.get().append(self.selectionChanged) + def GUIdelete(self): self.instance.setContent(None) + self.instance.selectionChanged.get().remove(self.selectionChanged) self.instance = None - def ok(self): - # a list entry has a "private" tuple as first entry... - l = self.l.getCurrentSelection()[0] - - # ...containing (Actionmap, Context, Action). - # we returns this tuple to the callback. - self.callback(l[0], l[1], l[2]) + def selectionChanged(self): + for x in self.onSelChanged: + x() diff --git a/lib/python/Screens/HelpMenu.py b/lib/python/Screens/HelpMenu.py index 4e1d1c49..e947ac91 100644 --- a/lib/python/Screens/HelpMenu.py +++ b/lib/python/Screens/HelpMenu.py @@ -1,18 +1,42 @@ from Screen import Screen +from Components.Pixmap import * +from Components.Pixmap import Pixmap +from Components.Pixmap import MovingPixmap +from Components.Label import Label +from Components.Slider import Slider from Components.ActionMap import ActionMap from Components.HelpMenuList import HelpMenuList +import string +from xml.sax import make_parser +from xml.sax.handler import ContentHandler +from Components.MenuList import MenuList class HelpMenu(Screen): def __init__(self, session, list): Screen.__init__(self, session) + self.onSelChanged = [ ] self["list"] = HelpMenuList(list, self.close) - self["actions"] = ActionMap(["OkCancelActions"], - { - "cancel": self.close, - "ok": self["list"].ok, - }) + self["list"].onSelChanged.append(self.SelectionChanged) + + self["rc"] = Pixmap() + self["arrowup"] = MovingPixmap() + + self["actions"] = ActionMap(["WizardActions"], + { + "ok": self["list"].ok, + "back": self.close, + }, -1) + + def SelectionChanged(self): + selection = self["list"].getCurrent()[3] + if selection is None: + self["arrowup"].instance.hide() + else: + self["arrowup"].moveTo(selection[1], selection[2], 1) + self["arrowup"].startMoving() + self["arrowup"].instance.show() class HelpableScreen: def __init__(self): @@ -20,10 +44,8 @@ class HelpableScreen: { "displayHelp": self.showHelp, }) - def showHelp(self): self.session.openWithCallback(self.callHelpAction, HelpMenu, self.helpList) - def callHelpAction(self, *args): if len(args): (actionmap, context, action) = args diff --git a/lib/python/Tools/KeyBindings.py b/lib/python/Tools/KeyBindings.py index e7582133..e093252e 100644 --- a/lib/python/Tools/KeyBindings.py +++ b/lib/python/Tools/KeyBindings.py @@ -4,16 +4,23 @@ keyBindings = { } from keyids import KEYIDS keyDescriptions = { - KEYIDS["KEY_RED"]: "red", - KEYIDS["KEY_BLUE"]: "blue", - KEYIDS["KEY_GREEN"]: "green", - KEYIDS["KEY_MENU"]: "menu", - KEYIDS["KEY_LEFT"]: "left", - KEYIDS["KEY_RIGHT"]: "right", - KEYIDS["KEY_VIDEO"]: "video", - KEYIDS["KEY_INFO"]: "info", - KEYIDS["KEY_AUDIO"]: "audio", - KEYIDS["KEY_RADIO"]: "radio" + KEYIDS["BTN_0"]: ("fp_up", 630, 320), + KEYIDS["BTN_1"]: ("fp_down", 565, 320), + KEYIDS["KEY_UP"]: ("up", 630, 320), + KEYIDS["KEY_DOWN"]: ("down", 565, 320), + KEYIDS["KEY_POWER"]: ("power", 615, 80), + KEYIDS["KEY_RED"]: ("red", 555, 390), + KEYIDS["KEY_BLUE"]: ("blue", 640, 390), + KEYIDS["KEY_GREEN"]: ("green", 585, 390), + KEYIDS["KEY_YELLOW"]: ("yellow", 610, 390), + KEYIDS["KEY_MENU"]: ("menu", 645, 290), + KEYIDS["KEY_LEFT"]: ("left", 565, 320), + KEYIDS["KEY_RIGHT"]: ("right", 630, 320), + KEYIDS["KEY_VIDEO"]: ("video", 645, 355), + KEYIDS["KEY_INFO"]: ("info", 550, 290), + KEYIDS["KEY_AUDIO"]: ("audio", 555, 355), + KEYIDS["KEY_TV"]: ("tv", 560, 425), + KEYIDS["KEY_RADIO"]: ("radio", 585, 425) } def addKeyBinding(key, context, action): @@ -30,5 +37,4 @@ def queryKeyBinding(context, action): def getKeyDescription(key): if key in keyDescriptions: - return keyDescriptions[key] - return "key_%0x" % key + return keyDescriptions.get(key, [ ]) -- 2.30.2