1 from Converter import Converter
2 from enigma import eListboxPythonStringContent
3 from Components.Element import cached
5 class StringList(Converter):
6 """Turns a simple python list into a list which can be used in a listbox."""
7 def __init__(self, type):
8 Converter.__init__(self, type)
11 def changed(self, what):
13 self.content = eListboxPythonStringContent()
16 self.content.setList(self.source.list)
17 self.downstream_elements.changed(what)
19 def selectionChanged(self, index):
20 self.source.selectionChanged(index)
22 def setIndex(self, index):
23 # update all non-master targets
24 print "changed selection in listbox!"
25 for x in self.downstream_elements:
26 print "downstream element", x
27 if x is not self.master:
28 print "is not master, so update to index", index
31 def getIndex(self, index):
34 index = property(getIndex, setIndex)
38 if self.source is None or self.index is None or self.index >= len(self.source.list):
40 return self.source.list[self.index]
42 current = property(getCurrent)
44 # pass through: getIndex / setIndex to master
47 if self.master is None:
49 return self.master.index
51 def setIndex(self, index):
52 if self.master is not None:
53 self.master.index = index
55 index = property(getIndex, setIndex)
57 def entry_changed(self, index):
59 self.content.invalidateEntry(index)