Support turbo2.
[vuplus_dvbapp] / lib / python / Screens / Setup.py
index 61e6fdd..7e4f03a 100755 (executable)
@@ -19,6 +19,12 @@ except:
 setupdom = xml.etree.cElementTree.parse(setupfile)
 setupfile.close()
 
+def getConfigMenuItem(configElement):
+       for item in setupdom.getroot().findall('./setup/item/.'):
+               if item.text == configElement:
+                       return _(item.attrib["text"]), eval(configElement)
+       return "", None
+
 class SetupError(Exception):
     def __init__(self, message):
         self.msg = message
@@ -62,6 +68,17 @@ class Setup(ConfigListScreen, Screen):
                self.refill(list)
                self["config"].setList(list)
 
+       def removeEntryNotifier(self):
+               if self.needEntryChange:
+                       for item in self.needEntryChange:
+                               if self.entryChanged in item.notifiers:
+                                       item.notifiers.remove(self.entryChanged)
+
+       def entryChanged(self, configElement):
+               list = []
+               self.refill(list)
+               self["config"].setList(list)
+
        def refill(self, list):
                xmldata = setupdom.getroot()
                for x in xmldata.findall("setup"):
@@ -77,6 +94,8 @@ class Setup(ConfigListScreen, Screen):
 
                self.onChangedEntry = [ ]
 
+               self.needEntryChange = [ ]
+
                self.setup = setup
                list = []
                self.refill(list)
@@ -114,6 +133,7 @@ class Setup(ConfigListScreen, Screen):
                return SetupSummary
 
        def addItems(self, list, parentNode):
+               self.needEntryChange = [ ]
                for x in parentNode:
                        if x.tag == 'item':
                                item_level = int(x.get("level", 0))
@@ -140,6 +160,14 @@ class Setup(ConfigListScreen, Screen):
                                if not isinstance(item, ConfigNothing):
                                        list.append( (item_text, item) )
 
+                                       needentrychange = x.get("entrychange")
+                                       if needentrychange == "yes":
+                                               self.needEntryChange.append(item)
+                                               if not self.entryChanged in item.notifiers:
+                                                       item.notifiers.append(self.entryChanged)
+                                               if not self.removeEntryNotifier in self.onClose:
+                                                       self.onClose.append(self.removeEntryNotifier)
+
 def getSetupTitle(id):
        xmldata = setupdom.getroot()
        for x in xmldata.findall("setup"):