X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c7e02a89b51548cae34109234a499b3878edf9c7..79da420aa414522f8b5477053f0b46e6311f1cc1:/lib/python/Screens/Wizard.py diff --git a/lib/python/Screens/Wizard.py b/lib/python/Screens/Wizard.py index a399c96a..dfb28e24 100644 --- a/lib/python/Screens/Wizard.py +++ b/lib/python/Screens/Wizard.py @@ -45,7 +45,7 @@ class WizardSummary(Screen): def setText(self, text): self["text"].setText(text) -class Wizard(Screen, HelpableScreen): +class Wizard(Screen): def createSummary(self): print "WizardCreateSummary" return WizardSummary @@ -55,12 +55,10 @@ class Wizard(Screen, HelpableScreen): self.isPointsElement, self.isReboundsElement = 0, 0 self.wizard = wizard self.currContent = "" - self.lastStep = 0 - - - + self.lastStep = 0 + def startElement(self, name, attrs): - print "startElement", name + #print "startElement", name self.currContent = name if (name == "step"): self.lastStep += 1 @@ -68,7 +66,7 @@ class Wizard(Screen, HelpableScreen): id = str(attrs.get('id')) else: id = "" - print "id:", id + #print "id:", id if attrs.has_key('nextstep'): nextstep = str(attrs.get('nextstep')) else: @@ -97,7 +95,7 @@ class Wizard(Screen, HelpableScreen): self.wizard[self.lastStep]["dynamiclist"] = attrs.get("source") #self.wizard[self.lastStep]["list"].append(("Hallo", "test")) if (attrs.has_key("evaluation")): - print "evaluation" + #print "evaluation" self.wizard[self.lastStep]["listevaluation"] = attrs.get("evaluation") if (attrs.has_key("onselect")): self.wizard[self.lastStep]["onselect"] = attrs.get("onselect") @@ -107,11 +105,14 @@ class Wizard(Screen, HelpableScreen): type = str(attrs.get('type')) self.wizard[self.lastStep]["config"]["type"] = type if type == "ConfigList" or type == "standalone": - exec "from Screens." + str(attrs.get('module')) + " import *" + try: + exec "from Screens." + str(attrs.get('module')) + " import *" + except: + exec "from " + str(attrs.get('module')) + " import *" self.wizard[self.lastStep]["config"]["screen"] = eval(str(attrs.get('screen'))) if (attrs.has_key('args')): - print "has args" + #print "has args" self.wizard[self.lastStep]["config"]["args"] = str(attrs.get('args')) elif type == "dynamic": self.wizard[self.lastStep]["config"]["source"] = str(attrs.get('source')) @@ -124,6 +125,7 @@ class Wizard(Screen, HelpableScreen): self.codeafter = False elif (name == "condition"): pass + def endElement(self, name): self.currContent = "" if name == 'code': @@ -134,7 +136,8 @@ class Wizard(Screen, HelpableScreen): elif name == 'condition': self.wizard[self.lastStep]["condition"] = self.wizard[self.lastStep]["condition"].strip() elif name == 'step': - print "Step number", self.lastStep, ":", self.wizard[self.lastStep] + #print "Step number", self.lastStep, ":", self.wizard[self.lastStep] + pass def characters(self, ch): if self.currContent == "code": @@ -147,19 +150,21 @@ class Wizard(Screen, HelpableScreen): def __init__(self, session, showSteps = True, showStepSlider = True, showList = True, showConfig = True): Screen.__init__(self, session) - HelpableScreen.__init__(self) self.stepHistory = [] self.wizard = {} parser = make_parser() - print "Reading " + self.xmlfile + if not isinstance(self.xmlfile, list): + self.xmlfile = [self.xmlfile] + print "Reading ", self.xmlfile wizardHandler = self.parseWizard(self.wizard) parser.setContentHandler(wizardHandler) - if self.xmlfile[0] != '/': - parser.parse('/usr/share/enigma2/' + self.xmlfile) - else: - parser.parse(self.xmlfile) + for xmlfile in self.xmlfile: + if xmlfile[0] != '/': + parser.parse('/usr/share/enigma2/' + xmlfile) + else: + parser.parse(xmlfile) self.showSteps = showSteps self.showStepSlider = showStepSlider @@ -167,7 +172,7 @@ class Wizard(Screen, HelpableScreen): self.showConfig = showConfig self.numSteps = len(self.wizard) - self.currStep = 1 + self.currStep = self.getStepWithID("start") + 1 self.timeoutTimer = eTimer() self.timeoutTimer.callback.append(self.timeoutCounterFired) @@ -261,7 +266,7 @@ class Wizard(Screen, HelpableScreen): def getStepWithID(self, id): print "getStepWithID:", id count = 0 - for x in self.wizard: + for x in self.wizard.keys(): if self.wizard[x]["id"] == id: print "result:", count return count @@ -289,7 +294,8 @@ class Wizard(Screen, HelpableScreen): else: self.currStep = self.getStepWithID(nextStep) - if (currStep == self.numSteps): # wizard finished + if ((currStep == self.numSteps and self.wizard[currStep]["nextstep"] is None) or self.wizard[currStep]["id"] == "end"): # wizard finished + print "wizard finished" self.markDone() self.close() else: @@ -392,8 +398,11 @@ class Wizard(Screen, HelpableScreen): print "code", code exec(code) + def getTranslation(self, text): + return _(text) + def updateText(self, firstset = False): - text = _(self.wizard[self.currStep]["text"]) + text = self.getTranslation(self.wizard[self.currStep]["text"]) if text.find("[timeout]") != -1: text = text.replace("[timeout]", str(self.timeoutCounter)) self["text"].setText(text) @@ -425,7 +434,7 @@ class Wizard(Screen, HelpableScreen): print "wizard step:", self.wizard[self.currStep] if self.showSteps: - self["step"].setText(_("Step ") + str(self.currStep) + "/" + str(self.numSteps)) + self["step"].setText(self.getTranslation("Step ") + str(self.currStep) + "/" + str(self.numSteps)) if self.showStepSlider: self["stepslider"].setValue(self.currStep) @@ -433,7 +442,7 @@ class Wizard(Screen, HelpableScreen): self.resetCounter() self.timeoutTimer.start(1000) - print "wizard text", _(self.wizard[self.currStep]["text"]) + print "wizard text", self.getTranslation(self.wizard[self.currStep]["text"]) self.updateText(firstset = True) if self.wizard[self.currStep].has_key("displaytext"): displaytext = self.wizard[self.currStep]["displaytext"] @@ -467,7 +476,7 @@ class Wizard(Screen, HelpableScreen): if (len(self.wizard[self.currStep]["list"]) > 0): #self["list"].instance.setZPosition(2) for x in self.wizard[self.currStep]["list"]: - self.list.append((_(x[0]), x[1])) + self.list.append((self.getTranslation(x[0]), x[1])) self.wizard[self.currStep]["evaluatedlist"] = self.list self["list"].list = self.list self["list"].index = 0