activate language when used in standalone screen
[enigma2.git] / lib / python / Screens / Wizard.py
index fbf2632..38235b1 100644 (file)
@@ -24,8 +24,8 @@ class WelcomeWizard(Screen, HelpableScreen):
                        <widget name="step" position="50,50" size="440,25" font="Arial;23" />
                        <widget name="stepslider" position="50,500" zPosition="1" size="440,20" backgroundColor="dark" />
                        <widget name="rc" pixmap="/usr/share/enigma2/rc.png" position="500,600" zPosition="10" size="154,475" transparent="1" alphatest="on"/>
-                       <widget name="arrowdown" pixmap="/usr/share/enigma2/arrowdown.png" position="0,0" zPosition="10" size="37,70" transparent="1" alphatest="on"/>
-                       <widget name="arrowup" pixmap="/usr/share/enigma2/arrowup.png" position="-100,-100" zPosition="10" size="37,70" transparent="1" alphatest="on"/>
+                       <widget name="arrowdown" pixmap="/usr/share/enigma2/arrowdown.png" position="0,0" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
+                       <widget name="arrowup" pixmap="/usr/share/enigma2/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="on"/>
                </screen>"""
 
        class parseWizard(ContentHandler):
@@ -39,17 +39,18 @@ class WelcomeWizard(Screen, HelpableScreen):
                        self.currContent = name
                        if (name == "step"):
                                self.lastStep = int(attrs.get('number'))
-                               self.wizard[self.lastStep] = {"text": "", "list": [], "config": {"screen": None, "args": None }, "code": ""}
+                               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'))
                        elif (name == "listentry"):
-                               self.wizard[self.lastStep]["list"].append(str(attrs.get('caption')))
+                               self.wizard[self.lastStep]["list"].append((str(attrs.get('caption')), str(attrs.get('step'))))
                        elif (name == "config"):
                                exec "from Screens." + str(attrs.get('module')) + " import *"
                                self.wizard[self.lastStep]["config"]["screen"] = eval(str(attrs.get('screen')))
                                if (attrs.has_key('args')):
                                        print "has args"
                                        self.wizard[self.lastStep]["config"]["args"] = str(attrs.get('args'))
+                               self.wizard[self.lastStep]["config"]["type"] = str(attrs.get('type'))
                def endElement(self, name):
                        self.currContent = ""
                        if name == 'code':
@@ -97,18 +98,18 @@ class WelcomeWizard(Screen, HelpableScreen):
                        #"cancel": self.keyCancel,
                        "left": self.left,
                        "right": self.right,
-                       #"up": self.up,
-                       #"down": self.down,
-                       #"1": self.keyNumberGlobal,
-                       #"2": self.keyNumberGlobal,
-                       #"3": self.keyNumberGlobal,
-                       #"4": self.keyNumberGlobal,
-                       #"5": self.keyNumberGlobal,
-                       #"6": self.keyNumberGlobal,
-                       #"7": self.keyNumberGlobal,
-                       #"8": self.keyNumberGlobal,
-                       #"9": self.keyNumberGlobal,
-                       #"0": self.keyNumberGlobal
+                       "up": self.up,
+                       "down": self.down,
+                       "1": self.keyNumberGlobal,
+                       "2": self.keyNumberGlobal,
+                       "3": self.keyNumberGlobal,
+                       "4": self.keyNumberGlobal,
+                       "5": self.keyNumberGlobal,
+                       "6": self.keyNumberGlobal,
+                       "7": self.keyNumberGlobal,
+                       "8": self.keyNumberGlobal,
+                       "9": self.keyNumberGlobal,
+                       "0": self.keyNumberGlobal
                }, -1)
                
                #self["actions"] = HelpableActionMap(self, "OkCancelActions",
@@ -117,6 +118,18 @@ class WelcomeWizard(Screen, HelpableScreen):
                        #})
 
        def ok(self):
+               if (self.wizard[self.currStep]["config"]["screen"] != None):
+                       self.configInstance.run()
+               
+               if (len(self.wizard[self.currStep]["list"]) > 0):
+                       nextStep = self.wizard[self.currStep]["list"][self["list"].l.getCurrentSelectionIndex()][1]
+                       if nextStep == "end":
+                               self.currStep = self.numSteps
+                       elif nextStep == "next":
+                               pass
+                       else:
+                               self.currStep = int(nextStep) - 1
+
                if (self.currStep == self.numSteps): # wizard finished
                        config.misc.firstrun.value = 0;
                        config.misc.firstrun.save()
@@ -125,6 +138,10 @@ class WelcomeWizard(Screen, HelpableScreen):
                        self.currStep += 1
                        self.updateValues()
 
+       def keyNumberGlobal(self, number):
+               if (self.wizard[self.currStep]["config"]["screen"] != None):
+                       self.configInstance.keyNumberGlobal(number)
+               
        def left(self):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
                        self.configInstance.keyLeft()
@@ -137,12 +154,16 @@ class WelcomeWizard(Screen, HelpableScreen):
 
        def up(self):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
-                       self.configInstance.handleKey("moveUp")
+                       self[self.currConfig].instance.moveSelection(self[self.currConfig].instance.moveUp)
+               elif (len(self.wizard[self.currStep]["list"]) > 0):
+                       self["list"].instance.moveSelection(self["config"].instance.moveUp)
                print "up"
                
        def down(self):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
-                       self.configInstance.handleKey("moveDown")
+                       self[self.currConfig].instance.moveSelection(self[self.currConfig].instance.moveDown)
+               elif (len(self.wizard[self.currStep]["list"]) > 0):
+                       self["list"].instance.moveSelection(self["config"].instance.moveDown)
                print "down"
                
        def updateValues(self):
@@ -156,19 +177,24 @@ class WelcomeWizard(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, None))
+                               self.list.append((x[0], None))
                self["list"].l.setList(self.list)
 
                self["config"].instance.setZPosition(1)
                if (self.wizard[self.currStep]["config"]["screen"] != None):
-                       self["config"].instance.setZPosition(2)
+                       if self.wizard[self.currStep]["config"]["type"] == "ConfigList":
+                               self.currConfig = "config"
+                       elif self.wizard[self.currStep]["config"]["type"] == "MenuList":
+                               self.currConfig = "list"
+
+                       self[self.currConfig].instance.setZPosition(2)
                        print self.wizard[self.currStep]["config"]["screen"]
                        if self.wizard[self.currStep]["config"]["args"] == None:
                                self.configInstance = self.session.instantiateDialog(self.wizard[self.currStep]["config"]["screen"])
                        else:
                                self.configInstance = self.session.instantiateDialog(self.wizard[self.currStep]["config"]["screen"], eval(self.wizard[self.currStep]["config"]["args"]))
-                       self["config"].l.setList(self.configInstance["config"].list)
-                       self.configInstance["config"] = self["config"]
+                       self[self.currConfig].l.setList(self.configInstance[self.currConfig].list)
+                       self.configInstance[self.currConfig] = self[self.currConfig]
                else:
                        self["config"].l.setList([])