mailr27513 - /trunk/gui/wizards/wiz_objects.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on February 04, 2015 - 16:19:
Author: bugman
Date: Wed Feb  4 16:19:54 2015
New Revision: 27513

URL: http://svn.gna.org/viewcvs/relax?rev=27513&view=rev
Log:
Fix for GUI wizards and GUI user functions.

The recent memory management changes caused the wizard windows to have an 
incorrect layout so that
the wizard pages were not visible.  Reperforming a layout of the GUI elements 
did not help.  The
solution is to not initialise sets of max_pages of wx.BoxSizer elements in 
the wizard __init__()
method, but to generate and append these dynamically via the add_page() 
method.  The change now
means that there are no longer multiple unused wx.BoxSizer instances 
generated for each wizard
window created.


Modified:
    trunk/gui/wizards/wiz_objects.py

Modified: trunk/gui/wizards/wiz_objects.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/gui/wizards/wiz_objects.py?rev=27513&r1=27512&r2=27513&view=diff
==============================================================================
--- trunk/gui/wizards/wiz_objects.py    (original)
+++ trunk/gui/wizards/wiz_objects.py    Wed Feb  4 16:19:54 2015
@@ -366,11 +366,9 @@
     TEXT_SKIP = " Skip"
 
 
-    def __init__(self, max_pages=15, parent=None, size_x=400, size_y=400, 
title='', border=10, style=wx.DEFAULT_DIALOG_STYLE):
+    def __init__(self, parent=None, size_x=400, size_y=400, title='', 
border=10, style=wx.DEFAULT_DIALOG_STYLE):
         """Set up the window.
 
-        @keyword max_pages: The maximum number of pages for the wizard.
-        @type max_pages:    int
         @keyword parent:    The parent window.
         @type parent:       wx.Window instance
         @keyword size_x:    The width of the wizard.
@@ -390,7 +388,6 @@
         self._size_y = size_y
         self._border = border
         self.title = title
-        self.max_pages = max_pages
 
         # Execute the base class method.
         wx.Dialog.__init__(self, parent, id=-1, title=title, style=style)
@@ -417,6 +414,7 @@
         self._pages = []
         self._page_sizers = []
         self._button_sizers = []
+        self._top_sizers = []
         self._button_apply_flag = []
         self._button_skip_flag = []
         self._buttons = []
@@ -429,59 +427,6 @@
         self._seq_next = []
         self._seq_prev = []
         self._skip_flag = []
-
-        # Generate the elements for all pages.
-        for i in range(self.max_pages):
-            # Append some Nones.
-            self._pages.append(None)
-
-            # Initialise all box sizers for the wizard pages, and store them.
-            self._page_sizers.append(wx.BoxSizer(wx.VERTICAL))
-            self._main_sizer.Add(self._page_sizers[i], 1, wx.ALL|wx.EXPAND, 
0)
-
-            # Initialise all box sizers for the buttons, and store them.
-            self._button_sizers.append(wx.BoxSizer(wx.HORIZONTAL))
-            self._page_sizers[i].Add(self._button_sizers[i], 0, 
wx.ALIGN_RIGHT|wx.ALL, 0)
-
-            # Set all button flags.
-            self._button_apply_flag.append(True)
-            self._button_skip_flag.append(False)
-
-            # Initialise the button storage.
-            self._buttons.append({'back': None,
-                                  'apply': None,
-                                  'next': None,
-                                  'ok': None,
-                                  'finish': None,
-                                  'cancel': None})
-
-            # Initialise a set of unique button IDs.
-            self._button_ids.append({'back': -1,
-                                     'apply': -1,
-                                     'next': -1,
-                                     'ok': -1,
-                                     'finish': -1,
-                                     'cancel': -1})
-
-            # Execute on next by default.
-            self._exec_on_next.append(True)
-
-            # Execution count.
-            self._exec_count.append(0)
-
-            # Proceed to next page on errors by default.
-            self._proceed_on_error.append(True)
-
-            # No user function flushing of the GUI interpreter thread prior 
to proceeding.
-            self._uf_flush.append(False)
-
-            # Page sequence initialisation.
-            self._seq_fn_list.append(self._next_fn)
-            self._seq_next.append(None)
-            self._seq_prev.append(None)
-
-            # Page skipping.
-            self._skip_flag.append(False)
 
         # Flag to suppress later button addition.
         self._buttons_built = False
@@ -628,6 +573,8 @@
         @param i:   The index of the page to display.
         @type i:    int
         """
+
+        print "Displaying page %i" % i
 
         # Hide all of the original contents.
         for j in range(self._num_pages):
@@ -873,28 +820,73 @@
         # Store the page.
         index = self._num_pages
         self._num_pages += 1
-        self._pages[index] = panel
+        self._pages.append(panel)
+
+        # Initialise all box sizers for the wizard page, and store them.
+        self._page_sizers.append(wx.BoxSizer(wx.VERTICAL))
+        self._main_sizer.Add(self._page_sizers[index], 1, wx.ALL|wx.EXPAND, 
0)
 
         # Add the sizer for the top half.
-        top_sizer = wx.BoxSizer(wx.VERTICAL)
-        self._page_sizers[index].Add(top_sizer, 1, wx.ALL|wx.EXPAND, 0)
+        self._top_sizers.append(wx.BoxSizer(wx.VERTICAL))
+        self._page_sizers[index].Add(self._top_sizers[index], 1, 
wx.ALL|wx.EXPAND, 0)
 
         # Add the page to the top sizer.
-        top_sizer.Add(panel, 1, wx.ALL|wx.EXPAND, 0)
-
-        # Store the flags.
-        self._button_apply_flag[index] = apply_button
-        self._button_skip_flag[index] = skip_button
-        self._exec_on_next[index] = exec_on_next
-        self._proceed_on_error[index] = proceed_on_error
+        self._top_sizers[index].Add(panel, 1, wx.ALL|wx.EXPAND, 0)
+
+        # Initialise all box sizers for the buttons, and store them.
+        self._button_sizers.append(wx.BoxSizer(wx.HORIZONTAL))
+
+        # Add the sizer for the wizard buttons.
+        self._page_sizers[index].Add(self._button_sizers[index], 0, 
wx.ALIGN_RIGHT|wx.ALL, 0)
+
+        # Store all button flags.
+        self._button_apply_flag.append(apply_button)
+        self._button_skip_flag.append(skip_button)
+
+        # Initialise the button storage.
+        self._buttons.append({'back': None,
+                              'apply': None,
+                              'next': None,
+                              'ok': None,
+                              'finish': None,
+                              'cancel': None})
+
+        # Initialise a set of unique button IDs.
+        self._button_ids.append({'back': -1,
+                                 'apply': -1,
+                                 'next': -1,
+                                 'ok': -1,
+                                 'finish': -1,
+                                 'cancel': -1})
+
+        # Execute on next by default.
+        self._exec_on_next.append(exec_on_next)
+
+        # Execution count.
+        self._exec_count.append(0)
+
+        # Proceed to next page on errors by default.
+        self._proceed_on_error.append(proceed_on_error)
+
+        # User function flushing of the GUI interpreter thread prior to 
proceeding.
         if not proceed_on_error or uf_flush:
-            self._uf_flush[index] = True
+            self._uf_flush.append(True)
+        else:
+            self._uf_flush.append(False)
+
+        # Page sequence initialisation.
+        self._seq_fn_list.append(self._next_fn)
+        self._seq_next.append(None)
+        self._seq_prev.append(None)
+
+        # Page skipping.
+        self._skip_flag.append(False)
 
         # Store the index of the page.
-        panel.page_index = self._num_pages - 1
+        panel.page_index = index
 
         # Return the index of the page.
-        return panel.page_index
+        return index
 
 
     def block_next(self, block=True):




Related Messages


Powered by MHonArc, Updated Wed Feb 04 16:40:02 2015