[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