--- pyanaconda/ui/tui/hubs/__init__.py | 2 +- pyanaconda/ui/tui/spokes/__init__.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/pyanaconda/ui/tui/hubs/__init__.py b/pyanaconda/ui/tui/hubs/__init__.py index b7dade1..0f505f7 100644 --- a/pyanaconda/ui/tui/hubs/__init__.py +++ b/pyanaconda/ui/tui/hubs/__init__.py @@ -52,7 +52,7 @@ class TUIHub(TUIObject, common.Hub):
# look for spokes having category present in self.categories for c in self.categories: - spokes = collect_spokes(c) + spokes = collect_spokes([("pyanaconda.ui.tui.spokes.%s", os.path.join(os.path.dirname(__file__), "spokes"))], c)
# sort them according to their priority for s in sorted(spokes, key = lambda s: s.priority): diff --git a/pyanaconda/ui/tui/spokes/__init__.py b/pyanaconda/ui/tui/spokes/__init__.py index a51a19e..1abe008 100644 --- a/pyanaconda/ui/tui/spokes/__init__.py +++ b/pyanaconda/ui/tui/spokes/__init__.py @@ -81,13 +81,21 @@ class NormalTUISpoke(TUISpoke, NormalSpoke): class PersonalizationTUISpoke(TUISpoke, PersonalizationSpoke): pass
-def collect_spokes(category): +def collect_spokes(mask_paths, category): """Return a list of all spoke subclasses that should appear for a given category. """ - return collect("pyanaconda.ui.tui.spokes.%s", os.path.dirname(__file__), lambda obj: hasattr(obj, "category") and obj.category != None and obj.category == category) - -def collect_categories(): - classes = collect("pyanaconda.ui.tui.spokes.%s", os.path.dirname(__file__), lambda obj: hasattr(obj, "category") and obj.category != None and obj.category != "") + spokes = [] + for mask, path in mask_paths: + spokes.extend(collect(mask, path, lambda obj: hasattr(obj, "category") and obj.category != None and obj.category == category)) + + return spokes + +def collect_categories(mask_paths): + classes = [] + for mask, path in mask_paths: + classes.extend(collect(mask, path, lambda obj: hasattr(obj, "category") and obj.category != None and obj.category != "")) + categories = set([c.category for c in classes]) return categories +