mailr15749 - in /1.3/gui: analyses/ components/


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

Header


Content

Posted by edward on April 17, 2012 - 14:35:
Author: bugman
Date: Tue Apr 17 14:35:13 2012
New Revision: 15749

URL: http://svn.gna.org/viewcvs/relax?rev=15749&view=rev
Log:
Big bug fix for the deletion of analyses tabs from the GUI!

This affects wxGTK users on Macs and Linux.  Now the spectrum and relaxation 
data list GUI elements
have observer_register() methods, allowing the analysis delete_all() method 
to unregister all
analysis specific methods from the observer objects.  This prevents queued wx 
calls to be made on
dead or non-existent GUI objects after the analysis has been deleted.  
wx.Yield() calls were not
sufficient to solve this issue.


Modified:
    1.3/gui/analyses/auto_model_free.py
    1.3/gui/analyses/auto_noe.py
    1.3/gui/analyses/auto_rx_base.py
    1.3/gui/components/relax_data.py
    1.3/gui/components/spectrum.py

Modified: 1.3/gui/analyses/auto_model_free.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/gui/analyses/auto_model_free.py?rev=15749&r1=15748&r2=15749&view=diff
==============================================================================
--- 1.3/gui/analyses/auto_model_free.py (original)
+++ 1.3/gui/analyses/auto_model_free.py Tue Apr 17 14:35:13 2012
@@ -629,8 +629,12 @@
 
         # Unregister.
         else:
+            # The model-free methods.
             status.observers.gui_uf.unregister(self.data.pipe_name)
             status.observers.exec_lock.unregister(self.data.pipe_name)
+
+            # The embedded objects methods.
+            self.relax_data.observer_register(remove=True)
 
 
     def results_directory(self, event):

Modified: 1.3/gui/analyses/auto_noe.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/gui/analyses/auto_noe.py?rev=15749&r1=15748&r2=15749&view=diff
==============================================================================
--- 1.3/gui/analyses/auto_noe.py (original)
+++ 1.3/gui/analyses/auto_noe.py Tue Apr 17 14:35:13 2012
@@ -281,8 +281,12 @@
 
         # Unregister.
         else:
+            # The model-free methods.
             status.observers.gui_uf.unregister(self.data.pipe_name)
             status.observers.exec_lock.unregister(self.data.pipe_name)
+
+            # The embedded objects methods.
+            self.peak_intensity.observer_register(remove=True)
 
 
     def peak_wizard(self, event):

Modified: 1.3/gui/analyses/auto_rx_base.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/gui/analyses/auto_rx_base.py?rev=15749&r1=15748&r2=15749&view=diff
==============================================================================
--- 1.3/gui/analyses/auto_rx_base.py (original)
+++ 1.3/gui/analyses/auto_rx_base.py Tue Apr 17 14:35:13 2012
@@ -297,8 +297,12 @@
 
         # Unregister.
         else:
+            # The model-free methods.
             status.observers.gui_uf.unregister(self.data.pipe_name)
             status.observers.exec_lock.unregister(self.data.pipe_name)
+
+            # The embedded objects methods.
+            self.peak_intensity.observer_register(remove=True)
 
 
     def peak_wizard(self, event):

Modified: 1.3/gui/components/relax_data.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/gui/components/relax_data.py?rev=15749&r1=15748&r2=15749&view=diff
==============================================================================
--- 1.3/gui/components/relax_data.py (original)
+++ 1.3/gui/components/relax_data.py Tue Apr 17 14:35:13 2012
@@ -1,7 +1,7 @@
 
###############################################################################
 #                                                                            
 #
 # Copyright (C) 2009-2011 Michael Bieri                                      
 #
-# Copyright (C) 2010-2011 Edward d'Auvergne                                  
 #
+# Copyright (C) 2010-2012 Edward d'Auvergne                                  
 #
 #                                                                            
 #
 # This file is part of the program relax.                                    
 #
 #                                                                            
 #
@@ -102,7 +102,7 @@
         self.name = 'relaxation data list: %s' % id
 
         # Register the element for updating when a user function completes.
-        status.observers.gui_uf.register(self.name, self.build_element)
+        self.observer_register()
 
 
     def Enable(self, enable=True):
@@ -207,8 +207,8 @@
     def delete(self):
         """Unregister the class."""
 
-        # Unregister the class.
-        status.observers.gui_uf.unregister(self.name)
+        # Unregister the observer methods.
+        self.observer_register(remove=True)
 
 
     def init_element(self, sizer):
@@ -239,6 +239,22 @@
 
         # Add list to sizer.
         sizer.Add(self.element, 0, wx.ALL|wx.EXPAND, 0)
+
+
+    def observer_register(self, remove=False):
+        """Register and unregister methods with the observer objects.
+
+        @keyword remove:    If set to True, then the methods will be 
unregistered.
+        @type remove:       False
+        """
+
+        # Register.
+        if not remove:
+            status.observers.gui_uf.register(self.name, self.build_element)
+
+        # Unregister.
+        else:
+            status.observers.gui_uf.unregister(self.name)
 
 
     def on_right_click(self, event):

Modified: 1.3/gui/components/spectrum.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/gui/components/spectrum.py?rev=15749&r1=15748&r2=15749&view=diff
==============================================================================
--- 1.3/gui/components/spectrum.py (original)
+++ 1.3/gui/components/spectrum.py Tue Apr 17 14:35:13 2012
@@ -1,7 +1,7 @@
 
###############################################################################
 #                                                                            
 #
 # Copyright (C) 2009-2011 Michael Bieri                                      
 #
-# Copyright (C) 2010-2011 Edward d'Auvergne                                  
 #
+# Copyright (C) 2010-2012 Edward d'Auvergne                                  
 #
 #                                                                            
 #
 # This file is part of the program relax.                                    
 #
 #                                                                            
 #
@@ -106,7 +106,7 @@
         self.name = 'spectra list: %s' % id
 
         # Register the element for updating when a user function completes.
-        status.observers.gui_uf.register(self.name, self.build_element)
+        self.observer_register()
 
 
     def Enable(self, enable=True):
@@ -242,8 +242,8 @@
     def delete(self):
         """Unregister the class."""
 
-        # Unregister the class.
-        status.observers.gui_uf.unregister(self.name)
+        # Unregister the observer methods.
+        self.observer_register(remove=True)
 
 
     def init_element(self, sizer):
@@ -269,6 +269,22 @@
 
         # Add list to sizer.
         sizer.Add(self.element, 0, wx.ALL|wx.EXPAND, 0)
+
+
+    def observer_register(self, remove=False):
+        """Register and unregister methods with the observer objects.
+
+        @keyword remove:    If set to True, then the methods will be 
unregistered.
+        @type remove:       False
+        """
+
+        # Register.
+        if not remove:
+            status.observers.gui_uf.register(self.name, self.build_element)
+
+        # Unregister.
+        else:
+            status.observers.gui_uf.unregister(self.name)
 
 
     def on_right_click(self, event):




Related Messages


Powered by MHonArc, Updated Tue Apr 17 15:40:01 2012