summaryrefslogtreecommitdiffstats
path: root/textw
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2000-06-01 22:09:25 +0000
committerMatt Wilson <msw@redhat.com>2000-06-01 22:09:25 +0000
commitd7e95d532457f954d78ad69824350bf5acdd6bea (patch)
tree74bfe3e3be19b0d3bc0ce1eb19e154412fd16edc /textw
parentfecaa1e1b61582f985263a4f9e5b32076a6d7b9c (diff)
downloadanaconda-d7e95d532457f954d78ad69824350bf5acdd6bea.tar.gz
anaconda-d7e95d532457f954d78ad69824350bf5acdd6bea.tar.xz
anaconda-d7e95d532457f954d78ad69824350bf5acdd6bea.zip
sync unresolved deps window to gui
Diffstat (limited to 'textw')
-rw-r--r--textw/packages_text.py76
1 files changed, 64 insertions, 12 deletions
diff --git a/textw/packages_text.py b/textw/packages_text.py
index 3e194e5a5..b8834201c 100644
--- a/textw/packages_text.py
+++ b/textw/packages_text.py
@@ -270,13 +270,39 @@ class IndividualPackageWindow:
return INSTALL_OK
class PackageDepWindow:
+ moredeps = None
+ def size(self, comps):
+ return _("Total install size: %s") % comps.sizeStr()
+
+ def radiocb (self, args):
+ (label, todo, widget) = args
+ if widget == self.inst:
+ todo.selectDeps (self.deps)
+ todo.selectDepCause (self.deps)
+ elif widget == self.cause:
+ todo.unselectDeps (self.deps)
+ todo.unselectDepCause (self.deps)
+ elif widget == self.ignore:
+ todo.unselectDeps (self.deps)
+ todo.selectDepCause (self.deps)
+ else:
+ raise RuntimeError, "never reached"
+
+ label.setText(self.size(todo.comps))
+
def __call__(self, screen, todo):
- deps = todo.verifyDeps ()
- if not deps:
+ if not PackageDepWindow.moredeps:
+ self.deps = todo.verifyDeps ()
+ else:
+ self.deps = PackageDepWindow.moredeps
+ if not self.deps:
return INSTALL_NOOP
+ origSelection = todo.comps.getSelectionState()
+ todo.selectDeps (self.deps)
+
g = GridFormHelp(screen, _("Package Dependencies"),
- "pacakgedeps", 1, 5)
+ "pacakgedeps", 1, 8)
g.add (TextboxReflowed (45, _("Some of the packages you have "
"selected to install require "
"packages you have not selected. If "
@@ -285,29 +311,55 @@ class PackageDepWindow:
"installed.")), 0, 0, (0, 0, 0, 1))
g.add (Label ("%-20s %-20s" % (_("Package"), _("Requirement"))), 0, 1, anchorLeft = 1)
text = ""
- for name, suggest in deps:
+ for name, suggest in self.deps:
text = text + "%-20s %-20s\n" % (name, suggest)
- if len (deps) > 5:
+ if len (self.deps) > 4:
scroll = 1
else:
scroll = 0
- g.add (Textbox (45, 5, text, scroll = scroll), 0, 2, anchorLeft = 1)
+ g.add (Textbox (45, 4, text, scroll = scroll), 0, 2, anchorLeft = 1)
+
+ la = Label(self.size(todo.comps))
+ g.add (la, 0, 3, anchorRight = 1)
+
+ instt = _("Install packages to satisfy dependencies")
+ causet = _("Do not install packages that have dependencies")
+ ignt = _("Ignore package dependencies")
+ maxlen = max ((len (instt), len (causet), len (ignt)))
+
+ def pad (pad, text):
+ return "%-*s" % (pad, text)
- cb = Checkbox (_("Install packages to satisfy dependencies"), 1)
- g.add (cb, 0, 3, (0, 1, 0, 1), growx = 1)
+ self.inst = SingleRadioButton (pad (maxlen, instt), None, 1)
+ self.inst.setCallback(self.radiocb, (la, todo, self.inst))
+ g.add (self.inst, 0, 4, (0, 1, 0, 0), anchorLeft = 1)
+
+ self.cause = SingleRadioButton (pad (maxlen, causet), self.inst, 0)
+ self.cause.setCallback(self.radiocb, (la, todo, self.cause))
+ g.add (self.cause, 0, 5, anchorLeft = 1)
+
+ self.ignore = SingleRadioButton (pad (maxlen, ignt), self.cause, 0)
+ g.add (self.ignore, 0, 6, (0, 0, 0, 1), anchorLeft = 1)
+ self.ignore.setCallback(self.radiocb, (la, todo, self.ignore))
bb = ButtonBar (screen, ((_("OK"), "ok"), (_("Back"), "back")))
- g.add (bb, 0, 4, growx = 1)
+ g.add (bb, 0, 7, growx = 1)
result = g.runOnce ()
- if cb.selected ():
- todo.selectDeps (deps)
-
rc = bb.buttonPressed (result)
if rc == string.lower (_("Back")):
+ todo.comps.setSelectionState(origSelection)
return INSTALL_BACK
+
+ if self.ignore.selected():
+ return INSTALL_OK
+
+ moredeps = todo.verifyDeps ()
+ if moredeps and todo.canResolveDeps (moredeps):
+ PackageDepWindow.moredeps = moredeps
+ return self(screen, todo)
return INSTALL_OK