[PATCH] Log entering/exiting spokes and hubs in the GUI.

Chris Lumens clumens at redhat.com
Wed Oct 16 17:08:41 UTC 2013


---
 pyanaconda/ui/common.py            | 43 +++++++++++++++++++++++++++++++++++++-
 pyanaconda/ui/gui/__init__.py      |  5 +++++
 pyanaconda/ui/gui/hubs/__init__.py |  4 ++++
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/pyanaconda/ui/common.py b/pyanaconda/ui/common.py
index 1e6e2e7..dfff1f6 100644
--- a/pyanaconda/ui/common.py
+++ b/pyanaconda/ui/common.py
@@ -329,6 +329,22 @@ class Spoke(UIObject):
         """
         raise NotImplementedError
 
+    def entry_logger(self):
+        """Log immediately before this spoke is about to be displayed on the
+           screen.  Subclasses may override this method if they want to log
+           more specific information, but an overridden method should finish
+           by calling this method so the entry will be logged.
+        """
+        log.debug("Entered spoke: %s", self.__class__.__name__)
+
+    def exit_logger(self):
+        """Log when a user leaves the spoke.  Subclasses may override this
+           method if they want to log more specific information, but an
+           overridden method should finish by calling this method so the
+           exit will be logged.
+        """
+        log.debug("Left spoke: %s", self.__class__.__name__)
+
 class NormalSpoke(Spoke):
     """A NormalSpoke is a Spoke subclass that is displayed when the user
        selects something on a Hub.  This is what most Spokes in anaconda will
@@ -493,7 +509,32 @@ class Hub(UIObject):
         """Update the paths attribute with list of tuples in the form (module
            name format string, directory name)"""
         self.paths[path_id] = paths
-        
+
+    def entry_logger(self):
+        """Log immediately before this hub is about to be displayed on the
+           screen.  Subclasses may override this method if they want to log
+           more specific information, but an overridden method should finish
+           by calling this method so the entry will be logged.
+
+           Note that due to how the GUI flows, hubs are only entered once -
+           when they are initially displayed.  Going to a spoke from a hub
+           and then coming back to the hub does not count as exiting and
+           entering.
+        """
+        log.debug("Entered hub: %s", self.__class__.__name__)
+
+    def exit_logger(self):
+        """Log when a user leaves the hub.  Subclasses may override this
+           method if they want to log more specific information, but an
+           overridden method should finish by calling this method so the
+           exit will be logged.
+
+           Note that due to how the GUI flows, hubs are not exited when the
+           user selects a spoke from the hub.  They are only exited when the
+           continue or quit button is clicked on the hub.
+        """
+        log.debug("Left hub: %s", self.__class__.__name__)
+
 def collect(module_pattern, path, pred):
     """Traverse the directory (given by path), import all files as a module
        module_pattern % filename and find all classes within that match
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py
index 44d7d90..52161ff 100644
--- a/pyanaconda/ui/gui/__init__.py
+++ b/pyanaconda/ui/gui/__init__.py
@@ -621,6 +621,7 @@ class GraphicalUserInterface(UserInterface):
                 return
 
         self._currentAction.initialize()
+        self._currentAction.entry_logger()
         self._currentAction.refresh()
 
         self._currentAction.window.set_beta(not self._isFinal)
@@ -737,6 +738,9 @@ class GraphicalUserInterface(UserInterface):
             self._on_continue_clicked()
             return
 
+        self._currentAction.exit_logger()
+        nextAction.entry_logger()
+
         nextAction.refresh()
 
         # Do this last.  Setting up curAction could take a while, and we want
@@ -753,6 +757,7 @@ class GraphicalUserInterface(UserInterface):
             dialog.window.destroy()
 
         if rc == 1:
+            self._currentAction.exit_logger()
             sys.exit(0)
 
 class GraphicalExceptionHandlingIface(meh.ui.gui.GraphicalIntf):
diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py
index f142a18..e084d6d 100644
--- a/pyanaconda/ui/gui/hubs/__init__.py
+++ b/pyanaconda/ui/gui/hubs/__init__.py
@@ -105,6 +105,8 @@ class Hub(GUIObject, common.Hub):
         action.window.maximize()
         action.window.set_property("expand", True)
 
+        action.entry_logger()
+
         action.refresh()
 
         action.window.set_beta(self.window.get_beta())
@@ -129,6 +131,8 @@ class Hub(GUIObject, common.Hub):
             action.execute()
             action._visitedSinceApplied = False
 
+        action.exit_logger()
+
     def _collectCategoriesAndSpokes(self):
         """collects categories and spokes to be displayed on this Hub
 
-- 
1.8.3.1



More information about the anaconda-patches mailing list