diff options
author | Martin Sivak <msivak@redhat.com> | 2012-09-18 16:14:43 +0200 |
---|---|---|
committer | Martin Sivak <msivak@redhat.com> | 2012-12-17 14:36:12 +0100 |
commit | b8e21a632705e1c53d7b44bc99c6800e89e148fe (patch) | |
tree | 1c1fd491140faa5d0c51ca8ff491e9e45c3f63a1 /pyanaconda/ui/__init__.py | |
parent | f0c5089920a168d6f486734142915d79461c6c0c (diff) | |
download | anaconda-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__.py | 41 |
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 |