summaryrefslogtreecommitdiffstats
path: root/iw/bootloaderpassword_gui.py
diff options
context:
space:
mode:
Diffstat (limited to 'iw/bootloaderpassword_gui.py')
-rw-r--r--iw/bootloaderpassword_gui.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/iw/bootloaderpassword_gui.py b/iw/bootloaderpassword_gui.py
new file mode 100644
index 000000000..0cf274987
--- /dev/null
+++ b/iw/bootloaderpassword_gui.py
@@ -0,0 +1,86 @@
+from iw_gui import *
+
+from gtk import *
+from gnome.ui import *
+from translate import _, N_
+import GdkImlib
+import gui
+
+class BootloaderPasswordWindow (InstallWindow):
+
+ def getNext (self):
+ if self.usegrubpasscb.get_active():
+ self.bl.setPassword(self.pw.get_text(), isCrypted = 0)
+ else:
+ self.bl.setPassword(None)
+
+ def toggle (self, *args):
+ self.passtable.set_sensitive(self.usegrubpasscb.get_active())
+ self.ics.setNextEnabled(not self.usegrubpasscb.get_active())
+
+ def rootPasswordsMatch (self, *args):
+ pw = self.pw.get_text ()
+ confirm = self.confirm.get_text ()
+
+ if pw == confirm and len (pw) >= 6:
+ self.ics.setNextEnabled (TRUE)
+ self.rootStatus.set_text (_("Password accepted."))
+ else:
+ if not pw and not confirm:
+ self.rootStatus.set_text ("")
+ elif len (pw) < 6:
+ self.rootStatus.set_text (_("Password is too short."))
+ else:
+ self.rootStatus.set_text (_("Passwords do not match."))
+
+ self.ics.setNextEnabled (FALSE)
+
+ def getScreen(self, bl):
+ self.bl = bl
+
+ box = GtkVBox(FALSE, 5)
+ box.set_border_width (5)
+
+ self.forward = lambda widget, box=box: box.focus (DIR_TAB_FORWARD)
+
+ self.passtable = GtkTable (3, 3)
+ self.passtable.set_row_spacings (5)
+ self.passtable.set_col_spacings (5)
+ grubpassinfo = GtkLabel(_("A GRUB password prevents users from passing arbitrary options to the kernel. For highest security, we recommend setting a password, but this is not necessary for more casual users."))
+ self.password = None
+ grubpassinfo.set_line_wrap(TRUE)
+ grubpassinfo.set_usize(400, -1)
+ grubpassinfo.set_alignment(0.0,0.0)
+ box.pack_start(grubpassinfo, FALSE)
+
+ self.usegrubpasscb = GtkCheckButton(_("Use a GRUB Password?"))
+ box.pack_start(self.usegrubpasscb, FALSE)
+
+ self.passtable.attach(GtkLabel(_("Password:")), 0, 1, 2, 3, FILL, 0, 10)
+ self.pw = GtkEntry (16)
+ self.pw.set_visibility (FALSE)
+ self.passtable.attach(self.pw, 1, 2, 2, 3, FILL, 0, 10)
+ self.passtable.attach(GtkLabel(_("Confirm:")), 0, 1, 3, 4, FILL, 0, 10)
+ self.confirm = GtkEntry (16)
+ self.confirm.set_visibility (FALSE)
+ self.passtable.attach(self.confirm, 1, 2, 3, 4, FILL, 0, 10)
+
+ if self.bl.getPassword():
+ passwd = self.bl.getPassword()
+ self.pw.set_text(passwd)
+ self.confirm.set_text(passwd)
+ self.usegrubpasscb.set_active(TRUE)
+
+ self.pw.connect ("changed", self.rootPasswordsMatch)
+ self.pw.connect ("activate", self.forward)
+ self.confirm.connect ("changed", self.rootPasswordsMatch)
+ self.confirm.connect ("activate", self.forward)
+ self.passtable.set_sensitive(self.usegrubpasscb.get_active())
+ self.usegrubpasscb.connect("toggled", self.toggle)
+
+ self.rootStatus = GtkLabel(_("Please enter password"))
+ self.passtable.attach(self.rootStatus, 1, 2, 4, 5, FILL, 0, 10)
+ box.pack_start(self.passtable, FALSE)
+
+ return box
+