from iw import * from gtk import * from gui import _ from xpms import SMALL_CHECK import GdkImlib class LiloWindow (InstallWindow): foo = GdkImlib.create_image_from_xpm (SMALL_CHECK) foo.render() checkMark = foo.make_pixmap() del foo def __init__ (self, ics): InstallWindow.__init__ (self, ics) ics.readHTML ("lilo") ics.setTitle (_("Lilo Configuration")) ics.setNextEnabled (1) self.type = None self.bootdisk = None self.lilo = None def getNext (self): # XXX if not self.bootdisk: return None if self.bootdisk.get_active (): self.todo.bootdisk = 1 else: self.todo.bootdisk = 0 if self.lilo.get_active (): self.todo.setLiloLocation (None) else: if self.mbr.get_active (): self.todo.setLiloLocation ("mbr") else: self.todo.setLiloLocation ("partition") self.todo.setLiloImages(self.images) self.todo.liloLinear = self.linearCheck.get_active() self.todo.liloAppend = self.appendEntry.get_text() def typeName(self, type): if (type == 2): return "Linux Native" elif (type == 1): return "DOS/Windows" elif (type == 4): return "OS/2 / Windows NT" else: return "Other" def toggled (self, widget, *args): if widget.get_active (): state = FALSE else: state = TRUE for n in [self.radioBox, self.editBox, self.imageList ]: n.set_sensitive (state) def labelUpdated(self, *args): index = self.imageList.selection[0] device = self.imageList.get_text(index, 1) label = self.labelEntry.get_text() self.imageList.set_text(index, 3, label) if label: self.defaultCheck.set_sensitive (TRUE) else: self.defaultCheck.set_sensitive (FALSE) def defaultUpdated(self, *args): if self.ignoreSignals: return index = self.imageList.selection[0] if self.defaultCheck.get_active(): if self.default != None: self.imageList.set_text(self.default, 0, "") self.imageList.set_pixmap(index, 0, self.checkMark) self.default = index else: self.imageList.set_text(index, 0, "") self.default = None def labelSelected(self, *args): index = self.imageList.selection[0] device = self.imageList.get_text(index, 1) label = self.imageList.get_text(index, 3) self.deviceLabel.set_text(_("Partition") + ": " + device) device = device[5:] type = self.images[device][1] self.typeLabel.set_text(_("Type") + ":" + self.typeName(type)) self.labelEntry.set_text(label) if not label: self.defaultCheck.set_sensitive (FALSE) self.ignoreSignals = 1 if index == self.default: self.defaultCheck.set_active(1) else: self.defaultCheck.set_active(0) self.ignoreSignals = 0 def getScreen (self): self.images = self.todo.getLiloImages() self.ignoreSignals = 0 if self.todo.fstab.mountList()[0][0] != '/': return None (bootpart, boothd) = self.todo.getLiloOptions() format = "/dev/%s" self.radioBox = GtkTable(2, 6) self.radioBox.set_border_width (5) spacer = GtkLabel("") spacer.set_usize(10, 1) self.radioBox.attach(spacer, 0, 1, 2, 4, FALSE) label = GtkLabel(_("Install LILO boot record on:")) label.set_alignment(0.0, 0.5) self.radioBox.attach(label, 0, 2, 1, 2) self.mbr = GtkRadioButton(None, ("/dev/%s %s" % (boothd, _("Master Boot Record (MBR)")))) self.radioBox.attach(self.mbr, 1, 2, 2, 3) part = GtkRadioButton(self.mbr, ("/dev/%s %s" % (bootpart, _("First sector of boot partition")))) self.radioBox.attach(part, 1, 2, 3, 4) self.linearCheck = GtkCheckButton( _("Use linear mode (needed for some SCSI drives)")) self.linearCheck.set_active(self.todo.liloLinear) self.radioBox.attach(self.linearCheck, 0, 2, 4, 5) label = GtkLabel(_("Kernel parameters") + ":") label.set_alignment(0.0, 0.5) self.appendEntry = GtkEntry() if self.todo.liloAppend: self.appendEntry.set_text(self.todo.liloAppend) box = GtkHBox(FALSE, 5) box.pack_start(label) box.pack_start(self.appendEntry) alignment = GtkAlignment() alignment.set(0.0, 0.5, 0, 1.0) alignment.add(box) self.radioBox.attach(alignment, 0, 2, 5, 6) box = GtkVBox (FALSE, 0) optionBox = GtkVBox (FALSE, 5) optionBox.set_border_width (5) self.bootdisk = GtkCheckButton (_("Create boot disk")) self.bootdisk.set_active (TRUE) optionBox.pack_start (self.bootdisk) self.lilo = GtkCheckButton (_("Do not install LILO")) self.lilo.set_active (FALSE) self.lilo.connect ("toggled", self.toggled) optionBox.pack_start (self.lilo, FALSE) box.pack_start (optionBox, FALSE) box.pack_start (GtkHSeparator (), FALSE) box.pack_start (self.radioBox, FALSE) self.imageList = GtkCList (4, ( _("Default"), _("Device"), _("Partition type"), _("Boot label"))) self.imageList.connect("select_row", self.labelSelected) sortedKeys = self.images.keys() sortedKeys.sort() self.default = None count = 0 for n in sortedKeys: (label, type) = self.images[n] self.imageList.append(("", "/dev/" + n, self.typeName(type), label)) if (label == "linux"): self.default = count self.imageList.set_pixmap(count, 0, self.checkMark) count = count + 1 self.imageList.columns_autosize () self.imageList.column_title_passive (1) self.imageList.set_border_width (5) self.imageList.set_column_justification(2, JUSTIFY_CENTER) self.deviceLabel = GtkLabel(_("Partition") + ":") self.typeLabel = GtkLabel(_("Type") + ":") tempBox = GtkHBox(TRUE) self.deviceLabel.set_alignment(0.0, 0.0) self.typeLabel.set_alignment(0.0, 0.0) tempBox.pack_start(self.deviceLabel, FALSE) tempBox.pack_start(self.typeLabel, FALSE) self.defaultCheck = GtkCheckButton("Default boot image") self.defaultCheck.connect("toggled", self.defaultUpdated) # Alliteration! self.labelLabel = GtkLabel(_("Boot label") + ":") self.labelEntry = GtkEntry(15) self.labelEntry.connect("changed", self.labelUpdated) tempBox2 = GtkHBox(FALSE, 5) self.labelLabel.set_alignment(0.0, 0.5) tempBox2.pack_start(self.labelLabel, FALSE) tempBox2.pack_start(self.labelEntry, FALSE) self.editBox = GtkVBox () self.editBox.pack_start (tempBox, FALSE) self.editBox.pack_start (self.defaultCheck, FALSE) self.editBox.pack_start (tempBox2, FALSE) self.editBox.set_border_width (5) box.pack_start (GtkHSeparator (), FALSE) box.pack_start (self.editBox, FALSE) self.imageList.set_selection_mode (SELECTION_BROWSE) sw = GtkScrolledWindow () sw.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC) sw.add (self.imageList) box.pack_start (sw, TRUE) return box