wizard: cleanup circular reference on close
[enigma2.git] / lib / python / Screens / Wizard.py
index a5726f6fa54f0078d34c09278f2a294157ab97e8..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,6 +76,7 @@ class Wizard(Screen, HelpableScreen):
                self["list"] = MenuList(self.list)
 
                self.onShown.append(self.updateValues)
+               self.onClose.append(self.delReferences)
                
                self["actions"] = NumberActionMap(["WizardActions", "NumberActions"],
                {
@@ -151,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):
@@ -166,6 +169,7 @@ class Wizard(Screen, HelpableScreen):
                self["step"].setText(_("Step ") + str(self.currStep) + "/" + str(self.numSteps))
                self["stepslider"].setValue(self.currStep)
 
+               print _(self.wizard[self.currStep]["text"])
                self["text"].setText(_(self.wizard[self.currStep]["text"]))
 
                if self.wizard[self.currStep]["code"] != "":
@@ -197,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 = []