X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FChoiceBox.py;h=6f23fdcdcb6332741e24f904974867247c6c18b8;hb=2623513b3de1ab9f89bac582ae30c39b4a8b9505;hp=7192a229c596721b14f6d73e02fb7888c3f1527c;hpb=0a3c667bfb6a1552975c1fd2325e7435363c2bc9;p=vuplus_dvbapp diff --git a/lib/python/Screens/ChoiceBox.py b/lib/python/Screens/ChoiceBox.py index 7192a22..6f23fdc 100644 --- a/lib/python/Screens/ChoiceBox.py +++ b/lib/python/Screens/ChoiceBox.py @@ -5,18 +5,32 @@ from Components.ActionMap import NumberActionMap from Components.Label import Label from Components.MenuList import MenuList from Components.GUIComponent import * +from Components.ChoiceList import ChoiceEntryComponent, ChoiceList import os class ChoiceBox(Screen): - def __init__(self, session, title = "", list = []): + def __init__(self, session, title = "", list = [], keys = None, selection = 0): Screen.__init__(self, session) self["text"] = Label(title) - self.list = list - self["list"] = MenuList(list) + self.list = [] + if keys is None: + self.keys = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "red", "green", "yellow", "blue" ] + (len(list) - 10) * [""] + else: + self.keys = keys + + self.keymap = {} + pos = 0 + for x in list: + strpos = str(self.keys[pos]) + self.list.append(ChoiceEntryComponent(key = strpos, text = x)) + if self.keys[pos] != "": + self.keymap[self.keys[pos]] = list[pos] + pos += 1 + self["list"] = ChoiceList(list = self.list, selection = selection) - self["actions"] = NumberActionMap(["WizardActions", "InputActions"], + self["actions"] = NumberActionMap(["WizardActions", "InputActions", "ColorActions", "DirectionActions"], { "ok": self.go, "back": self.cancel, @@ -29,7 +43,13 @@ class ChoiceBox(Screen): "7": self.keyNumberGlobal, "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, - "0": self.keyNumberGlobal + "0": self.keyNumberGlobal, + "red": self.keyRed, + "green": self.keyGreen, + "yellow": self.keyYellow, + "blue": self.keyBlue, + "up": self.up, + "down": self.down }, -1) def keyLeft(self): @@ -38,13 +58,47 @@ class ChoiceBox(Screen): def keyRight(self): pass + def up(self): + if len(self["list"].list) > 0: + while 1: + self["list"].instance.moveSelection(self["list"].instance.moveUp) + if self["list"].l.getCurrentSelection()[0][0] != "--" or self["list"].l.getCurrentSelectionIndex() == 0: + break + + def down(self): + if len(self["list"].list) > 0: + while 1: + self["list"].instance.moveSelection(self["list"].instance.moveDown) + if self["list"].l.getCurrentSelection()[0][0] != "--" or self["list"].l.getCurrentSelectionIndex() == len(self["list"].list) - 1: + break + + def keyNumberGlobal(self, number): print "pressed", number - #self["input"].number(number) + if self.keymap.has_key(str(number)): + self.close(self.keymap[str(number)]) def go(self): - self.close(self["list"].l.getCurrentSelection()) - #self.close(self["input"].getText()) - + if len(self["list"].list) > 0: + self.close(self["list"].l.getCurrentSelection()[0]) + else: + self.close(None) + + def keyRed(self): + if self.keymap.has_key("red"): + self.close(self.keymap["red"]) + + def keyGreen(self): + if self.keymap.has_key("green"): + self.close(self.keymap["green"]) + + def keyYellow(self): + if self.keymap.has_key("yellow"): + self.close(self.keymap["yellow"]) + + def keyBlue(self): + if self.keymap.has_key("blue"): + self.close(self.keymap["blue"]) + def cancel(self): self.close(None) \ No newline at end of file