diff options
author | bfox <bfox> | 2001-07-02 15:54:32 +0000 |
---|---|---|
committer | bfox <bfox> | 2001-07-02 15:54:32 +0000 |
commit | 135cd481107633bb9c3bd6211490411c91745a92 (patch) | |
tree | ef1fb3ef14c919306e265e826f45184430c846e7 | |
parent | 1454f9c303163156c20e735f76b24d88a7b1ec6c (diff) | |
download | anaconda-135cd481107633bb9c3bd6211490411c91745a92.tar.gz anaconda-135cd481107633bb9c3bd6211490411c91745a92.tar.xz anaconda-135cd481107633bb9c3bd6211490411c91745a92.zip |
renaming lilo_text.py to bootloader_text.py
-rw-r--r-- | textw/bootloader_text.py | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/textw/bootloader_text.py b/textw/bootloader_text.py new file mode 100644 index 000000000..d362fcff7 --- /dev/null +++ b/textw/bootloader_text.py @@ -0,0 +1,255 @@ +#import gettext +from snack import * +from constants_text import * +from translate import _ +from flags import flags +import string +import iutil +# XXX +#if iutil.getArch() == 'i386': +# import edd + +#cat = gettext.Catalog ("anaconda", "/usr/share/locale") +#_ = cat.gettext + +class BootloaderAppendWindow: + + def __call__(self, screen, dispatch, bl, fsset, diskSet): + t = TextboxReflowed(53, + _("A few systems will need to pass special options " + "to the kernel at boot time for the system to function " + "properly. If you need to pass boot options to the " + "kernel, enter them now. If you don't need any or " + "aren't sure, leave this blank.")) + + cb = Checkbox(_("Use LILO bootloader (instead of Grub)"), + isOn = not bl.useGrub()) + entry = Entry(48, scroll = 1, returnExit = 1) + entry.set(bl.args.get()) + + buttons = ButtonBar(screen, [TEXT_OK_BUTTON, (_("Skip"), "skip"), + TEXT_BACK_BUTTON ] ) + + grid = GridFormHelp(screen, _("Bootloader Configuration"), "kernelopts", 1, 4) + grid.add(t, 0, 0, padding = (0, 0, 0, 1)) + +# XXX +# if not edd.detect(): +# grid.add(cb, 0, 1, padding = (0, 0, 0, 1)) + + grid.add(entry, 0, 2, padding = (0, 0, 0, 1)) + grid.add(buttons, 0, 3, growx = 1) + + result = grid.runOnce () + button = buttons.buttonPressed(result) + + if button == TEXT_BACK_CHECK: + return INSTALL_BACK + + if button == "skip": + rc = ButtonChoiceWindow(screen, _("Skip Bootloader"), + _("You have elected to not install " + "any bootloader. It is strongly recommended " + "that you install a bootloader unless " + "you have an advanced need. A bootloader " + "is almost always required in order " + "to reboot your system into Linux " + "directly from the hard drive.\n\n" + "Are you sure you want to skip bootloader " + "installation?"), + [ (_("Yes"), "yes"), (_("No"), "no") ], + width = 50) + dispatch.skipStep("instbootloader", skip = (rc == "yes")) + else: + dispatch.skipStep("instbootloader", 0) + + bl.args.set(entry.value()) + bl.setUseGrub(not cb.value()) + + return INSTALL_OK + +class BootloaderWindow: + def __call__(self, screen, dispatch, bl, fsset, diskSet): + if dispatch.stepInSkipList("instbootloader"): return INSTALL_NOOP + + choices = fsset.bootloaderChoices(diskSet) + if len(choices) == 1: + bl.setDevice(choices[0][0]) + return INSTALL_NOOP + + format = "/dev/%-11s %s" + locations = [] + default = 0 + for (device, desc) in choices: + if device == bl.getDevice(): + default = len(locations) + locations.append (format % (device, _(desc))) + + (rc, sel) = ListboxChoiceWindow (screen, _("Bootloader Configuration"), + _("Where do you want to install the bootloader?"), + locations, default = default, + buttons = [ TEXT_OK_BUTTON, TEXT_BACK_BUTTON ], + help = "bootloaderlocation") + + if rc == TEXT_BACK_CHECK: + return INSTALL_BACK + + bl.setDevice(choices[sel][0]) + + return INSTALL_OK + +class BootloaderImagesWindow: + def validBootloaderLabel(self, label): + i=0 + while i < len(label): + cur = label[i] + if cur == ' ' or cur == '#' or cur == '$' or cur == '=': + return 0 + i = i + 1 + + return 1 + + + def editItem(self, screen, partition, itemLabel, allowNone=0): + devLabel = Label(_("Device") + ":") + bootLabel = Label(_("Boot label") + ":") + device = Label("/dev/" + partition) + newLabel = Entry (20, scroll = 1, returnExit = 1, text = itemLabel) + + buttons = ButtonBar(screen, [TEXT_OK_BUTTON, (_("Clear"), "clear"), + (_("Cancel"), "cancel")]) + + subgrid = Grid(2, 2) + subgrid.setField(devLabel, 0, 0, anchorLeft = 1) + subgrid.setField(device, 1, 0, padding = (1, 0, 0, 0), anchorLeft = 1) + subgrid.setField(bootLabel, 0, 1, anchorLeft = 1) + subgrid.setField(newLabel, 1, 1, padding = (1, 0, 0, 0), anchorLeft = 1) + + g = GridFormHelp(screen, _("Edit Boot Label Please"), "bootlabel", 1, 2) + g.add(subgrid, 0, 0, padding = (0, 0, 0, 1)) + g.add(buttons, 0, 1, growx = 1) + + result = "" + while (result != TEXT_OK_CHECK and result != TEXT_F12_CHECK and result != newLabel): + result = g.run() + + if (buttons.buttonPressed(result)): + result = buttons.buttonPressed(result) + + if (result == "cancel"): + screen.popWindow () + return itemLabel + elif (result == "clear"): + newLabel.set("") + elif (result == TEXT_OK_CHECK or result == TEXT_F12_CHECK or result == newLabel): + if not allowNone and not newLabel.value(): + ButtonChoiceWindow (screen, _("Invalid Boot Label"), + _("Boot label may not be empty."), + [ TEXT_OK_BUTTON ]) + result = "" + elif not self.validBootloaderLabel(newLabel.value()): + ButtonChoiceWindow (screen, _("Invalid Boot Label"), + _("Boot label contains " + "illegal characters."), + [ TEXT_OK_BUTTON ]) + result = "" + + screen.popWindow() + + return newLabel.value() + + def formatDevice(self, type, label, device, default): + if (type == "ext2"): + type = "Linux Native" + elif (type == "FAT"): + type = "DOS/Windows" + elif (type == "ntfs" or type == "hpfs"): + type = "OS/2 / Windows NT" + else: + type = "Other" + + if default == device: + default = '*' + else: + default = "" + + return "%-10s %-25s %-7s %-10s" % ( "/dev/" + device, type, default, label) + + def __call__(self, screen, dispatch, bl, fsset, diskSet): + if dispatch.stepInSkipList("instbootloader"): return INSTALL_NOOP + + images = bl.images.getImages() + default = bl.images.getDefault() + + listboxLabel = Label("%-10s %-25s %-7s %-10s" % + ( _("Device"), _("Partition type"), _("Default"), _("Boot label"))) + listbox = Listbox(5, scroll = 1, returnExit = 1) + + sortedKeys = images.keys() + sortedKeys.sort() + + for dev in sortedKeys: + (label, type) = images[dev] + listbox.append(self.formatDevice(type, label, dev, default), dev) + + listbox.setCurrent(dev) + + buttons = ButtonBar(screen, [ TEXT_OK_BUTTON, (_("Edit"), "edit"), + TEXT_BACK_BUTTON ] ) + + text = TextboxReflowed(55, + _("The boot manager Red Hat uses can boot other " + "operating systems as well. You need to tell me " + "what partitions you would like to be able to boot " + "and what label you want to use for each of them.")) + + g = GridFormHelp(screen, _("Bootloader Configuration"), + "bootloaderlabels", 1, 4) + g.add(text, 0, 0, anchorLeft = 1) + g.add(listboxLabel, 0, 1, padding = (0, 1, 0, 0), anchorLeft = 1) + g.add(listbox, 0, 2, padding = (0, 0, 0, 1), anchorLeft = 1) + g.add(buttons, 0, 3, growx = 1) + + rootdev = fsset.getEntryByMountPoint("/").device.getDevice() + + result = None + while (result != TEXT_OK_CHECK and result != TEXT_BACK_CHECK and result != TEXT_F12_CHECK): + result = g.run() + if (buttons.buttonPressed(result)): + result = buttons.buttonPressed(result) + + if (result == "edit" or result == listbox): + item = listbox.current() + (label, type) = images[item] + + label = self.editItem(screen, item, label, allowNone = (rootdev != item and item != default)) + images[item] = (label, type) + if (default == item and not label): + default = "" + listbox.replace(self.formatDevice(type, label, item, default), item) + listbox.setCurrent(item) +# elif result == "F2": + elif result == " ": + item = listbox.current() + (label, type) = images[item] + if (label): + if (default): + (oldLabel, oldType) = images[default] + listbox.replace(self.formatDevice(oldType, oldLabel, default, + ""), default) + default = item + listbox.replace(self.formatDevice(type, label, item, default), + item) + listbox.setCurrent(item) + + screen.popWindow() + + if (result == TEXT_BACK_CHECK): + return INSTALL_BACK + + for (dev, (label, type)) in images.items(): + bl.images.setImageLabel(dev, label) + bl.images.setDefault(default) + + return INSTALL_OK + |