# # examine_gui.py: dialog to allow selection of a RHL installation to upgrade # # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat, Inc. # All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import gtk import gui from iw_gui import * from pixmapRadioButtonGroup_gui import pixmapRadioButtonGroup from constants import * import upgrade from flags import flags import gettext _ = lambda x: gettext.ldgettext("anaconda", x) UPGRADE_STR = "upgrade" REINSTALL_STR = "reinstall" seenExamineScreen = False class UpgradeExamineWindow (InstallWindow): windowTitle = N_("Upgrade Examine") def getNext (self): if self.doupgrade: upgrade.setSteps(self.anaconda) self.anaconda.upgrade = True rootfs = self.parts[self.upgradecombo.get_active()] self.anaconda.upgradeRoot = [(rootfs[0], rootfs[1])] self.anaconda.rootParts = self.parts self.anaconda.dispatch.skipStep("installtype", skip = 1) self.anaconda.upgrade = True else: self.anaconda.dispatch.skipStep("installtype", skip = 0) self.anaconda.upgrade = False return None def createUpgradeOption(self): r = pixmapRadioButtonGroup() r.addEntry(REINSTALL_STR, _("Fresh Installation"), pixmap=gui.readImageFromFile("install.png"), descr=_("Choose this option to install a fresh copy of %s " "on your system. Existing software and data may " "be overwritten depending on your configuration " "choices.") % productName) r.addEntry(UPGRADE_STR, _("Upgrade an Existing Installation"), pixmap=gui.readImageFromFile("upgrade.png"), descr=_("Choose this option if you would like to upgrade " "your existing %s system. This option will " "preserve the existing data on your storage " "device(s).") % productName) return r def upgradeOptionsSetSensitivity(self, state): self.uplabel.set_sensitive(state) self.upgradecombo.set_sensitive(state) def optionToggled(self, widget, name): if name == UPGRADE_STR: self.upgradeOptionsSetSensitivity(widget.get_active()) self.doupgrade = widget.get_active() #UpgradeExamineWindow tag = "upgrade" def getScreen (self, anaconda): global seenExamineScreen self.anaconda = anaconda if not seenExamineScreen: # this is the first time we've entered this screen self.doupgrade = self.anaconda.dispatch.stepInSkipList("installtype") seenExamineScreen = True else: self.doupgrade = self.anaconda.upgrade # we might get here after storage reset that obsoleted # root device objects we had found if not self.anaconda.rootParts: self.anaconda.rootParts = upgrade.findExistingRoots(self.anaconda, flags.cmdline.has_key("upgradeany")) upgrade.setUpgradeRoot(self.anaconda) self.parts = self.anaconda.rootParts vbox = gtk.VBox (False, 12) vbox.set_border_width (8) introLabel = gtk.Label(_("At least one existing installation has been " "detected on your system. What would you " "like to do?")) introLabel.set_alignment(0, 0) vbox.pack_start(introLabel, False, False) r = self.createUpgradeOption() self.r = r b = self.r.render() if self.doupgrade: self.r.setCurrent(UPGRADE_STR) else: self.r.setCurrent(REINSTALL_STR) self.r.setToggleCallback(self.optionToggled) vbox.pack_start(b, False) self.root = self.parts[0] uplabelstr = _("Which %s installation would you like to upgrade?") % productName self.uplabel = gtk.Label(uplabelstr) self.uplabel.set_use_markup(True) self.uplabel.set_alignment(0, 0) model = gtk.ListStore(str) self.upgradecombo = gtk.ComboBox(model) cell = gtk.CellRendererText() self.upgradecombo.pack_start(cell, True) self.upgradecombo.set_attributes(cell, markup=0) for (dev, desc) in self.parts: iter = model.append() if (desc is None) or len(desc) < 1: desc = _("Unknown Linux system") model[iter][0] = "%s (installed on %s)" %(desc, dev.path) # hack hack hackity hack alignment = gtk.Alignment(xalign=0.25) alignmentBox = gtk.VBox(False, 6) alignmentBox.pack_start(self.uplabel, False, False) alignmentBox.pack_start(self.upgradecombo, False, False) alignment.add(alignmentBox) vbox.pack_start(alignment, True, True) # set default idx = 0 for p in self.parts: if self.anaconda.upgradeRoot[0][0] == p[0]: self.upgradecombo.set_active(idx) break idx = idx + 1 self.upgradeOptionsSetSensitivity(self.doupgrade) return vbox