On Fri, 2014-05-02 at 16:56 +0200, Martin Kolman wrote:
From: "Samantha N. Bueno"
<sbueno+anaconda(a)redhat.com>
This statically maintained list of spoke categories for text mode has
been bothering me for almost a year, so it's time to get rid of it.
This now more or less mirrors the GUI logic we have for handling spoke
categories. I wanted to originally make the category classes something
that could be used by both GUI and TUI to reduce duplication, but it is
not meant to be.
This also moves the collectCategoriesAndSpokes, collect_categories, and
collect_spokes functions into pyanaconda.ui.common since I could at
least consolidate that.
Signed-off-by: Martin Kolman <mkolman(a)redhat.com>
---
po/POTFILES.in | 6 ++++
pyanaconda/ui/common.py | 51 +++++++++++++++++++++++++++
pyanaconda/ui/gui/categories/__init__.py | 13 +------
pyanaconda/ui/gui/hubs/__init__.py | 21 +----------
pyanaconda/ui/gui/spokes/__init__.py | 20 +----------
pyanaconda/ui/tui/__init__.py | 4 +++
pyanaconda/ui/tui/categories/Makefile.am | 22 ++++++++++++
pyanaconda/ui/tui/categories/__init__.py | 46 ++++++++++++++++++++++++
pyanaconda/ui/tui/categories/customization.py | 32 +++++++++++++++++
pyanaconda/ui/tui/categories/localization.py | 31 ++++++++++++++++
pyanaconda/ui/tui/categories/software.py | 31 ++++++++++++++++
pyanaconda/ui/tui/categories/system.py | 32 +++++++++++++++++
pyanaconda/ui/tui/categories/user_settings.py | 32 +++++++++++++++++
pyanaconda/ui/tui/hubs/__init__.py | 22 ++++++------
pyanaconda/ui/tui/hubs/summary.py | 2 --
pyanaconda/ui/tui/spokes/__init__.py | 24 ++-----------
pyanaconda/ui/tui/spokes/askvnc.py | 2 --
pyanaconda/ui/tui/spokes/network.py | 3 +-
pyanaconda/ui/tui/spokes/password.py | 3 +-
pyanaconda/ui/tui/spokes/shell_spoke.py | 3 +-
pyanaconda/ui/tui/spokes/software.py | 3 +-
pyanaconda/ui/tui/spokes/source.py | 11 +++---
pyanaconda/ui/tui/spokes/storage.py | 7 ++--
pyanaconda/ui/tui/spokes/time_spoke.py | 3 +-
pyanaconda/ui/tui/spokes/user.py | 3 +-
25 files changed, 325 insertions(+), 102 deletions(-)
create mode 100644 pyanaconda/ui/tui/categories/Makefile.am
create mode 100644 pyanaconda/ui/tui/categories/__init__.py
create mode 100644 pyanaconda/ui/tui/categories/customization.py
create mode 100644 pyanaconda/ui/tui/categories/localization.py
create mode 100644 pyanaconda/ui/tui/categories/software.py
create mode 100644 pyanaconda/ui/tui/categories/system.py
create mode 100644 pyanaconda/ui/tui/categories/user_settings.py
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 358534c..e48469e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -62,6 +62,12 @@ pyanaconda/ui/tui/spokes/warnings.py
pyanaconda/ui/tui/spokes/progress.py
pyanaconda/ui/tui/spokes/__init__.py
pyanaconda/ui/tui/__init__.py
+pyanaconda/ui/tui/categories/__init__.py
+pyanaconda/ui/tui/categories/customization.py
+pyanaconda/ui/tui/categories/localization.py
+pyanaconda/ui/tui/categories/software.py
+pyanaconda/ui/tui/categories/system.py
+pyanaconda/ui/tui/categories/user_settings.py
# Graphical interface
pyanaconda/ui/gui/__init__.py
diff --git a/pyanaconda/ui/common.py b/pyanaconda/ui/common.py
index 9e2782d..470d4c0 100644
--- a/pyanaconda/ui/common.py
+++ b/pyanaconda/ui/common.py
@@ -524,6 +524,13 @@ class Hub(UIObject):
"""
log.debug("Entered hub: %s", self.__class__.__name__)
+ def _collectCategoriesAndSpokes(self):
+ """This method is provided so that is can be overridden in a
subclass
+ by a custom collect method.
+ One example of such usage is the Initial Setup application.
+ """
+ return collectCategoriesAndSpokes(self.paths, self.__class__)
+
def exit_logger(self):
"""Log when a user leaves the hub. Subclasses may override this
method if they want to log more specific information, but an
@@ -673,3 +680,47 @@ def collect(module_pattern, path, pred):
return retval
+def collect_spokes(mask_paths, category):
+ """Return a list of all spoke subclasses that should appear for a
given
+ category. Look for them in files imported as module_path % basename(f)
+
+ :param mask_paths: list of mask, path tuples to search for classes
+ :type mask_paths: list of (mask, path)
+
+ :return: list of Spoke classes belonging to category
+ :rtype: list of Spoke classes
+
+ """
+ spokes = []
+ for mask, path in mask_paths:
+ spokes.extend(collect(mask, path, lambda obj: hasattr(obj, "category")
and obj.category != None and obj.category.__name__ == category))
While moving this
code, please split this line into (at least) two.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic