[anaconda:master 1/3] Factor computation of paths attribute into UserInterface class.
mulhern
amulhern at redhat.com
Tue Dec 2 18:24:19 UTC 2014
This is done mostly to eliminate setting a bunch of class attributes
which only serve the purpose of local variables for computing the paths
attribute.
Make the newly created method static. It is necessary to get the value from
__file__ from the file it actually resides in. The only thing that I can
imagine that would be a class attribute is the ui_subdir, and I don't
think the ui_subdir necessarily needs to be an attribute of the two
UserInterface subclasses.
Signed-off-by: mulhern <amulhern at redhat.com>
---
pyanaconda/ui/__init__.py | 32 +++++++++++++++++++++++++++++---
pyanaconda/ui/gui/__init__.py | 21 ++-------------------
pyanaconda/ui/tui/__init__.py | 20 +-------------------
3 files changed, 32 insertions(+), 41 deletions(-)
diff --git a/pyanaconda/ui/__init__.py b/pyanaconda/ui/__init__.py
index 209f9a1..8aaae29 100644
--- a/pyanaconda/ui/__init__.py
+++ b/pyanaconda/ui/__init__.py
@@ -23,6 +23,7 @@ __all__ = ["UserInterface"]
import copy
import os
+import site
from pyanaconda.ui.common import collect
class PathDict(dict):
@@ -72,9 +73,6 @@ class UserInterface(object):
from pyanaconda.errors import errorHandler
errorHandler.ui = self
-
- basepath = os.path.dirname(__file__)
- basemask = "pyanaconda.ui"
paths = PathDict({})
@property
@@ -82,6 +80,34 @@ class UserInterface(object):
"""Returns the number of tty the UserInterface is running on."""
raise NotImplementedError
+ @staticmethod
+ def get_paths(basepath, ui_subdir):
+ """ Gets search path directory for user interface subclasses.
+
+ :param str basepath: the directory of the subclass file
+ :param str ui_subdir: the subdirectory of ui ('gui' or 'tui')
+
+ :returns: the PathDict object for the parameters specified.
+ :rtype: PathDict
+ """
+ BASEMASK = "pyanaconda.ui"
+ UPDATEPATH = "/tmp/updates/pyanaconda.ui"
+ sitepackages = [os.path.join(d, "pyanaconda", "ui")
+ for d in site.getsitepackages()]
+ pathlist = set([UPDATEPATH, basepath] + sitepackages)
+
+ return UserInterface.paths + {
+ "categories": [(BASEMASK + ".categories.%s",
+ os.path.join(path, "categories"))
+ for path in pathlist],
+ "spokes": [(BASEMASK + "." + ui_subdir + ".spokes.%s",
+ os.path.join(path, ui_subdir, "spokes"))
+ for path in pathlist],
+ "hubs": [(BASEMASK + "." + ui_subdir + ".hubs.%s",
+ os.path.join(path, ui_subdir, "hubs"))
+ for path in pathlist]
+ }
+
@classmethod
def update_paths(cls, pathdict):
"""Receives pathdict and appends it's contents to the current
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py
index 08c2573..690305d 100644
--- a/pyanaconda/ui/gui/__init__.py
+++ b/pyanaconda/ui/gui/__init__.py
@@ -18,7 +18,7 @@
#
# Red Hat Author(s): Chris Lumens <clumens at redhat.com>
#
-import inspect, os, sys, time, site, signal
+import inspect, os, sys, time, signal
import meh.ui.gui
from contextlib import contextmanager
@@ -470,24 +470,7 @@ class GraphicalUserInterface(UserInterface):
# we have a sensible initial value, just in case
self._saved_help_button_label = _("Help!")
- basemask = "pyanaconda.ui"
- basepath = os.path.dirname(__file__)
- updatepath = "/tmp/updates/pyanaconda/ui"
- sitepackages = [os.path.join(dir, "pyanaconda", "ui")
- for dir in site.getsitepackages()]
- pathlist = set([updatepath, basepath] + sitepackages)
-
- paths = UserInterface.paths + {
- "categories": [(basemask + ".categories.%s",
- os.path.join(path, "categories"))
- for path in pathlist],
- "spokes": [(basemask + ".gui.spokes.%s",
- os.path.join(path, "gui/spokes"))
- for path in pathlist],
- "hubs": [(basemask + ".gui.hubs.%s",
- os.path.join(path, "gui/hubs"))
- for path in pathlist]
- }
+ paths = UserInterface.get_paths(os.path.dirname(__file__), "gui")
def _assureLogoImage(self):
# make sure there is a logo image present,
diff --git a/pyanaconda/ui/tui/__init__.py b/pyanaconda/ui/tui/__init__.py
index 0fb1ca7..2ca9a67 100644
--- a/pyanaconda/ui/tui/__init__.py
+++ b/pyanaconda/ui/tui/__init__.py
@@ -30,7 +30,6 @@ from pyanaconda.ui.tui.tuiobject import YesNoDialog, ErrorDialog
import os
import sys
-import site
import Queue
import meh.ui.text
import logging
@@ -99,24 +98,7 @@ class TextUserInterface(ui.UserInterface):
self.isFinal = isFinal
self.quitMessage = quitMessage
- basemask = "pyanaconda.ui"
- basepath = os.path.dirname(__file__)
- updatepath = "/tmp/updates/pyanaconda/ui"
- sitepackages = [os.path.join(dir, "pyanaconda", "ui")
- for dir in site.getsitepackages()]
- pathlist = set([updatepath, basepath] + sitepackages)
-
- paths = ui.UserInterface.paths + {
- "categories": [(basemask + ".categories.%s",
- os.path.join(path, "categories"))
- for path in pathlist],
- "spokes": [(basemask + ".tui.spokes.%s",
- os.path.join(path, "tui/spokes"))
- for path in pathlist],
- "hubs": [(basemask + ".tui.hubs.%s",
- os.path.join(path, "tui/hubs"))
- for path in pathlist]
- }
+ paths = ui.UserInterface.get_paths(os.path.dirname(__file__), "tui")
@property
def tty_num(self):
--
1.9.3
More information about the anaconda-patches
mailing list