wizard: cleanup circular reference on close
[enigma2.git] / lib / python / Screens / Wizard.py
index 97b07bfd94f0db8b27c72872f3bff7124073b8fc..fd9e9c3c44ab1fd042a13578de8986f5b51580db 100644 (file)
@@ -1,5 +1,7 @@
 from Screen import Screen
 
+import string
+
 from Screens.HelpMenu import HelpableScreen
 from Components.Label import Label
 from Components.Slider import Slider
@@ -29,7 +31,7 @@ class Wizard(Screen, HelpableScreen):
                                self.lastStep = int(attrs.get('number'))
                                self.wizard[self.lastStep] = {"text": "", "list": [], "config": {"screen": None, "args": None, "type": "" }, "code": ""}
                        elif (name == "text"):
-                               self.wizard[self.lastStep]["text"] = str(attrs.get('value'))
+                               self.wizard[self.lastStep]["text"] = string.replace(str(attrs.get('value')), "\\n", "\n")
                        elif (name == "listentry"):
                                self.wizard[self.lastStep]["list"].append((str(attrs.get('caption')), str(attrs.get('step'))))
                        elif (name == "config"):
@@ -74,11 +76,12 @@ class Wizard(Screen, HelpableScreen):
                self["list"] = MenuList(self.list)
 
                self.onShown.append(self.updateValues)
+               self.onClose.append(self.delReferences)
                
                self["actions"] = NumberActionMap(["WizardActions", "NumberActions"],
                {
                        "ok": self.ok,
-                       #"cancel": self.keyCancel,
+                       "back": self.back,
                        "left": self.left,
                        "right": self.right,
                        "up": self.up,
@@ -100,6 +103,12 @@ class Wizard(Screen, HelpableScreen):
                                #"ok": (self.ok, _("Close this Screen...")),
                        #})
 
+       def back(self):
+               self.currStep -= 1
+               if self.currStep < 1:
+                       self.currStep = 1
+               self.updateValues()
+               
        def ok(self):
                print "OK"
                if (self.wizard[self.currStep]["config"]["screen"] != None):
@@ -145,14 +154,14 @@ class Wizard(Screen, HelpableScreen):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
                        self["config"].instance.moveSelection(self["config"].instance.moveUp)
                elif (len(self.wizard[self.currStep]["list"]) > 0):
-                       self["list"].instance.moveSelection(self["config"].instance.moveUp)
+                       self["list"].instance.moveSelection(self["list"].instance.moveUp)
                print "up"
                
        def down(self):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
                        self["config"].instance.moveSelection(self["config"].instance.moveDown)
                elif (len(self.wizard[self.currStep]["list"]) > 0):
-                       self["list"].instance.moveSelection(self["config"].instance.moveDown)
+                       self["list"].instance.moveSelection(self["list"].instance.moveDown)
                print "down"
                
        def updateValues(self):
@@ -160,7 +169,8 @@ class Wizard(Screen, HelpableScreen):
                self["step"].setText(_("Step ") + str(self.currStep) + "/" + str(self.numSteps))
                self["stepslider"].setValue(self.currStep)
 
-               self["text"].setText(self.wizard[self.currStep]["text"])
+               print _(self.wizard[self.currStep]["text"])
+               self["text"].setText(_(self.wizard[self.currStep]["text"]))
 
                if self.wizard[self.currStep]["code"] != "":
                        print self.wizard[self.currStep]["code"]
@@ -171,7 +181,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], None))
+                               self.list.append((_(x[0]), None))
                self["list"].l.setList(self.list)
 
                self["config"].instance.setZPosition(1)
@@ -191,6 +201,9 @@ class Wizard(Screen, HelpableScreen):
                else:
                        self["config"].l.setList([])
 
+       def delReferences(self):
+               del self.configInstance
+
 class WizardManager:
        def __init__(self):
                self.wizards = []