diff --git a/lib/dialogwizard/dialogwizard.py b/lib/dialogwizard/dialogwizard.py index 41e2cc77..e31d6bae 100755 --- a/lib/dialogwizard/dialogwizard.py +++ b/lib/dialogwizard/dialogwizard.py @@ -8,16 +8,17 @@ from wizard import Step, PreviousStep, EndScenario, TryAgain from itertools import izip -import dialog, time +import dialog, time, sys, commands def really_quit(dico): raise EndScenario("game over!", data = dico) def error_handler(exc): - dialog.Dialog().msgbox('Erreur:', exc.__repr__()) + sexc = (str(exc)) + dialog.Dialog().msgbox(sexc, title = 'Erreur :') raise TryAgain() -class DialogStepGenerator(): +class DialogStepGenerator: u"""This class defines a step, that will prompt the user for various fields.""" diff --git a/lib/dialogwizard/wizard.py b/lib/dialogwizard/wizard.py index bbc486f3..01032a3d 100755 --- a/lib/dialogwizard/wizard.py +++ b/lib/dialogwizard/wizard.py @@ -33,7 +33,7 @@ class Step: class Scenario: u"""This class allows us to define scenarios.""" - def __init__(self) + def __init__(self): u"""empty scenario, with an error handler (that takes an exception as argument)""" self.steps = None @@ -162,7 +162,18 @@ class Running: pass except Exception, e: - self.handle(e) + try: + self.handle(e) + + except PreviousStep: + if self.stack: + self.env, self.defaults, self.steps, self.stack = self.stack + else: + raise EndScenario("No previous step", self.env) + + except TryAgain: + # We can update defaults + pass else: # Should not be called