summaryrefslogtreecommitdiffstats
path: root/pyanaconda/ui/__init__.py
diff options
context:
space:
mode:
authorMartin Sivak <msivak@redhat.com>2012-09-18 16:14:43 +0200
committerMartin Sivak <msivak@redhat.com>2012-12-17 14:36:12 +0100
commitb8e21a632705e1c53d7b44bc99c6800e89e148fe (patch)
tree1c1fd491140faa5d0c51ca8ff491e9e45c3f63a1 /pyanaconda/ui/__init__.py
parentf0c5089920a168d6f486734142915d79461c6c0c (diff)
downloadanaconda-b8e21a632705e1c53d7b44bc99c6800e89e148fe.tar.gz
anaconda-b8e21a632705e1c53d7b44bc99c6800e89e148fe.tar.xz
anaconda-b8e21a632705e1c53d7b44bc99c6800e89e148fe.zip
Make GUI more reusable and support multiple directories for spokes and categories
Diffstat (limited to 'pyanaconda/ui/__init__.py')
-rw-r--r--pyanaconda/ui/__init__.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/pyanaconda/ui/__init__.py b/pyanaconda/ui/__init__.py
index 80d8e6f38..aabc719e6 100644
--- a/pyanaconda/ui/__init__.py
+++ b/pyanaconda/ui/__init__.py
@@ -98,13 +98,36 @@ class UserInterface(object):
"""
raise NotImplementedError
- def getActionClasses(self, module_pattern, path, hubs, standalone_class):
+ def _collectActionClasses(self, module_pattern_w_path, standalone_class):
"""Collect all the Hub and Spoke classes which should be enqueued for
- processing and order them according to their pre/post dependencies.
+ processing.
- :param module_pattern: the full name pattern (pyanaconda.ui.gui.spokes.%s)
- of modules we about to import from path
- :type module_pattern: string
+ :param module_pattern_w_path: the full name patterns (pyanaconda.ui.gui.spokes.%s)
+ and directory paths to modules we are about to import
+ :type module_pattern_w_path: list of (string, string)
+
+ :param standalone_class: the parent type of Spokes we want to pick up
+ :type standalone_class: common.StandaloneSpoke based types
+
+ :return: list of Spoke classes with standalone_class as a parent
+ :rtype: list of Spoke classes
+
+ """
+ standalones = []
+
+ for module_pattern, path in module_pattern_w_path:
+ standalones.extend(collect(module_pattern, path, lambda obj: issubclass(obj, standalone_class) and \
+ getattr(obj, "preForHub", False) or getattr(obj, "postForHub", False)))
+
+ return standalones
+
+ def _orderActionClasses(self, spokes, hubs, standalone_class):
+ """Order all the Hub and Spoke classes which should be enqueued for
+ processing according to their pre/post dependencies.
+
+ :param spokes: the classes we are to about order according
+ to the hub dependencies
+ :type spokes: list of Spoke instances
:param path: the directory we are picking up modules from
:type path: string
@@ -117,16 +140,12 @@ class UserInterface(object):
:type standalone_class: common.StandaloneSpoke based types
"""
-
- standalones = collect(module_pattern, path, lambda obj: issubclass(obj, standalone_class) and \
- getattr(obj, "preForHub", False) or getattr(obj, "postForHub", False))
-
actionClasses = []
for hub in hubs:
- actionClasses.extend(sorted(filter(lambda obj: getattr(obj, "preForHub", None) == hub, standalones),
+ actionClasses.extend(sorted(filter(lambda obj: getattr(obj, "preForHub", None) == hub, spokes),
key=lambda obj: obj.priority))
actionClasses.append(hub)
- actionClasses.extend(sorted(filter(lambda obj: getattr(obj, "postForHub", None) == hub, standalones),
+ actionClasses.extend(sorted(filter(lambda obj: getattr(obj, "postForHub", None) == hub, spokes),
key=lambda obj: obj.priority))
return actionClasses