summaryrefslogtreecommitdiffstats
path: root/iw
diff options
context:
space:
mode:
Diffstat (limited to 'iw')
-rw-r--r--iw/dependencies_gui.py69
1 files changed, 61 insertions, 8 deletions
diff --git a/iw/dependencies_gui.py b/iw/dependencies_gui.py
index 907911fc8..85799247c 100644
--- a/iw/dependencies_gui.py
+++ b/iw/dependencies_gui.py
@@ -9,19 +9,47 @@ class UnresolvedDependenciesWindow (InstallWindow):
ics.setTitle (_("Unresolved Dependencies"))
ics.setNextEnabled (1)
ics.readHTML ("depend")
- self.dependCB = None
+ self.dependRB = None
def getNext (self):
- if self.dependCB and self.dependCB.get_active ():
- self.todo.selectDeps (self.deps)
+ if (self.dependRB and self.dependRB.get_active ()
+ or self.causeRB and self.causeRB.get_active ()):
threads_leave ()
moredeps = self.todo.verifyDeps ()
threads_enter ()
if moredeps and self.todo.canResolveDeps (moredeps):
UnresolvedDependenciesWindow.moredeps = moredeps
return UnresolvedDependenciesWindow
+
return None
+
+ def getPrev (self):
+ self.todo.comps.setSelectionState(self.origSelection)
+ def updateSize (self, *args):
+ self.sizelabel.set_text (_("Total install size: %s") % self.todo.comps.sizeStr())
+
+ def installToggled (self, widget, *args):
+ self.todo.selectDepCause (self.deps)
+ if widget.get_active ():
+ self.todo.selectDeps (self.deps)
+ else:
+ self.todo.unselectDeps (self.deps)
+ self.updateSize ()
+
+ def causeToggled (self, widget, *args):
+ if widget.get_active ():
+ self.todo.unselectDepCause (self.deps)
+ else:
+ self.todo.selectDepCause (self.deps)
+ self.updateSize ()
+
+ def ignoreToggled (self, widget, *args):
+ if widget.get_active ():
+ self.todo.selectDepCause (self.deps)
+ self.todo.unselectDeps (self.deps)
+ self.updateSize ()
+
def getScreen (self):
if not UnresolvedDependenciesWindow.moredeps:
threads_leave ()
@@ -44,13 +72,38 @@ class UnresolvedDependenciesWindow (InstallWindow):
list.thaw ()
sw.add (list)
- self.dependCB = GtkCheckButton (_("Install packages to satisfy dependencies"))
- self.dependCB.set_active (TRUE)
- align = GtkAlignment (0.5, 0.5)
- align.add (self.dependCB)
+ # save the way things were when we came in, then turn on
+ # the packages so we get the right size.
+ self.origSelection = self.todo.comps.getSelectionState()
+ self.todo.selectDeps (self.deps)
+
+ self.sizelabel = GtkLabel()
+ self.sizelabel.set_alignment (1, .5)
+ self.updateSize()
+
+ rb = GtkVBox (FALSE)
+ self.dependRB = GtkRadioButton (None, _("Install packages to "
+ "satisfy dependencies"))
+
+ self.causeRB = GtkRadioButton (self.dependRB, _("Do not install "
+ "packages that "
+ "have dependencies"))
+
+ self.ignoreRB = GtkRadioButton (self.dependRB, _("Ignore package "
+ "dependencies"))
+
+ rb.pack_start (self.dependRB)
+ rb.pack_start (self.causeRB)
+ rb.pack_start (self.ignoreRB)
+ rb.pack_start (self.sizelabel)
+
+ self.dependRB.set_active (1)
+ self.dependRB.connect('toggled', self.installToggled)
+ self.causeRB.connect('toggled', self.causeToggled)
+ self.ignoreRB.connect('toggled', self.ignoreToggled)
box = GtkVBox (FALSE, 5)
box.pack_start (sw, TRUE)
- box.pack_start (align, FALSE)
+ box.pack_start (rb, FALSE)
return box