blob: 2a59b775a25a85b3c285e5199e6a34bb8be21a66 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
from pyanaconda.ui.gui.hubs import Hub
from pyanaconda.ui.gui.spokes import Spoke
from pyanaconda.ui.common import collect
import os
def collect_spokes(mask_paths):
"""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: issubclass(obj, Spoke) and obj.should_run("firstboot", None)))
print spokes
return spokes
class InitalSetupMainHub(Hub):
uiFile = "inital_setup.glade"
builderObjects = ["summaryWindow"]
mainWidgetName = "summaryWindow"
def _collectCategoriesAndSpokes(self):
"""collects categories and spokes to be displayed on this Hub
:return: dictionary mapping category class to list of spoke classes
:rtype: dictionary[category class] -> [ list of spoke classes ]
"""
ret = {}
# Collect all the categories this hub displays, then collect all the
# spokes belonging to all those categories.
candidate_spokes = collect_spokes(self.paths["spokes"])
spokes = [spoke for spoke in candidate_spokes \
if spoke.should_run("firstboot", self.data)]
for spoke in spokes:
ret.setdefault(spoke.category, [])
ret[spoke.category].append(spoke)
return ret
@property
def continueButton(self):
return self.builder.get_object("continueButton")
@property
def quitButton(self):
return self.builder.get_object("quitButton")
|