summaryrefslogtreecommitdiffstats
path: root/iw/task_gui.py
diff options
context:
space:
mode:
Diffstat (limited to 'iw/task_gui.py')
-rw-r--r--iw/task_gui.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/iw/task_gui.py b/iw/task_gui.py
new file mode 100644
index 000000000..843fb69b6
--- /dev/null
+++ b/iw/task_gui.py
@@ -0,0 +1,77 @@
+#
+# task_gui.py: Choose tasks for installation
+#
+# Copyright 2006 Red Hat, Inc.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+import gtk
+import gtk.glade
+import gobject
+import gui
+from iw_gui import *
+from rhpl.translate import _, N_
+from constants import productName
+
+grpTaskMap = {"officeCheckbox": ["graphics", "office",
+ "games", "sound-and-video"],
+ "develCheckbox": ["development-libs", "development-tools",
+ "gnome-software-development",
+ "x-software-development"],
+ "webCheckbox": ["web-server"],
+ "xenCheckbox": ["xen"] }
+
+class TaskWindow(InstallWindow):
+ def getNext(self):
+ def selgroups(lst):
+ map(self.backend.selectGroup, lst)
+
+ if self.xml.get_widget("customRadio").get_active():
+ self.dispatch.skipStep("group-selection", skip = 0)
+ else:
+ self.dispatch.skipStep("group-selection", skip = 1)
+
+ for (cb, grps) in grpTaskMap.items():
+ if self.xml.get_widget(cb).get_active():
+ map(self.backend.selectGroup, grps)
+ else:
+ map(self.backend.deselectGroup, grps)
+
+ def groupsInstalled(self, lst):
+ # FIXME: yum specific
+ rc = False
+ for gid in lst:
+ g = self.backend.ayum.comps.return_group(gid)
+ if g and not g.selected:
+ return False
+ elif g:
+ rc = True
+ return rc
+
+ def getScreen (self, intf, backend, dispatch):
+ self.intf = intf
+ self.dispatch = dispatch
+ self.backend = backend
+
+ (self.xml, vbox) = gui.getGladeWidget("tasksel.glade", "taskBox")
+
+ lbl = self.xml.get_widget("mainLabel")
+ txt = lbl.get_text()
+ lbl.set_text(txt %(productName,))
+
+ custom = not self.dispatch.stepInSkipList("group-selection")
+ if custom:
+ self.xml.get_widget("customRadio").set_active(True)
+ else:
+ self.xml.get_widget("customRadio").set_active(False)
+
+ for (cb, grps) in grpTaskMap.items():
+ if self.groupsInstalled(grps):
+ self.xml.get_widget(cb).set_active(True)
+ else:
+ self.xml.get_widget(cb).set_active(False)
+
+ return vbox