just recalc length of visible entries in movie selection
[enigma2.git] / lib / python / Screens / Wizard.py
index 036c81de8ba21be74addca8180565eac8c0fdc31..bd458273439af6c868c01823ae12d456fe7ae7ba 100644 (file)
@@ -3,6 +3,7 @@ from Screen import Screen
 import string
 
 from Screens.HelpMenu import HelpableScreen
+from Components.config import config
 from Components.Label import Label
 from Components.Slider import Slider
 from Components.ActionMap import HelpableActionMap, NumberActionMap
@@ -151,18 +152,14 @@ class Wizard(Screen, HelpableScreen):
                                return count
                        count += 1
                return 0
-               
-       def ok(self):
-               print "OK"
+
+       def finished(self, *args, **kwargs):
+               print "finished"
                currStep = self.currStep
-               if self.showConfig:
-                       if (self.wizard[currStep]["config"]["screen"] != None):
-                               # TODO: don't die, if no run() is available
-                               # there was a try/except here, but i can't see a reason
-                               # for this. If there is one, please do a more specific check
-                               # and/or a comment in which situation there is no run()
-                               self.configInstance.run()
-               
+
+               if self.updateValues not in self.onShown:
+                       self.onShown.append(self.updateValues)
+
                if self.showList:
                        if (len(self.wizard[currStep]["list"]) > 0):
                                nextStep = self.wizard[currStep]["list"][self["list"].l.getCurrentSelectionIndex()][1]
@@ -177,9 +174,28 @@ class Wizard(Screen, HelpableScreen):
                                self.currStep = self.getStepWithID(self.wizard[currStep]["nextstep"])
                        self.currStep += 1
                        self.updateValues()
-                       
+
                print "Now: " + str(self.currStep)
 
+
+       def ok(self):
+               print "OK"
+               currStep = self.currStep
+               
+               if self.showConfig:
+                       if (self.wizard[currStep]["config"]["screen"] != None):
+                               # TODO: don't die, if no run() is available
+                               # there was a try/except here, but i can't see a reason
+                               # 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)
+                                       self.configInstance.runAsync(self.finished)
+                                       return
+                               else:
+                                       self.configInstance.run()
+               self.finished()
+
        def keyNumberGlobal(self, number):
                if (self.wizard[self.currStep]["config"]["screen"] != None):
                        self.configInstance.keyNumberGlobal(number)
@@ -244,6 +260,7 @@ class Wizard(Screen, HelpableScreen):
                                        for x in self.wizard[self.currStep]["list"]:
                                                self.list.append((_(x[0]), None))
                                self["list"].l.setList(self.list)
+                               self["list"].moveToIndex(0)
        
                        if self.showConfig:
                                self["config"].instance.setZPosition(1)