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