[PATCH] Split __init__ and setup in TUI screens so we can set the environment and search paths

Martin Sivak msivak at redhat.com
Thu Jan 17 13:14:33 UTC 2013


---
 pyanaconda/ui/tui/__init__.py        | 10 +++++++---
 pyanaconda/ui/tui/hubs/__init__.py   |  7 ++++---
 pyanaconda/ui/tui/simpleline/base.py |  8 ++++++++
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/pyanaconda/ui/tui/__init__.py b/pyanaconda/ui/tui/__init__.py
index ba6d5b8..c8212b6 100644
--- a/pyanaconda/ui/tui/__init__.py
+++ b/pyanaconda/ui/tui/__init__.py
@@ -112,6 +112,8 @@ class YesNoDialog(tui.UIScreen):
 class TextUserInterface(ui.UserInterface):
     """This is the main class for Text user interface."""
 
+    ENVIRONMENT = "anaconda"
+
     def __init__(self, storage, payload, instclass):
         """
         For detailed description of the arguments see
@@ -145,7 +147,7 @@ class TextUserInterface(ui.UserInterface):
                       os.path.join(path, "hubs"))
                       for path in pathlist]
             }
-    
+
     def _list_hubs(self):
         """returns the list of hubs to use"""
         return [SummaryHub, ProgressHub]
@@ -153,7 +155,7 @@ class TextUserInterface(ui.UserInterface):
     def _is_standalone(self, spoke):
         """checks if the passed spoke is standalone"""
         return isinstance(spoke, StandaloneSpoke)
-    
+
     def setup(self, data):
         """Construct all the objects required to implement this interface.
            This method must be provided by all subclasses.
@@ -165,7 +167,7 @@ class TextUserInterface(ui.UserInterface):
         path = os.path.join(os.path.dirname(__file__), "spokes")
         spokes = self._collectActionClasses(self.paths["spokes"], StandaloneSpoke)
         actionClasses = self._orderActionClasses(spokes, _hubs)
-        
+
         for klass in actionClasses:
             obj = klass(self._app, data, self.storage, self.payload, self.instclass)
 
@@ -179,6 +181,8 @@ class TextUserInterface(ui.UserInterface):
             if hasattr(obj, "set_path"):
                 obj.set_path("spokes", self.paths["spokes"])
 
+            obj.setup(self.ENVIRONMENT)
+
             self._app.schedule_screen(obj)
 
     def run(self):
diff --git a/pyanaconda/ui/tui/hubs/__init__.py b/pyanaconda/ui/tui/hubs/__init__.py
index 7d16ff3..73e3e62 100644
--- a/pyanaconda/ui/tui/hubs/__init__.py
+++ b/pyanaconda/ui/tui/hubs/__init__.py
@@ -50,6 +50,7 @@ class TUIHub(TUIObject, common.Hub):
         self._keys = {}       # holds spokes referenced by their user input key
         self._spoke_count = 0
 
+    def setup(self, environment = "anaconda"):
         # look for spokes having category present in self.categories
         for c in self.categories:
             spokes = collect_spokes(self.paths["spokes"], c)
@@ -57,10 +58,10 @@ class TUIHub(TUIObject, common.Hub):
             # sort them according to their priority
             for s in sorted(spokes, key = lambda s: s.priority):
                 # Check if this spoke is to be shown in anaconda
-                if not s.should_run("anaconda", self.data):
+                if not s.should_run(environment, self.data):
                     continue
-                
-                spoke = s(app, data, storage, payload, instclass)
+
+                spoke = s(self.app, self.data, self.storage, self.payload, self.instclass)
                 spoke.initialize()
 
                 if not spoke.showable:
diff --git a/pyanaconda/ui/tui/simpleline/base.py b/pyanaconda/ui/tui/simpleline/base.py
index 97a8c81..e3039d2 100644
--- a/pyanaconda/ui/tui/simpleline/base.py
+++ b/pyanaconda/ui/tui/simpleline/base.py
@@ -344,6 +344,14 @@ class UIScreen(object):
         # list that holds the content to be printed out
         self._window = []
 
+        # index of the page (subset of screen) shown during show_all
+        # indexing starts with 0
+        self._page = 0
+
+    def setup(self, environment):
+        """Do additional setup right before this screen is used."""
+        pass
+
     def refresh(self, args = None):
         """Method which prepares the content desired on the screen to self._window.
 
-- 
1.7.11.7



More information about the anaconda-patches mailing list