summaryrefslogtreecommitdiffstats
path: root/iw
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2006-08-23 17:25:34 +0000
committerJeremy Katz <katzj@redhat.com>2006-08-23 17:25:34 +0000
commit52b960911f7281c0e853a50b7a86790724a42367 (patch)
treefc77f59232fc111f45dad9182241fdf08ef6a903 /iw
parent43d459d4cc719b4ba7d5990d4db207b28a9b606f (diff)
downloadanaconda-52b960911f7281c0e853a50b7a86790724a42367.tar.gz
anaconda-52b960911f7281c0e853a50b7a86790724a42367.tar.xz
anaconda-52b960911f7281c0e853a50b7a86790724a42367.zip
2006-08-23 Jeremy Katz <katzj@redhat.com>
* iw/task_gui.py: Rework so that we can enable/disable optional repos per install class as well as see what repos have been added * ui/tasksel.glade: Change things up a little bit * installclasses/fedora.py: Tweak description, add Extras as an additional repo * yuminstall.py (AnacondaYum.doConfigSetup): Allow for additional, not enabled by default repos to be set up. * installclass.py (repos): Add not-default repos
Diffstat (limited to 'iw')
-rw-r--r--iw/task_gui.py99
1 files changed, 79 insertions, 20 deletions
diff --git a/iw/task_gui.py b/iw/task_gui.py
index 156965ee3..8345fe4c9 100644
--- a/iw/task_gui.py
+++ b/iw/task_gui.py
@@ -31,15 +31,20 @@ class TaskWindow(InstallWindow):
else:
self.dispatch.skipStep("group-selection", skip = 1)
- for (txt, grps) in self.tasks:
- if not self.taskcbs.has_key(txt):
- continue
- cb = self.taskcbs[txt]
- if cb.get_active():
+ tasks = self.xml.get_widget("taskList").get_model()
+ for (cb, task, grps) in tasks:
+ if cb:
map(self.backend.selectGroup, grps)
else:
map(self.backend.deselectGroup, grps)
+ repos = self.xml.get_widget("repoList").get_model()
+ for (cb, repotxt, repo) in repos:
+ if cb:
+ repo.enable()
+ else:
+ repo.disable()
+
def groupsInstalled(self, lst):
# FIXME: yum specific
rc = False
@@ -109,6 +114,8 @@ class TaskWindow(InstallWindow):
try:
self.backend.doRepoSetup(self.anaconda, reponame,
fatalerrors = False)
+ s = self.xml.get_widget("repoList").get_model()
+ s.append([repo.isEnabled(), reponame, repo])
log.info("added repository %s with with source URL %s" % (reponame, repourl))
except yum.Errors.RepoError, e:
self.intf.messageWindow(_("Error"),
@@ -119,10 +126,71 @@ class TaskWindow(InstallWindow):
type="ok", custom_icon="error")
self.backend.ayum.repos.delete(reponame)
continue
+
+ if not repo.groups_added:
+ self.intf.messageWindow(_("Warning"),
+ _("Unable to find a group file for %s. "
+ "This will make manual selection of packages "
+ "from the repository not work") %(reponame,),
+ type="warning")
+
+
break
dialog.destroy()
return rc
+
+ def _toggled(self, data, row, store):
+ i = store.get_iter(int(row))
+ val = store.get_value(i, 0)
+ store.set_value(i, 0, not val)
+
+ def _createTaskStore(self):
+ store = gtk.ListStore(gobject.TYPE_BOOLEAN,
+ gobject.TYPE_STRING,
+ gobject.TYPE_PYOBJECT)
+ tl = self.xml.get_widget("taskList")
+ tl.set_model(store)
+
+ cbr = gtk.CellRendererToggle()
+ col = gtk.TreeViewColumn('', cbr, active = 0)
+ cbr.connect("toggled", self._toggled, store)
+ tl.append_column(col)
+
+ col = gtk.TreeViewColumn('Text', gtk.CellRendererText(), text = 1)
+ col.set_clickable(False)
+ tl.append_column(col)
+
+ for (txt, grps) in self.tasks:
+ if not self.groupsExist(grps):
+ continue
+ store.append([self.groupsInstalled(grps), txt, grps])
+
+ return len(store)
+
+ def _createRepoStore(self):
+ store = gtk.ListStore(gobject.TYPE_BOOLEAN,
+ gobject.TYPE_STRING,
+ gobject.TYPE_PYOBJECT)
+ tl = self.xml.get_widget("repoList")
+ tl.set_model(store)
+
+ cbr = gtk.CellRendererToggle()
+ col = gtk.TreeViewColumn('', cbr, active = 0)
+ cbr.connect("toggled", self._toggled, store)
+ tl.append_column(col)
+
+ col = gtk.TreeViewColumn('Text', gtk.CellRendererText(), text = 1)
+ col.set_clickable(False)
+ tl.append_column(col)
+
+ for (repoid, uri) in self.repos.items():
+ rid = repoid.replace(" ", "")
+ if not self.backend.ayum.repos.repos.has_key(rid):
+ continue
+ repo = self.backend.ayum.repos.repos[rid]
+ store.append([repo.isEnabled(), repoid, repo])
+
def getScreen (self, anaconda):
self.intf = anaconda.intf
@@ -131,7 +199,7 @@ class TaskWindow(InstallWindow):
self.anaconda = anaconda
self.tasks = anaconda.id.instClass.tasks
- self.taskcbs = {}
+ self.repos = anaconda.id.instClass.repos
(self.xml, vbox) = gui.getGladeWidget("tasksel.glade", "taskBox")
@@ -145,22 +213,13 @@ class TaskWindow(InstallWindow):
else:
self.xml.get_widget("customRadio").set_active(False)
- found = False
- for (txt, grps) in self.tasks:
- if not self.groupsExist(grps):
- continue
- found = True
- cb = gtk.CheckButton(_(txt))
- self.xml.get_widget("cbVBox").pack_start(cb)
- if self.groupsInstalled(grps):
- cb.set_active(True)
- self.taskcbs[txt] = cb
-
- if not found:
- self.xml.get_widget("mainLabel").hide()
+ if self._createTaskStore() == 0:
self.xml.get_widget("cbVBox").hide()
+ self.xml.get_widget("mainLabel").hide()
+
+ self._createRepoStore()
if not anaconda.id.instClass.allowExtraRepos:
- self.xml.get_widget("addRepoButton").hide()
+ self.xml.get_widget("addRepoBox").hide()
self.xml.get_widget("addRepoButton").connect("clicked", self._addRepo)