[PATCH 3/4] Fix up collectCategoriesAndSpokes function.

Samantha N. Bueno sbueno+anaconda at redhat.com
Wed Jun 4 12:10:21 UTC 2014


On Wed, Jun 04, 2014 at 01:14:58PM +0200, Vratislav Podzimek wrote:
> On Tue, 2014-06-03 at 11:01 -0400, Samantha N. Bueno wrote:
> > Text mode displays everything on the summary hub, whereas some spokes
> > are displayed on the progress hub as well in graphical. Default values
> > in the spoke category files are for the GUI, so this just tweaks the
> > collectCategoriesAndSpokes function a little to make text mode ignore
> > which hub spokes should be shown on.
> > ---
> >  pyanaconda/ui/common.py | 17 ++++++++++++-----
> >  1 file changed, 12 insertions(+), 5 deletions(-)
> > 
> > diff --git a/pyanaconda/ui/common.py b/pyanaconda/ui/common.py
> > index fcbcdb6..08409ff 100644
> > --- a/pyanaconda/ui/common.py
> > +++ b/pyanaconda/ui/common.py
> > @@ -28,7 +28,7 @@ import types
> >  
> >  from pyanaconda.constants import ANACONDA_ENVIRON, FIRSTBOOT_ENVIRON
> >  from pyanaconda.errors import RemovedModuleError
> > -from pykickstart.constants import FIRSTBOOT_RECONFIG
> > +from pykickstart.constants import FIRSTBOOT_RECONFIG, DISPLAY_MODE_TEXT
> >  
> >  import logging
> >  log = logging.getLogger("anaconda")
> > @@ -529,7 +529,7 @@ class Hub(UIObject):
> >             by a custom collect method.
> >             One example of such usage is the Initial Setup application.
> >          """
> > -        return collectCategoriesAndSpokes(self.paths, self.__class__)
> > +        return collectCategoriesAndSpokes(self.paths, self.__class__, self.data.displaymode.displayMode)
> >  
> >      def exit_logger(self):
> >          """Log when a user leaves the hub.  Subclasses may override this
> > @@ -708,7 +708,7 @@ def collect_categories(mask_paths):
> >  
> >      return categories
> >  
> > -def collectCategoriesAndSpokes(paths, klass):
> > +def collectCategoriesAndSpokes(paths, klass, displaymode):
> >      """collects categories and spokes to be displayed on this Hub
> >  
> >         :param paths: dictionary mapping categories, spokes, and hubs to their
> > @@ -719,8 +719,15 @@ def collectCategoriesAndSpokes(paths, klass):
> >      ret = {}
> >      # Collect all the categories this hub displays, then collect all the
> >      # spokes belonging to all those categories.
> > -    categories = sorted(filter(lambda c: c.displayOnHub == klass, collect_categories(paths["categories"])),
> > -                        key=lambda c: c.sortOrder)
> > +    if displaymode == DISPLAY_MODE_TEXT:
> > +        # bit of a hack, but the category displayOnHub defaults to GUI values,
> > +        # so just ignore displayOnHub if we're doing a text install since
> > +        # everything goes on the summary hub anyway
> > +        categories = sorted(collect_categories(paths["categories"]),
> > +                            key=lambda c: c.sortOrder)
> > +    else:
> > +        categories = sorted(filter(lambda c: c.displayOnHub == klass.__name__, collect_categories(paths["categories"])),
> > +                            key=lambda c: c.sortOrder)
> >      for c in categories:
> >          ret[c] = collect_spokes(paths["spokes"], c.__name__)
> This effectively means there will never be more hubs in the text mode
> which I'm not sure is what we really want. Couldn't we have two
> displayOnHub attributes (GUI and TUI) instead?

Yeah, actually. I'm thinking set displayOnHubTUI and displayOnHubGUI in
each category, and then collectCategoriesAndSpokes would have its check
like this:

    if displaymode = DISPLAY_MODE_TEXT:
        categories = sorted(filter(lambda c: c.displayOnHubTUI = klass.__name__, collect_categories(paths["categories"])),
                            key=lambda c: c.sortOrder)
    else:
        categories = sorted(filter(lambda c: c.displayOnHubGUI = klass.__name__, collect_categories(paths["categories"])),
                            key=lambda c: c.sortOrder)
        
That should take care of it.
 
> Otherwise these all look good to me.
> -- 
> Vratislav Podzimek
> 
> Anaconda Rider | RHCE | Red Hat, Inc. | Brno - Czech Republic
> 
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches


More information about the anaconda-patches mailing list