X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FSetup.py;h=7e4f03a31bfb4c31fc3b8b73148a8a26379bdf1e;hp=e9c3c680b5542871d6f46f14177fed639f721dd9;hb=HEAD;hpb=2f32fea66879d0d84d401ca7ff83a97a3837c36a;ds=sidebyside diff --git a/lib/python/Screens/Setup.py b/lib/python/Screens/Setup.py index e9c3c68..7e4f03a 100755 --- a/lib/python/Screens/Setup.py +++ b/lib/python/Screens/Setup.py @@ -4,6 +4,7 @@ from Components.config import config, ConfigNothing from Components.SystemInfo import SystemInfo from Components.ConfigList import ConfigListScreen from Components.Sources.StaticText import StaticText +from enigma import eEnv import xml.etree.cElementTree @@ -14,10 +15,16 @@ try: setupfile = file('data/setup.xml', 'r') except: # if not found in the current path, we use the global datadir-path - setupfile = file('/usr/share/enigma2/setup.xml', 'r') + setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r') 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 @@ -61,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"): @@ -76,6 +94,8 @@ class Setup(ConfigListScreen, Screen): self.onChangedEntry = [ ] + self.needEntryChange = [ ] + self.setup = setup list = [] self.refill(list) @@ -113,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)) @@ -139,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"):