mailr27463 - /trunk/gui/analyses/__init__.py


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

Header


Content

Posted by edward on February 03, 2015 - 14:51:
Author: bugman
Date: Tue Feb  3 14:51:32 2015
New Revision: 27463

URL: http://svn.gna.org/viewcvs/relax?rev=27463&view=rev
Log:
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.


Modified:
    trunk/gui/analyses/__init__.py

Modified: trunk/gui/analyses/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/gui/analyses/__init__.py?rev=27463&r1=27462&r2=27463&view=diff
==============================================================================
--- trunk/gui/analyses/__init__.py      (original)
+++ trunk/gui/analyses/__init__.py      Tue Feb  3 14:51:32 2015
@@ -170,7 +170,7 @@
         return ds.relax_gui.analyses[self._current].analysis_type
 
 
-    def delete_all(self):
+    def delete_all(self, reset=False):
         """Remove all analyses."""
 
         # Debugging set up.
@@ -196,7 +196,7 @@
             # Remove the last analysis, until there is nothing left.
             if status.debug:
                 print("debug> %s:  Deleting the analysis at index %s." % 
(full_name, self._num_analyses-1))
-            self.delete_analysis(self._num_analyses-1)
+            self.delete_analysis(self._num_analyses-1, reset=reset)
 
         # Notify the observers of the change.
         if status.debug:
@@ -204,7 +204,7 @@
         status.observers.gui_analysis.notify()
 
 
-    def delete_analysis(self, index):
+    def delete_analysis(self, index, reset=False):
         """Delete the analysis tab and data store corresponding to the index.
 
         The order of these operations is very important due to the 
notification of observer objects and the updates, synchronisations, etc. that 
follow.  If the program debugging mode is on, then printouts at each stage 
will occur to allow the following of the code and observer object 
notifications.
@@ -249,20 +249,22 @@
             print("debug> %s:  Deleting the analysis GUI object." % 
full_name)
         self._analyses.pop(index)
 
-        # Store the pipe bundle.
-        pipe_bundle = ds.relax_gui.analyses[index].pipe_bundle
-
-        # Delete the data store object.
-        if status.debug:
-            print("debug> %s:  Deleting the data store object." % full_name)
-        ds.relax_gui.analyses.pop(index)
-
-        # Delete all data pipes associated with the analysis.
-        for pipe in pipes.pipe_names():
-            if pipes.get_bundle(pipe) == pipe_bundle:
-                if status.debug:
-                    print("debug> %s:  Deleting the data pipe '%s' from the 
'%s' bundle." % (full_name, pipe, pipe_bundle))
-                pipes.delete(pipe)
+        # Data store clean up.
+        if not reset:
+            # Store the pipe bundle.
+            pipe_bundle = ds.relax_gui.analyses[index].pipe_bundle
+
+            # Delete the data store object.
+            if status.debug:
+                print("debug> %s:  Deleting the data store object." % 
full_name)
+            ds.relax_gui.analyses.pop(index)
+
+            # Delete all data pipes associated with the analysis.
+            for pipe in pipes.pipe_names():
+                if pipes.get_bundle(pipe) == pipe_bundle:
+                    if status.debug:
+                        print("debug> %s:  Deleting the data pipe '%s' from 
the '%s' bundle." % (full_name, pipe, pipe_bundle))
+                    pipes.delete(pipe)
 
         # No more analyses, so in the initial state.
         if self._num_analyses == 0:
@@ -692,38 +694,8 @@
     def post_reset(self):
         """Post relax data store reset event handler."""
 
-        # Debugging set up.
-        if status.debug:
-            fn_name = sys._getframe().f_code.co_name
-            mod_name = inspect.getmodule(inspect.stack()[1][0]).__name__
-            class_name = self.__class__.__name__
-            full_name = "%s.%s.%s" % (mod_name, class_name, fn_name)
-            print("\n\n")
-            print("debug> %s:  Deleting all analyses." % full_name)
-
-        # Unregister all observer objects prior to analysis deletion.  This 
is to prevent queued wx events being sent to dead or non-existent objects.
-        if status.debug:
-            print("debug> %s:  Unregistering all methods with the observer 
objects." % full_name)
-        for i in range(self._num_analyses):
-            self._analyses[i].observer_register(remove=True)
-
-        # Delete all tabs.
-        while self._num_analyses:
-            # The index of the tab to remove.
-            index = self._num_analyses - 1
-
-            # Delete the tab.
-            if hasattr(self, 'notebook'):
-                self.notebook.DeletePage(index)
-
-            # Delete the tab object.
-            self._analyses.pop(index)
-
-            # Decrement the number of analyses.
-            self._num_analyses -= 1
-
-        # Set the initial state.
-        self.set_init_state()
+        # Defer to the delete_all() method.
+        self.delete_all(reset=True)
 
 
     def set_init_state(self):




Related Messages


Powered by MHonArc, Updated Tue Feb 03 15:00:02 2015