From 5551d6d2364b1db2c4180ed5f882020019604eb5 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 6 Dec 2005 13:17:11 +0100 Subject: * started with the dist-upgrade confirm dialog --- DistUpgrade/DistUpgrade.glade | 121 ++++++++++++++++++++++++++++++++++++++++++ DistUpgrade/DistUpgrade.py | 44 +++++++++++++-- 2 files changed, 162 insertions(+), 3 deletions(-) (limited to 'DistUpgrade') diff --git a/DistUpgrade/DistUpgrade.glade b/DistUpgrade/DistUpgrade.glade index 0235edcc..7651d2cd 100644 --- a/DistUpgrade/DistUpgrade.glade +++ b/DistUpgrade/DistUpgrade.glade @@ -98,4 +98,125 @@ + + Details + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER_ON_PARENT + False + 400 + 200 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_DIALOG + GDK_GRAVITY_NORTH_WEST + True + False + True + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + True + -5 + + + + + 0 + False + True + GTK_PACK_END + + + + + + True + False + 0 + + + + True + <b>Required changes:</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + False + True + False + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + diff --git a/DistUpgrade/DistUpgrade.py b/DistUpgrade/DistUpgrade.py index 262229a6..0897104b 100644 --- a/DistUpgrade/DistUpgrade.py +++ b/DistUpgrade/DistUpgrade.py @@ -37,6 +37,18 @@ class DistUpgradeView(object): on the current view """ pass + def confirmChanges(self, changes): + """ display the list of changed packages (apt.Package) and + return if the user confirms them + """ + self.toInstall = [] + self.toUpgrade = [] + self.toRemove = [] + for pkg in changes: + if pkg.markedUpgrade: toUpgrade.append(pkg) + elif pkg.markedInstall: toInstall.append(pkg) + elif pkg.markedRemove: toRemove.append(pkg) + assert(len(self.toInstall)+len(self.toUpgrade)+len(self.toRemove) == len(changes)) def askYesNoQuestion(self, summary, msg): pass def error(self, summary, msg): @@ -83,6 +95,15 @@ class GtkDistUpgradeView(DistUpgradeView,SimpleGladeApp): None, domain="update-manager") self._opCacheProgress = GtkOpProgress(self.progressbar_cache) self._fetchProgress = self.GtkFetchProgressAdapter(self) + # details dialog + self.details_list = gtk.ListStore(gobject.TYPE_STRING) + column = gtk.TreeViewColumn("") + render = gtk.CellRendererText() + column.pack_start(render, True) + column.add_attribute(render, "markup", 0) + self.treeview_details.append_column(column) + self.treeview_details.set_model(self.details_list) + def getFetchProgress(self): return self._fetchProgress def getOpCacheProgress(self): @@ -98,6 +119,18 @@ class GtkDistUpgradeView(DistUpgradeView,SimpleGladeApp): dialog.run() dialog.destroy() return False + def confirmChanges(self, changes): + DistUpgradeView.cnfirmChanges(self, changes) + self.details_list.clear() + for rm in toRemove: + self.details_list.append([_("To be removed: %s" % rm)]) + for inst in toInstall: + self.details_list.append([_("To be installed: %s" % inst)]) + for up in toUpgrade: + self.details_list.append([_("To be upgraded: %s" % up)]) + res = self.dialog_details.run() + self.dialog_details.hide() + return True def askYesNoQuestion(self, summary, msg): msg = "%s\n\n%s" % (summary,msg) dialog = gtk.MessageDialog(parent=self.window_main, @@ -202,6 +235,8 @@ class DistUpgradeControler(object): return True def doPreUpgrade(self): + # FIXME: check out what packages are downloadable etc to + # compare the list after the update again pass def doUpdate(self): @@ -210,8 +245,10 @@ class DistUpgradeControler(object): self._cache.update(progress) def doDistUpgrade(self): - self._view.askYesNoQuestion(_("Do the upgrade"), - _("lala lala")) + self._cache.upgrade(True) + changes = self._cache.getChanges() + res = self._view.confirmChanges(changes) + return res def breezyUpgrade(self): # sanity check (check for ubuntu-desktop, brokenCache etc) @@ -235,7 +272,8 @@ class DistUpgradeControler(object): # calc the dist-upgrade and see if the removals are ok/expected # do the dist-upgrade - self.doDistUpgrade() + if not self.doDistUpgrade(): + sys.exit(1) # do post-upgrade stuff -- cgit v1.2.3