fix summary screens
authorFelix Domke <tmbinc@elitedvb.net>
Wed, 24 May 2006 22:56:58 +0000 (22:56 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Wed, 24 May 2006 22:56:58 +0000 (22:56 +0000)
mytest.py

index 5f574ad80e3d27da01470cfc715bcb371ba18f05..36a9382ac0a62ebb7e04a71cadf5208086c4999f 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -147,32 +147,36 @@ class Session:
                if callback is not None:
                        callback(*retval)
 
                if callback is not None:
                        callback(*retval)
 
-       def execBegin(self):
+       def execBegin(self, first=True):
                assert not self.in_exec 
                self.in_exec = True
                c = self.current_dialog
                
                assert not self.in_exec 
                self.in_exec = True
                c = self.current_dialog
                
-               self.pushSummary()
-
-               summary = c.createSummary() or SimpleSummary
-               self.summary = self.instantiateSummaryDialog(summary, c)
-               self.summary.show()
+               # when this is an execbegin after a execend of a "higher" dialog,
+               # popSummary already did the right thing.
+               if first:
+                       self.pushSummary()
+                       summary = c.createSummary() or SimpleSummary
+                       self.summary = self.instantiateSummaryDialog(summary, c)
+                       self.summary.show()
+                       c.addSummary(self.summary)
 
 
-               c.addSummary(self.summary)
                c.execBegin()
 
                # when execBegin opened a new dialog, don't bother showing the old one.
                if c == self.current_dialog:
                        c.show()
                
                c.execBegin()
 
                # when execBegin opened a new dialog, don't bother showing the old one.
                if c == self.current_dialog:
                        c.show()
                
-       def execEnd(self):
+       def execEnd(self, last=True):
                assert self.in_exec
                self.in_exec = False
 
                self.current_dialog.execEnd()
                self.current_dialog.hide()
                assert self.in_exec
                self.in_exec = False
 
                self.current_dialog.execEnd()
                self.current_dialog.hide()
-               self.current_dialog.removeSummary(self.summary)
-               self.popSummary()
+               
+               if last:
+                       self.current_dialog.removeSummary(self.summary)
+                       self.popSummary()
        
        def create(self, screen, arguments, **kwargs):
                # creates an instance of 'screen' (which is a class)
        
        def create(self, screen, arguments, **kwargs):
                # creates an instance of 'screen' (which is a class)
@@ -231,12 +235,12 @@ class Session:
        def pushCurrent(self):
                if self.current_dialog is not None:
                        self.dialog_stack.append(self.current_dialog)
        def pushCurrent(self):
                if self.current_dialog is not None:
                        self.dialog_stack.append(self.current_dialog)
-                       self.execEnd()
+                       self.execEnd(last=False)
        
        def popCurrent(self):
                if len(self.dialog_stack):
                        self.current_dialog = self.dialog_stack.pop()
        
        def popCurrent(self):
                if len(self.dialog_stack):
                        self.current_dialog = self.dialog_stack.pop()
-                       self.execBegin()
+                       self.execBegin(first=False)
                else:
                        self.current_dialog = None
 
                else:
                        self.current_dialog = None