mailr14538 - /1.3/status.py


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

Header


Content

Posted by edward on August 31, 2011 - 12:35:
Author: bugman
Date: Wed Aug 31 12:35:42 2011
New Revision: 14538

URL: http://svn.gna.org/viewcvs/relax?rev=14538&view=rev
Log:
The observer objects are now printing out execution information when in 
debugging mode.


Modified:
    1.3/status.py

Modified: 1.3/status.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/status.py?rev=14538&r1=14537&r2=14538&view=diff
==============================================================================
--- 1.3/status.py (original)
+++ 1.3/status.py Wed Aug 31 12:35:42 2011
@@ -100,25 +100,25 @@
         self.observers = Status_container()
 
         # The observer object for status changes in the auto-analyses.
-        self.observers.auto_analyses = Observer()
+        self.observers.auto_analyses = Observer('auto_analyses')
 
         # The observer object for pipe switches.
-        self.observers.pipe_alteration = Observer()
+        self.observers.pipe_alteration = Observer('pipe_alteration')
 
         # The observer object for GUI user function completion.
-        self.observers.gui_uf = Observer()
+        self.observers.gui_uf = Observer('gui_uf')
 
         # The observer object for changes to the GUI analysis tabs.
-        self.observers.gui_analysis = Observer()
+        self.observers.gui_analysis = Observer('gui_analysis')
 
         # The observer object for relax resets.
-        self.observers.reset = Observer()
+        self.observers.reset = Observer('reset')
 
         # The observer object for the execution lock.
-        self.observers.exec_lock = Observer()
+        self.observers.exec_lock = Observer('exec_lock')
 
         # The observer object for the creation of results files.
-        self.observers.result_file = Observer()
+        self.observers.result_file = Observer('result_file')
 
 
     def init_auto_analysis(self, name, type):
@@ -347,8 +347,15 @@
 class Observer(object):
     """The observer design pattern base class."""
 
-    def __init__(self):
-        """Set up the object."""
+    def __init__(self, name='unknown'):
+        """Set up the object.
+
+        @keyword name:      The special name for the observer object, used 
in debugging.
+        @type name:         str
+        """
+
+        # Store the args.
+        self._name = name
 
         # The dictionary of callback methods.
         self._callback = {}
@@ -356,12 +363,20 @@
         # The list of keys, for ordered execution.
         self._keys = []
 
+        # The status container.
+        self._status = Status()
+
 
     def notify(self):
         """Notify all observers of the state change."""
 
         # Loop over the callback methods and execute them.
         for key in self._keys:
+            # Debugging.
+            if self._status.debug:
+                sys.stderr.write('observer> Observer %s notifying %s.' % 
(self._name, key))
+
+            # Call the method.
             self._callback[key]()
 
 
@@ -378,6 +393,10 @@
         if key in self._keys:
             raise RelaxError("The observer '%s' already exists." % key)
 
+        # Debugging.
+        if self._status.debug:
+            sys.stderr.write('observer> Observer %s registering %s.' % 
(self._name, key))
+
         # Add the method to the dictionary of callbacks.
         self._callback[key] = method
 
@@ -387,6 +406,10 @@
 
     def reset(self):
         """Reset the object."""
+
+        # Debugging.
+        if self._status.debug:
+            sys.stderr.write('observer> Resetting observer %s.' % self._name)
 
         # Reinitialise the dictionary of callback methods.
         self._callback = {}
@@ -405,6 +428,10 @@
         # Does not exist.
         if key not in self._keys:
             raise RelaxError("The key '%s' does not exist." % key)
+
+        # Debugging.
+        if self._status.debug:
+            sys.stderr.write('observer> Observer %s unregistering %s.' % 
(self._name, key))
 
         # Remove the method from the dictionary of callbacks.
         self._callback.pop(key)




Related Messages


Powered by MHonArc, Updated Wed Aug 31 12:40:02 2011