Author: bugman Date: Wed Feb 4 09:34:41 2015 New Revision: 27502 URL: http://svn.gna.org/viewcvs/relax?rev=27502&view=rev Log: Merged revisions 27440-27497 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk ........ r27440 | bugman | 2015-02-02 16:59:45 +0100 (Mon, 02 Feb 2015) | 3 lines Copyright update. ........ r27441 | bugman | 2015-02-02 17:08:08 +0100 (Mon, 02 Feb 2015) | 5 lines Fix for the oblate spheroid diffusion relaxation data. The diffusion parameters are constrained as Dx <= Dy <= Dz. ........ r27442 | bugman | 2015-02-02 17:14:55 +0100 (Mon, 02 Feb 2015) | 6 lines More fixes for the Structure.test_create_diff_tensor_pdb_oblate system test. The initial Diso value is now set to the real final Diso, and the PDB file contents have been updated for the fixed oblate spheroidal diffusion relaxation data. ........ r27443 | bugman | 2015-02-02 17:25:22 +0100 (Mon, 02 Feb 2015) | 6 lines Updates for many of the Diffusion_tensor system tests. This is due to the changed directory names in test_suite/shared_data/diffusion_tensor/. The ds.diff_dir variable has been introduced to point to the correct data directory. ........ r27444 | bugman | 2015-02-02 23:34:27 +0100 (Mon, 02 Feb 2015) | 14 lines Big bug fix for the GUI tests on MS Windows systems. On MS Windows systems, the GUI tests were unable to complete without crashing. This is because each GUI element requires one 'User object', and MS Windows has a maximum limit of 10,000 of these objects. The GUI tests were taking more than 10,000 and then Windows would say - relax, you die now. The solution is that after each GUI test, all user function windows are destroyed. The user function page is a wx.Panel object, so this requires a Destroy() call. But the window is a Uf_page instance which inherits from Wiz_page which inherits from wx.Dialog. Calling Destroy() on MS Windows and Linux works fine, but is fatal on Mac OS X systems. So the solution is to call Close() instead. ........ r27445 | bugman | 2015-02-03 09:20:10 +0100 (Tue, 03 Feb 2015) | 13 lines Large improvement for the GUI test tearDown() clean up method, fixing the tests on wxPython 2.8. The user function window destruction has been shifted into a new clean_up_windows() method which is executed via wx.CallAfter() to avoid racing conditions. In addition, the spin viewer window is destroyed between tests. The spin viewer window change allows the GUI tests to pass on wxPython 2.8 again. This also allows the GUI tests to progress much further on Mac OS X systems before they crash again for some other reason. This could simply be hiding a problem in the spin viewer window. However it is likely to be a racing problem only triggered by the super fast speed of the GUI tests and a normal user would never be able to operate the GUI on the millisecond timescale and hence may never see it. ........ r27446 | bugman | 2015-02-03 09:37:34 +0100 (Tue, 03 Feb 2015) | 19 lines Reverted r27241, the wxPython 2.8 warning. The command used was: svn merge -r27241:r27240 . This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.devel/7502/focus=7512. ..... r27241 | bugman | 2015-01-20 15:04:18 +0100 (Tue, 20 Jan 2015) | 6 lines Changed paths: M /trunk/dep_check.py Added a RelaxWarning printout to the dep_check module if wxPython 2.8 or less is encountered. This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502. The warning text is simply written to STDERR as relax starts. ..... ........ r27447 | bugman | 2015-02-03 09:41:12 +0100 (Tue, 03 Feb 2015) | 19 lines Reverted r27243, the skipping of the GUI tests on wxPython 2.8. The command used was: svn merge -r27243:r27242 . This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.devel/7502/focus=7512. ..... r27243 | bugman | 2015-01-20 15:13:19 +0100 (Tue, 20 Jan 2015) | 6 lines Changed paths: M /trunk/test_suite/test_suite_runner.py The GUI tests are now skipped for wxPython version <= 2.8 due to bugs causing fatal segfaults. This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502. These wxPython versions are simply too buggy. ..... ........ r27448 | bugman | 2015-02-03 09:46:40 +0100 (Tue, 03 Feb 2015) | 20 lines Reverted r27325, the General.test_bug_23187_residue_delete_gui GUI test is no longer disabled. The command was: svn merge -r27325:r27324 . The 'Bus Error' on Mac OS X due to this test is no longer an issue, as the spin viewer window is now destroyed after each GUI test. ..... r27325 | bugman | 2015-01-27 11:35:39 +0100 (Tue, 27 Jan 2015) | 6 lines Changed paths: M /trunk/test_suite/gui_tests/general.py Disabled the General.test_bug_23187_residue_delete_gui GUI test. This is essential as a wxPython bug in Mac OS X systems causes this test to trigger a 'Bus Error' every time the GUI tests are run, killing relax. ..... ........ r27449 | bugman | 2015-02-03 10:07:09 +0100 (Tue, 03 Feb 2015) | 9 lines Created a special Destroy() method for the spin viewer window. This is for greater control of the spin viewer window destruction. First the methods registered with the observer objects are unregistered, then the children of the spin viewer window are destroyed, and finally the main spin viewer window is destroyed. This change saves a lot of GUI resources in the GUI tests (there is a large reduction in 'User Objects' and 'GDI Objects' used on MS Windows systems, hence an equivalent resource reduction on other operating systems). ........ r27450 | bugman | 2015-02-03 10:14:45 +0100 (Tue, 03 Feb 2015) | 16 lines Fix for the GUI test clean_up_windows() method called from tearDown(). The user function window (Wiz_window) must be closed before the user function page (Uf_page), so that the Wiz_window._handler_close() can still operate the methods of the Uf_page. This avoids a huge quantity of these errors: Traceback (most recent call last): File "/data/relax/relax-trunk/gui/wizards/wiz_objects.py", line 723, in _handler_close self._pages[self._current_page].on_next() File "/usr/lib64/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 14615, in __getattr__ raise PyDeadObjectError(self.attrStr % self._name) wx._core.PyDeadObjectError: The C++ part of the Uf_page object has been deleted, attribute access no longer allowed. ........ r27451 | bugman | 2015-02-03 10:26:56 +0100 (Tue, 03 Feb 2015) | 6 lines Simplification of the Dead_uf_pages.test_mol_create GUI test. The RelaxError cannot be caught from the GUI user function window, therefore the try statement has been eliminated. ........ r27452 | bugman | 2015-02-03 10:48:10 +0100 (Tue, 03 Feb 2015) | 6 lines More memory saving improvements for the GUI test suite tearDown() method. The clean_up_windows() method now loops through all top level windows (frames, dialogs, panels, etc.) and calls their Destroy() method. ........ r27453 | bugman | 2015-02-03 12:11:34 +0100 (Tue, 03 Feb 2015) | 5 lines Created the gui.uf_objects.Uf_object.Destroy() method. This will be used to cleanly destroy the user function object. ........ r27454 | bugman | 2015-02-03 12:17:11 +0100 (Tue, 03 Feb 2015) | 6 lines Modified the GUI test suite _execute_uf() method. This user function execution method now calls the user function GUI object Destroy() method to clean up all GUI objects. This should save memory for GUI objects in the GUI test suite. ........ r27455 | bugman | 2015-02-03 12:20:51 +0100 (Tue, 03 Feb 2015) | 7 lines Modified the GUI test suite tearDown() method. The clean_up_windows() method called by tearDown() now prints out a lost of all of the living windows instead of trying to destroy them (which causes the running of the GUI tests in the GUI to cause the GUI to be destroyed). The printouts will be used for debugging purposes. ........ r27456 | bugman | 2015-02-03 12:22:00 +0100 (Tue, 03 Feb 2015) | 3 lines Import fix and copyright update. ........ r27457 | bugman | 2015-02-03 12:25:11 +0100 (Tue, 03 Feb 2015) | 7 lines Fixes for the custom Wiz_window.Destroy() method. This will now first close the wizard window via the Close() method to make sure all of the wizard pages are properly updated. In the end the wizard DestroyChildren() method is called to clean up all child wx objects, and finally Destroy() is called to eliminate the wizard GUI object. ........ r27458 | bugman | 2015-02-03 12:28:05 +0100 (Tue, 03 Feb 2015) | 5 lines The GUI test suite tearDown() method now calls the user function GUI wizard Destroy() method. This is for better handling of user function elimination. ........ r27459 | bugman | 2015-02-03 12:29:02 +0100 (Tue, 03 Feb 2015) | 6 lines Fixes for the user function GUI object Destroy() method. This matches the code just deleted in the GUI test suite tearDown() method for handing the user function page object. ........ r27460 | bugman | 2015-02-03 12:31:23 +0100 (Tue, 03 Feb 2015) | 6 lines More fixes for the user function GUI object Destroy() method. This page GUI object is destroyed by the wizard window Destroy() method, so destroying again causes wxPython runtime errors. ........ r27461 | bugman | 2015-02-03 12:37:10 +0100 (Tue, 03 Feb 2015) | 5 lines Spacing printout for the list of still open GUI window elements. This is for the GUI test tearDown() method. ........ r27462 | bugman | 2015-02-03 14:11:32 +0100 (Tue, 03 Feb 2015) | 6 lines Shifted the printouts from the GUI tests suite clean_up_windows() method to the tearDown() method. This change means that the printouts are not within a wx.CallAfter() call, but rather at the end of the tearDown() method just prior to starting the next test. ........ r27463 | bugman | 2015-02-03 14:51:32 +0100 (Tue, 03 Feb 2015) | 8 lines Simplification of the GUI analysis post_reset() method. This now uses the delete_all() and hence delete_analysis() methods to clean up the GUI. The reset argument has been added to skip the manipulation of relax data store data, as the data store is empty after a reset. However the calling of the delete_analysis() method now ensures that the analysis specific delete() method is now called so that the GUI elements can be properly destroyed. ........ r27464 | bugman | 2015-02-03 14:56:21 +0100 (Tue, 03 Feb 2015) | 6 lines Proper destruction of the peak analysis wizard of the NOE GUI analysis. The peak wizard's Destroy() method is now called and the self.peak_wizard object deleted in the NOE GUI analysis delete() method. ........ r27465 | bugman | 2015-02-03 14:58:20 +0100 (Tue, 03 Feb 2015) | 7 lines Improved memory management in the NOE GUI analysis peak_wizard_launch() method. This method was just overwriting the self.peak_wizard object with a new object. However this does not destroy the wxPython window. Now if a peak wizard is detected, its Destroy() method is called before overwriting the object. ........ r27466 | bugman | 2015-02-03 15:02:41 +0100 (Tue, 03 Feb 2015) | 7 lines Improved GUI clean up when terminating GUI tests. The clean_up_windows() method, called from tearDown(), now also destroys the pipe editor window, the results viewer window, and the prompt window. This ensures that all of the major relax windows are destroyed between GUI tests. ........ r27467 | bugman | 2015-02-03 15:09:16 +0100 (Tue, 03 Feb 2015) | 8 lines Improved memory management in the relaxation curve-fitting GUI analysis. The peak intensity loading wizard is now properly destroyed. This is both via the delete() function for terminating the analysis calling the wizard Delete() method, and in the peak_wizard_launch() method calling the wizard Delete() method prior to overwriting the self.peak_wizard object with a new GUI wizard. ........ r27468 | bugman | 2015-02-03 15:12:29 +0100 (Tue, 03 Feb 2015) | 3 lines Copyright update to 2015. ........ r27469 | bugman | 2015-02-03 15:16:17 +0100 (Tue, 03 Feb 2015) | 8 lines Improved memory management in the model-free GUI analysis. The dipole-dipole interaction wizard is now properly destroyed. This is both via the delete() function for terminating the analysis calling the wizard Delete() method, and in the setup_dipole_pair() method calling the wizard Delete() method prior to overwriting the self.dipole_wizard object with a new GUI wizard. ........ r27470 | bugman | 2015-02-03 15:23:32 +0100 (Tue, 03 Feb 2015) | 6 lines Improved memory management in the model-free GUI analysis. The analysis mode selection window (a wx.Dialog) is now being destroyed in the analysis delete() method. This appears to work on Linux, Windows, and Mac systems. ........ r27471 | bugman | 2015-02-03 15:27:54 +0100 (Tue, 03 Feb 2015) | 5 lines Improved memory management in the model-free GUI analysis. The local tm and model-free model windows are now destroyed in the GUI analysis delete() method. ........ r27472 | bugman | 2015-02-03 15:38:48 +0100 (Tue, 03 Feb 2015) | 7 lines Improved termination of the GUI tests. The clean_up_windows() method now calls the results viewer and pipe editor window handler_close() methods. This ensures that all observer objects are cleared out so that the methods of the dead windows can no longer be called. ........ r27473 | bugman | 2015-02-03 15:44:55 +0100 (Tue, 03 Feb 2015) | 6 lines Fix for the previous commit (r27472). Calls to wx.Yield() are required to flush the calls on the observer objects after unregisteristing them and deleting the results and pipe editor windows. ........ r27474 | bugman | 2015-02-03 15:47:46 +0100 (Tue, 03 Feb 2015) | 8 lines Improved memory management in the relaxation dispersion GUI analysis. The peak intensity loading wizard is now properly destroyed. This is both via the delete() function for terminating the analysis calling the wizard Delete() method, and in the peak_wizard_launch() method calling the wizard Delete() method prior to overwriting the self.peak_wizard object with a new GUI wizard. ........ r27475 | bugman | 2015-02-03 15:54:42 +0100 (Tue, 03 Feb 2015) | 3 lines Created custom Destroy() methods for the pipe editor and results viewer GUI windows. ........ r27476 | bugman | 2015-02-03 15:57:54 +0100 (Tue, 03 Feb 2015) | 5 lines Improved memory management in the relaxation dispersion GUI analysis. The dispersion model list window is now destroyed in the GUI analysis delete() method. ........ r27477 | bugman | 2015-02-03 16:01:46 +0100 (Tue, 03 Feb 2015) | 6 lines Fixes for the custom Destroy() methods for the pipe editor and results viewer GUI windows. The event argument is now a keyword argument which defaults to None. This allows the Destroy() methods to be called without arguments. ........ r27478 | bugman | 2015-02-03 16:13:34 +0100 (Tue, 03 Feb 2015) | 5 lines Temporary disablement of the results viewer window destruction in the GUI tests. This currently, for some unknown reason, causes segfault crashes of the GUI tests on Linux systems. ........ r27479 | bugman | 2015-02-03 16:30:52 +0100 (Tue, 03 Feb 2015) | 9 lines Changes for how the main GUI windows are destroyed by the GUI test tearDown() method. These changes revert some of the code of previous commits. The recently introduced pipe editor and results viewer windows Delete() methods have been deleted. Instead the Close() methods are called in the tearDown() method to unregister the windows from the observer objects, followed by a wx.Yield() call to flush the wx events, and then the clean_up_windows() GUI test base method is called within a wx.CallAfter() call. This avoids the racing induced segfaults in the GUI tests. ........ r27480 | bugman | 2015-02-03 16:38:38 +0100 (Tue, 03 Feb 2015) | 6 lines Improved memory management in the spin viewer window. The spin loading wizard is now destroyed in the Destroy() method as well as before reinitialising the wizard in the load_spins_wizard() method. ........ r27481 | bugman | 2015-02-03 16:44:21 +0100 (Tue, 03 Feb 2015) | 5 lines Wizard window objects in the GUI can now be named. This will help with debugging the GUI memory usage. ........ r27482 | bugman | 2015-02-03 16:45:30 +0100 (Tue, 03 Feb 2015) | 3 lines The GUI tests tearDown() method now prints out the Wizard windows names, if not destroyed. ........ r27483 | bugman | 2015-02-03 16:49:08 +0100 (Tue, 03 Feb 2015) | 3 lines The GUI tests tearDown() method now prints out the Wizard windows title instead of name. ........ r27484 | bugman | 2015-02-03 16:50:56 +0100 (Tue, 03 Feb 2015) | 16 lines Reverted r27481, the naming of Wizard windows. Names are not necessary they already have titles. The command used was: svn merge -r27481:r27480 . ..... r27481 | bugman | 2015-02-03 16:44:21 +0100 (Tue, 03 Feb 2015) | 5 lines Changed paths: M /trunk/gui/wizards/wiz_objects.py Wizard window objects in the GUI can now be named. This will help with debugging the GUI memory usage. ..... ........ r27485 | bugman | 2015-02-03 16:52:20 +0100 (Tue, 03 Feb 2015) | 3 lines The Wizard window title is now being stored as a class instance variable. ........ r27486 | bugman | 2015-02-03 17:00:00 +0100 (Tue, 03 Feb 2015) | 7 lines Improved memory management in the relaxation data list GUI element, as well as the base list object. The relaxation data loading wizard is now destroyed in the Base_list.delete() method, or any wizard for that matter. In addition, the relaxation data loading wizard is destroyed before reinitialising the wizard in the wizard_exec() method. ........ r27487 | bugman | 2015-02-03 17:10:33 +0100 (Tue, 03 Feb 2015) | 7 lines Better memory management for the missing data dialog in the GUI analyses. The dialog is now stored as the class variable missing_data, and then is destroyed in the analysis delete() method. Without this, the wxPython dialog would remain in memory for the lifetime of the program. ........ r27488 | bugman | 2015-02-03 17:20:14 +0100 (Tue, 03 Feb 2015) | 6 lines Improved memory management for the Sequence and Sequence_2D input GUI elements. These are mainly used in the user function GUI windows. The dialogs are now destroyed before a second is opened. ........ r27489 | bugman | 2015-02-03 17:29:32 +0100 (Tue, 03 Feb 2015) | 6 lines Improved memory management for the GUI user function windows. The Destroy() method will now destroy any Sequence or Sequence_2D windows used for the user function arguments. ........ r27490 | bugman | 2015-02-03 17:37:24 +0100 (Tue, 03 Feb 2015) | 6 lines The relax prompt window is now being destroyed by the GUI test suite tearDown() method. The window is first closed in the tearDown() method and then destroyed in the clean_up_windows() method. ........ r27491 | bugman | 2015-02-03 17:58:51 +0100 (Tue, 03 Feb 2015) | 7 lines Added memory management checking to the GUI test suite tearDown() method. If any top level windows are present, excluding the main GUI window and the relax controller, then a RelaxError will be raised. Such a check will significantly help in future GUI coding, as now there will be feedback if not all windows are properly destroyed. ........ r27492 | bugman | 2015-02-03 18:09:35 +0100 (Tue, 03 Feb 2015) | 6 lines Popup menus are now properly destroyed in the GUI tests. [... 196 lines stripped ...]