From e0e7cf8fbfac3bfbf577b7c76c3b9d461a2854ee Mon Sep 17 00:00:00 2001 From: acid-burn Date: Thu, 6 Nov 2008 21:26:23 +0100 Subject: fix Dreambox Keyboard Numberinput inside ConfigIP --- lib/python/Components/config.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) mode change 100644 => 100755 lib/python/Components/config.py (limited to 'lib/python') diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py old mode 100644 new mode 100755 index b448ca6d..c21a9192 --- a/lib/python/Components/config.py +++ b/lib/python/Components/config.py @@ -513,6 +513,7 @@ class ConfigIP(ConfigSequence): self.auto_jump = auto_jump def handleKey(self, key): + if key == KEY_LEFT: if self.marked_block > 0: self.marked_block -= 1 @@ -531,8 +532,14 @@ class ConfigIP(ConfigSequence): self.marked_block = len(self.limits)-1 self.overwrite = True - if key in KEY_NUMBERS: - number = getKeyNumber(key) + if key in KEY_NUMBERS or key == KEY_ASCII: + if key == KEY_ASCII: + code = getPrevAsciiCode() + if code < 48 or code > 57: + return + number = code - 48 + else: + number = getKeyNumber(key) oldvalue = self._value[self.marked_block] if self.overwrite: -- cgit v1.2.3 From c9faacfea68f90597fb82504790dc1f7d7b71f3f Mon Sep 17 00:00:00 2001 From: ghost Date: Thu, 6 Nov 2008 23:05:15 +0100 Subject: Wizard.py: hopefully fix async stuff --- lib/python/Screens/Wizard.py | 96 +++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 51 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Screens/Wizard.py b/lib/python/Screens/Wizard.py index 53600dfe..17a8150e 100644 --- a/lib/python/Screens/Wizard.py +++ b/lib/python/Screens/Wizard.py @@ -307,43 +307,37 @@ class Wizard(Screen): def finished(self, gotoStep = None, *args, **kwargs): print "finished" - currStep = self.currStep + self.prevStep = self.currStep + self.gotoStep = gotoStep if self.updateValues not in self.onShown: self.onShown.append(self.updateValues) if self.showConfig: - if self.wizard[currStep]["config"]["type"] == "dynamic": - eval("self." + self.wizard[currStep]["config"]["evaluation"])() + if self.wizard[self.prevStep]["config"]["type"] == "dynamic": + eval("self." + self.wizard[self.prevStep]["config"]["evaluation"])() if self.showList: - if (len(self.wizard[currStep]["evaluatedlist"]) > 0): + if (len(self.wizard[self.prevStep]["evaluatedlist"]) > 0): print "current:", self["list"].current nextStep = self["list"].current[1] - if (self.wizard[currStep].has_key("listevaluation")): + if (self.wizard[self.prevStep].has_key("listevaluation")): exec("self." + self.wizard[self.currStep]["listevaluation"] + "('" + nextStep + "')") else: self.currStep = self.getStepWithID(nextStep) - if ((currStep == self.numSteps and self.wizard[currStep]["nextstep"] is None) or self.wizard[currStep]["id"] == "end"): # wizard finished + if ((self.prevStep == self.numSteps and self.wizard[self.prevStep]["nextstep"] is None) or self.wizard[self.prevStep]["id"] == "end"): # wizard finished print "wizard finished" self.markDone() self.close() else: - self.codeafter=True - self.runCode(self.wizard[currStep]["codeafter"]) - async = self.runCode(self.wizard[currStep]["codeafter_async"]) - if self.wizard[currStep]["nextstep"] is not None: - self.currStep = self.getStepWithID(self.wizard[currStep]["nextstep"]) - if gotoStep is not None: - self.currStep = self.getStepWithID(gotoStep) - if not async: - self.currStep += 1 - self.updateValues() - print "Now: " + str(self.currStep) + self.codeafterA=True + self.runCode(self.wizard[self.prevStep]["codeafter"]) + if self.runCode(self.wizard[self.prevStep]["codeafter_async"]): + if self.updateValues in self.onShown: + self.onShown.remove(self.updateValues) else: - self.onShown.remove(self.updateValues) - print "Now: " + str(self.currStep+1), "(after async code finished)" + self.afterAsyncCode() def ok(self): print "OK" @@ -358,7 +352,8 @@ class Wizard(Screen): # for this. If there is one, please do a more specific check # and/or a comment in which situation there is no run() if callable(getattr(self.configInstance, "runAsync", None)): - self.onShown.remove(self.updateValues) + if self.updateValues in self.onShown: + self.onShown.remove(self.updateValues) self.configInstance.runAsync(self.finished) return else: @@ -464,48 +459,47 @@ class Wizard(Screen): del self.configInstance["config"] self.configInstance.doClose() self.configInstance = None - - self.condition = True + exec (self.wizard[self.currStep]["condition"]) - if self.condition: - if len(self.stepHistory) == 0 or self.stepHistory[-1] != self.currStep: - self.stepHistory.append(self.currStep) - print "wizard step:", self.wizard[self.currStep] + + if len(self.stepHistory) == 0 or self.stepHistory[-1] != self.currStep: + self.stepHistory.append(self.currStep) + print "wizard step:", self.wizard[self.currStep] - if self.showSteps: - self["step"].setText(self.getTranslation("Step ") + str(self.currStep) + "/" + str(self.numSteps)) - if self.showStepSlider: - self["stepslider"].setValue(self.currStep) + if self.showSteps: + self["step"].setText(self.getTranslation("Step ") + str(self.currStep) + "/" + str(self.numSteps)) + if self.showStepSlider: + self["stepslider"].setValue(self.currStep) - if self.wizard[self.currStep]["timeout"] is not None: - self.resetCounter() - self.timeoutTimer.start(1000) + if self.wizard[self.currStep]["timeout"] is not None: + self.resetCounter() + self.timeoutTimer.start(1000) - 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"] - print "set LCD text" - for x in self.lcdCallbacks: - x(displaytext) + 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"] + print "set LCD text" + for x in self.lcdCallbacks: + x(displaytext) - self.codeafter=False - self.runCode(self.wizard[self.currStep]["code"]) - self.async = self.runCode(self.wizard[self.currStep]["code_async"]) - if self.async: + self.codeafterA=False + self.runCode(self.wizard[self.currStep]["code"]) + if self.runCode(self.wizard[self.currStep]["code_async"]): + if self.updateValues in self.onShown: self.onShown.remove(self.updateValues) - else: - self.afterAsyncCode() else: - self.currStep += 1 - self.updateValues() + self.afterAsyncCode() def afterAsyncCode(self): - if self.updateValues not in self.onShown: - self.onShown.append(self.updateValues) - if self.codeafter: + if self.codeafterA: + if self.wizard[self.prevStep]["nextstep"] is not None: + self.currStep = self.getStepWithID(self.wizard[self.currStep]["nextstep"]) + if self.gotoStep is not None: + self.currStep = self.getStepWithID(self.gotoStep) self.currStep += 1 self.updateValues() + print "Now: " + str(self.currStep) else: if self.showList: print "showing list,", self.currStep -- cgit v1.2.3 From e4632437dcaf95c92abd3b1fed122a61c97e3a5b Mon Sep 17 00:00:00 2001 From: ghost Date: Fri, 7 Nov 2008 00:36:51 +0100 Subject: Wizard.py: async fixes --- lib/python/Screens/Wizard.py | 92 +++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 40 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Screens/Wizard.py b/lib/python/Screens/Wizard.py index 17a8150e..23d6253a 100644 --- a/lib/python/Screens/Wizard.py +++ b/lib/python/Screens/Wizard.py @@ -307,37 +307,42 @@ class Wizard(Screen): def finished(self, gotoStep = None, *args, **kwargs): print "finished" - self.prevStep = self.currStep - self.gotoStep = gotoStep + currStep = self.currStep if self.updateValues not in self.onShown: self.onShown.append(self.updateValues) - + if self.showConfig: - if self.wizard[self.prevStep]["config"]["type"] == "dynamic": - eval("self." + self.wizard[self.prevStep]["config"]["evaluation"])() + if self.wizard[currStep]["config"]["type"] == "dynamic": + eval("self." + self.wizard[currStep]["config"]["evaluation"])() if self.showList: - if (len(self.wizard[self.prevStep]["evaluatedlist"]) > 0): + if (len(self.wizard[currStep]["evaluatedlist"]) > 0): print "current:", self["list"].current nextStep = self["list"].current[1] - if (self.wizard[self.prevStep].has_key("listevaluation")): + if (self.wizard[currStep].has_key("listevaluation")): exec("self." + self.wizard[self.currStep]["listevaluation"] + "('" + nextStep + "')") else: self.currStep = self.getStepWithID(nextStep) - if ((self.prevStep == self.numSteps and self.wizard[self.prevStep]["nextstep"] is None) or self.wizard[self.prevStep]["id"] == "end"): # wizard finished + print_now = True + 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: - self.codeafterA=True - self.runCode(self.wizard[self.prevStep]["codeafter"]) - if self.runCode(self.wizard[self.prevStep]["codeafter_async"]): + self.codeafter = True + self.runCode(self.wizard[currStep]["codeafter"]) + self.prevStep = currStep + self.gotoStep = gotoStep + if not self.runCode(self.wizard[currStep]["codeafter_async"]): + self.afterAsyncCode() + else: if self.updateValues in self.onShown: self.onShown.remove(self.updateValues) - else: - self.afterAsyncCode() + + if print_now: + print "Now: " + str(self.currStep) def ok(self): print "OK" @@ -460,41 +465,48 @@ class Wizard(Screen): self.configInstance.doClose() self.configInstance = None + self.condition = True exec (self.wizard[self.currStep]["condition"]) - - if len(self.stepHistory) == 0 or self.stepHistory[-1] != self.currStep: - self.stepHistory.append(self.currStep) - print "wizard step:", self.wizard[self.currStep] + if not self.condition: + self.currStep += 1 + self.updateValues() + else: + if len(self.stepHistory) == 0 or self.stepHistory[-1] != self.currStep: + self.stepHistory.append(self.currStep) + print "wizard step:", self.wizard[self.currStep] - if self.showSteps: - self["step"].setText(self.getTranslation("Step ") + str(self.currStep) + "/" + str(self.numSteps)) - if self.showStepSlider: - self["stepslider"].setValue(self.currStep) + if self.showSteps: + self["step"].setText(self.getTranslation("Step ") + str(self.currStep) + "/" + str(self.numSteps)) + if self.showStepSlider: + self["stepslider"].setValue(self.currStep) - if self.wizard[self.currStep]["timeout"] is not None: - self.resetCounter() - self.timeoutTimer.start(1000) + if self.wizard[self.currStep]["timeout"] is not None: + self.resetCounter() + self.timeoutTimer.start(1000) - 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"] - print "set LCD text" - for x in self.lcdCallbacks: - x(displaytext) + 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"] + print "set LCD text" + for x in self.lcdCallbacks: + x(displaytext) - self.codeafterA=False - self.runCode(self.wizard[self.currStep]["code"]) - if self.runCode(self.wizard[self.currStep]["code_async"]): - if self.updateValues in self.onShown: - self.onShown.remove(self.updateValues) - else: - self.afterAsyncCode() + self.codeafter=False + self.runCode(self.wizard[self.currStep]["code"]) + if self.runCode(self.wizard[self.currStep]["code_async"]): + if self.updateValues in self.onShown: + self.onShown.remove(self.updateValues) + else: + self.afterAsyncCode() def afterAsyncCode(self): - if self.codeafterA: + if not self.updateValues in self.onShown: + self.onShown.append(self.updateValues) + + if self.codeafter: if self.wizard[self.prevStep]["nextstep"] is not None: - self.currStep = self.getStepWithID(self.wizard[self.currStep]["nextstep"]) + self.currStep = self.getStepWithID(self.wizard[self.prevStep]["nextstep"]) if self.gotoStep is not None: self.currStep = self.getStepWithID(self.gotoStep) self.currStep += 1 -- cgit v1.2.3