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):


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
[email protected]

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits

Reply via email to