From a62e5192b59710f70a8610dbff84982ad6a98e46 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Thu, 12 Apr 2007 19:56:03 +0000 Subject: [PATCH] MenuList -> List --- lib/python/Components/Sources/List.py | 72 +++++++++++++++++++++++ lib/python/Components/Sources/Makefile.am | 2 +- lib/python/Components/Sources/MenuList.py | 0 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 lib/python/Components/Sources/List.py delete mode 100644 lib/python/Components/Sources/MenuList.py diff --git a/lib/python/Components/Sources/List.py b/lib/python/Components/Sources/List.py new file mode 100644 index 00000000..6d083f05 --- /dev/null +++ b/lib/python/Components/Sources/List.py @@ -0,0 +1,72 @@ +from Source import Source +from Tools.Event import Event +from Components.Element import cached + +class List(Source, object): + """The datasource of a listbox. Currently, the format depends on the used converter. So +if you put a simple string list in here, you need to use a StringList converter, if you are +using a "multi content list styled"-list, you need to use the StaticMultiList converter, and +setup the "fonts". + +This has been done so another converter could convert the list to a different format, for example +to generate HTML.""" + def __init__(self, list = [ ], enableWrapAround = False, item_height = 25, fonts = [ ]): + Source.__init__(self) + self.__list = list + self.onSelectionChanged = [ ] + self.item_height = item_height + self.fonts = fonts + self.disable_callbacks = False + + def setList(self, list): + self.__list = list + self.changed((self.CHANGED_ALL,)) + + list = property(lambda self: self.__list, setList) + + def entry_changed(self, index): + if not self.disable_callbacks: + self.downstream_elements.entry_changed(self, index) + + def selectionChanged(self, index): + if self.disable_callbacks: + return + + for x in self.onSelectionChanged: + x() + + @cached + def getCurrent(self): + return self.master is not None and self.master.current + + current = property(getCurrent) + + def setIndex(self, index): + if self.master is not None: + self.master.index = index + + @cached + def getIndex(self): + if self.master is not None: + return self.master.index + else: + return -1 + + setCurrentIndex = setIndex + + index = property(getIndex, setIndex) + + def updateList(self, list): + """Changes the list without changing the selection or emitting changed Events""" + assert len(list) == len(self.__list) + print "get old index" + old_index = self.index + print "disable callback" + self.disable_callbacks = True + print "set list" + self.list = list + print "set index" + self.index = old_index + print "reenable callbacks" + self.disable_callbacks = False + print "done" diff --git a/lib/python/Components/Sources/Makefile.am b/lib/python/Components/Sources/Makefile.am index b5e16d98..6deb423d 100644 --- a/lib/python/Components/Sources/Makefile.am +++ b/lib/python/Components/Sources/Makefile.am @@ -1,6 +1,6 @@ installdir = $(LIBDIR)/enigma2/python/Components/Sources install_PYTHON = \ - __init__.py Clock.py EventInfo.py Source.py MenuList.py CurrentService.py \ + __init__.py Clock.py EventInfo.py Source.py List.py CurrentService.py \ FrontendStatus.py Boolean.py Config.py ServiceList.py RdsDecoder.py StreamService.py \ StaticText.py diff --git a/lib/python/Components/Sources/MenuList.py b/lib/python/Components/Sources/MenuList.py deleted file mode 100644 index e69de29b..00000000 -- 2.30.2