fix initial help menu arrow position
[enigma2.git] / lib / python / Screens / HelpMenu.py
index c19233e270da2a6d15ed2b7315e088443731b681..6332cde2c1a7a9b90e79c6226a9786eb97de8f35 100644 (file)
@@ -1,51 +1,52 @@
 from Screen import Screen
-
-from Components.Pixmap import *
-from Components.Pixmap import Pixmap
-from Components.Pixmap import MovingPixmap
+from Components.Pixmap import Pixmap, 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["list"].onSelChanged.append(self.SelectionChanged)
                self["rc"] = Pixmap()
                self["arrowup"] = MovingPixmap()
+               self["arrowup"].hide()
+               self["sh_arrowup"] = Pixmap()
+               self["sh_arrowup"].hide()
+               self["long_key"] = Label("")
 
                self["actions"] = ActionMap(["WizardActions"], 
                {
                        "ok": self["list"].ok,
                        "back": self.close,
-                       "up": self.up,
-                       "down": self.down
                }, -1)
-       
-       def up(self):
-               self["list"].instance.moveSelection(self["list"].instance.moveUp)
-               self.SelectionChanged()
-               
-       def down(self):
-               self["list"].instance.moveSelection(self["list"].instance.moveDown)
-               self.SelectionChanged()
-               
+
+               self.onLayoutFinish.append(self.SelectionChanged)
+
        def SelectionChanged(self):
-               selection = self["list"].getCurrent()[3]
+               selection = self["list"].getCurrent()
+               selection = selection and selection[3]
+               arrow = self["arrowup"]
+               sh_arrow = self["sh_arrowup"]
+
+               if selection and selection[0][:3] == "sh_":
+                       sh_arrow.show()
+               else:
+                       sh_arrow.hide()
+
+               if selection and selection[0][:2] == "l_":
+                       self["long_key"].setText(_("Long Keypress"))
+               else:
+                       self["long_key"].setText("")
+
                if selection is None:
-                       self["arrowup"].instance.hide()
+                       arrow.hide()
                else:
-                       self["arrowup"].moveTo(selection[1], selection[2], 1)
-                       self["arrowup"].startMoving()
-                       self["arrowup"].instance.show()
+                       arrow.moveTo(selection[1], selection[2], 1)
+                       arrow.startMoving()
+                       arrow.show()
 
 class HelpableScreen:
        def __init__(self):
@@ -53,10 +54,11 @@ 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
                        actionmap.action(context, action)
-