# # upgrade_swap_gui.py: dialog for adding swap files for 2.4 # # Mike Fulbright # # Copyright 2001 Red Hat, Inc. # # This software may be freely redistributed under the terms of the GNU # library public license. # # You should have received a copy of the GNU Library Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # import string import isys import iutil import upgrade import gui from gnome.ui import * from gtk import * from iw_gui import * from package_gui import queryUpgradeContinue from translate import _, N_ from log import log from flags import flags class UpgradeSwapWindow (InstallWindow): windowTitle = N_("Upgrade Swap Partition") htmlTag = "upswapfile" def getNext (self): #-If the user doesn't need to add swap, we don't do anything if not self.neededSwap: return None if self.option2.get_active(): rc = self.warning() if rc == 0: raise gui.StayOnScreen else: return None data = self.clist.get_row_data(self.row) if data: mnt, part, size = data val = int(self.entry.get_text()) size = int(size) val = int(val) else: val = 0 if val > 2000 or val < 1: rc = self.swapWrongSize() raise gui.StayOnScreen elif (val+16) > size: rc = self.swapTooBig() raise gui.StayOnScreen else: if flags.setupFilesystems: upgrade.createSwapFile(self.instPath, self.fsset, mnt, val) return None def toggle (self, data): self.swapbox.set_sensitive(self.option1.get_active()) def clist_cb(self, clist, row, col, data): self.row = row def getScreen (self, intf, fsset, instPath, swapInfo): self.neededSwap = 0 self.fsset = fsset self.instPath = instPath self.intf = intf rc = swapInfo self.neededSwap = 1 self.row = 0 box = GtkVBox (FALSE, 5) box.set_border_width (5) label = GtkLabel (_("The 2.4 kernel needs significantly more " "swap than older kernels, as much as twice " "as much swap space as RAM on the system. " "You currently have %dMB of swap configured, but " "you may create additional swap space on one of " "your file systems now.") % (iutil.swapAmount() / 1024) + _("\n\nThe installer has detected %s MB of RAM.\n") % (iutil.memInstalled(corrected = 1)/1024)) label.set_alignment (0.5, 0.0) label.set_usize(400, 100) label.set_line_wrap (TRUE) box.pack_start(label, FALSE) hs = GtkHSeparator() box.pack_start(hs, FALSE) self.option1 = GtkRadioButton(None, (_("I want to create a swap file"))) box.pack_start(self.option1, FALSE) (fsList, suggSize, suggMntPoint) = rc self.swapbox = GtkVBox(FALSE, 5) box.pack_start(self.swapbox, FALSE) label = GtkLabel (_("Select the partition to put the swap file on:")) a = GtkAlignment(0.2, 0.5) a.add(label) self.swapbox.pack_start(a, FALSE) titles = ((_("Mount Point")), (_("Partition")), (_("Free Space (MB)"))) self.clist = GtkCList(3, titles) self.clist.connect("select-row", self.clist_cb) a = GtkAlignment(0.5, 0.5) a.add(self.clist) self.swapbox.pack_start(a, FALSE, TRUE, 10) count = 0 for (mnt, part, size) in fsList: self.clist.append([mnt, part, str(size)]) self.clist.set_row_data(count, [mnt, part, size]) count = count + 1 self.clist.select_row(0, 0) label = GtkLabel (_("It is recommended that your swap file be at " "least %d MB. Please enter a size for the swap " "file:") % suggSize) label.set_usize(400, 40) label.set_line_wrap (TRUE) a = GtkAlignment(0.5, 0.5) a.add(label) self.swapbox.pack_start(a, FALSE, TRUE, 10) hbox = GtkHBox(FALSE, 5) a = GtkAlignment(0.4, 0.5) a.add(hbox) self.swapbox.pack_start(a, FALSE) label = GtkLabel (_("Swap file size (MB):")) hbox.pack_start(label, FALSE) self.entry = GtkEntry(4) self.entry.set_usize(40, 25) self.entry.set_text(str(suggSize)) hbox.pack_start(self.entry, FALSE, TRUE, 10) self.option2 = GtkRadioButton(self.option1, (_("I don't want to create a swap " "file"))) box.pack_start(self.option2, FALSE, TRUE, 20) self.option1.connect("toggled", self.toggle) return box def warning(self): rc = self.intf.messageWindow(_("Warning"), _("It is stongly recommended that you create a swap " "file. Failure to do so could cause the installer " "to abort abnormally. Are you sure that you wish " "to continue?"), type = "yesno") return rc def swapWrongSize(self): rc = self.intf.messageWindow(_("Warning"), _("The swap file must be between 1 and 2000 MB in size."), type = "okcancel") return rc def swapTooBig(self): rc = self.intf.messageWindow(_("Warning"), _("There is not enough space on the device you " "selected for the swap partition."), type = "okcancel") return rc