diff options
author | Mike Fulbright <msf@redhat.com> | 2000-04-19 21:07:22 +0000 |
---|---|---|
committer | Mike Fulbright <msf@redhat.com> | 2000-04-19 21:07:22 +0000 |
commit | 83aa244cd3c83ad0fb3c7831a351e91e172f8e07 (patch) | |
tree | b8401cc220a460d440def7f61802c5d40d125f50 /iw/account_gui.py | |
parent | c57c049b2cf8f8d37e045d6eed01e575d530bc98 (diff) | |
download | anaconda-83aa244cd3c83ad0fb3c7831a351e91e172f8e07.tar.gz anaconda-83aa244cd3c83ad0fb3c7831a351e91e172f8e07.tar.xz anaconda-83aa244cd3c83ad0fb3c7831a351e91e172f8e07.zip |
Renamed account.py to account_gui.py
Diffstat (limited to 'iw/account_gui.py')
-rw-r--r-- | iw/account_gui.py | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/iw/account_gui.py b/iw/account_gui.py new file mode 100644 index 000000000..1efe27596 --- /dev/null +++ b/iw/account_gui.py @@ -0,0 +1,283 @@ +from gtk import * +from iw import * +from translate import _ +import re +import string + +class AccountWindow (InstallWindow): + + userAccountMatch = re.compile("([A-Za-z])([A-Za-z0-9])*") + + def __init__ (self, ics): + InstallWindow.__init__ (self, ics) + + self.todo = ics.getToDo () + ics.setTitle (_("Account Configuration")) + ics.readHTML ("accts") + + def getNext (self): + if not self.__dict__.has_key("pw"): return None + + self.todo.rootpassword.set (self.pw.get_text ()) + accounts = [] + for n in range(len(self.passwords.keys())): + accounts.append((self.userList.get_text(n, 0), + self.userList.get_text(n, 1), + self.passwords[self.userList.get_text(n, 0)])) + self.todo.setUserList(accounts) + return None + + 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 (_("Root password accepted.")) + else: + if len (pw) < 6: + self.rootStatus.set_text (_("Root password is too short.")) + else: + self.rootStatus.set_text (_("Root password does not match.")) + + self.ics.setNextEnabled (FALSE) + + def userOkay(self, *args): + accountName = self.accountName.get_text() + password1 = self.userPass1.get_text() + password2 = self.userPass2.get_text() + + if (password1 and password1 == password2 and + self.userAccountMatch.search(accountName) and + len(accountName) <= 8) and accountName != "root": + valid = 1 + else: + valid = 0 + + if (self.editingUser != None): + self.edit.set_sensitive(valid) + self.add.set_sensitive(0) + else: + self.edit.set_sensitive(0) + self.add.set_sensitive(valid) + + def userSelected(self, *args): + index = self.userList.selection + if (not index): return + index = index[0] + accountName = self.userList.get_text(index, 0) + fullName = self.userList.get_text(index, 1) + password = self.passwords[accountName] + + self.editingUser = index + self.accountName.set_text(accountName) + self.userPass1.set_text(password) + self.userPass2.set_text(password) + self.fullName.set_text(fullName) + + def addUser(self, widget, *args): + accountName = self.accountName.get_text() + password1 = self.userPass1.get_text() + password2 = self.userPass2.get_text() + fullName = self.fullName.get_text() + + if not (accountName and password1 and (password1 == password2)): + return + if accountName == "root": + return + + if self.passwords.has_key (accountName): + return + + if (self.editingUser != None): + index = self.editingUser + self.userList.set_text(index, 0, accountName) + self.userList.set_text(index, 1, fullName) + else: + index = self.userList.append((accountName, fullName)) + self.accountName.grab_focus () + self.passwords[accountName] = password1 + self.newUser() + + def editUser(self, widget, *args): + index = self.userList.selection + if (not index): return + index = index[0] + accountName = self.userList.get_text(index, 0) + + self.editingUser = None + del self.passwords[accountName] + self.userList.remove(index) + self.addUser (None) + + def deleteUser(self, *args): + index = self.userList.selection + if (not index): return + index = index[0] + accountName = self.userList.get_text(index, 0) + + del self.passwords[accountName] + self.userList.remove(index) + self.newUser() + + def newUser(self, *args): + self.editingUser = None + self.accountName.set_text("") + self.userPass1.set_text("") + self.userPass2.set_text("") + self.fullName.set_text("") + + def filter(self, widget, text, len, pos): + # XXX this doesn't check copy/pase + if len != 1: + return + + # first character case: + if not widget.get_text (): + if (text[0] not in string.uppercase and + text[0] not in string.lowercase): + widget.emit_stop_by_name ("insert-text") + + # everything else: + if (text[0] not in string.uppercase and + text[0] not in string.lowercase and + text[0] not in string.digits and + text[0] not in [ '.', '-', '_' ]): + widget.emit_stop_by_name ("insert-text") + + def getScreen (self): + self.passwords = {} + self.editingUser = None + + box = GtkVBox () + im = self.ics.readPixmap ("root-password.png") + if im: + im.render () + pix = im.make_pixmap () + a = GtkAlignment () + a.add (pix) + a.set (0.0, 0.0, 0.0, 0.0) + box.pack_start (a, FALSE) + + forward = lambda widget, box=box: box.focus (DIR_TAB_FORWARD) + + table = GtkTable (2, 2) + table.set_row_spacings (5) + table.set_col_spacings (5) + + pass1 = GtkLabel (_("Root Password: ")) + pass1.set_alignment (0.0, 0.5) + table.attach (pass1, 0, 1, 0, 1, FILL, 0, 10) + pass2 = GtkLabel (_("Confirm: ")) + pass2.set_alignment (0.0, 0.5) + table.attach (pass2, 0, 1, 1, 2, FILL, 0, 10) + self.pw = GtkEntry (128) + self.pw.connect ("activate", forward) + self.pw.connect ("changed", self.rootPasswordsMatch) + self.pw.set_visibility (FALSE) + self.confirm = GtkEntry (128) + self.confirm.connect ("activate", forward) + self.confirm.set_visibility (FALSE) + self.confirm.connect ("changed", self.rootPasswordsMatch) + table.attach (self.pw, 1, 2, 0, 1, FILL|EXPAND, 5) + table.attach (self.confirm, 1, 2, 1, 2, FILL|EXPAND, 5) + + pw = self.todo.rootpassword.getPure() + if pw: + self.pw.set_text(pw) + self.confirm.set_text(pw) + + + box.pack_start (table, FALSE) + + # root password statusbar + self.rootStatus = GtkLabel ("") + self.rootPasswordsMatch () + box.pack_start (self.rootStatus, FALSE) + + box.pack_start (GtkHSeparator (), FALSE, padding=3) + + table = GtkTable (2, 3) + table.set_row_spacings(5) + table.set_col_spacings(5) + + entrytable = GtkTable (4, 4) + entrytable.set_row_spacings(5) + entrytable.set_col_spacings(5) + self.entrytable = entrytable + + self.accountName = GtkEntry (8) + self.accountName.connect ("activate", forward) + self.accountName.connect ("changed", self.userOkay) + self.accountName.connect ("insert-text", self.filter) + + self.accountName.set_usize (50, -1) + + self.fullName = GtkEntry () + self.fullName.connect ("activate", self.addUser) + self.userPass1 = GtkEntry (128) + self.userPass1.connect ("activate", forward) + self.userPass1.connect ("changed", self.userOkay) + self.userPass2 = GtkEntry (128) + self.userPass2.connect ("activate", forward) + self.userPass2.connect ("changed", self.userOkay) + self.userPass1.set_visibility (FALSE) + self.userPass2.set_visibility (FALSE) + self.userPass1.set_usize (50, -1) + self.userPass2.set_usize (50, -1) + + label = GtkLabel (_("Account Name") + ": ") + label.set_alignment (0.0, 0.5) + entrytable.attach (label, 0, 1, 0, 1, FILL, 0, 10) + entrytable.attach (self.accountName, 1, 2, 0, 1, FILL|EXPAND) + label = GtkLabel (_("Password") + ": ") + label.set_alignment (0.0, 0.5) + entrytable.attach (label, 0, 1, 1, 2, FILL, 0, 10) + entrytable.attach (self.userPass1, 1, 2, 1, 2, FILL|EXPAND) + label = GtkLabel (_("Password (confirm)") + ": ") + label.set_alignment (0.0, 0.5) + entrytable.attach (label, 2, 3, 1, 2, FILL, 0, 10) + entrytable.attach (self.userPass2, 3, 4, 1, 2, FILL|EXPAND) + label = GtkLabel (_("Full Name") + ": ") + label.set_alignment (0.0, 0.5) + entrytable.attach (label, 0, 1, 2, 3, FILL, 0, 10) + entrytable.attach (self.fullName, 1, 4, 2, 3, FILL|EXPAND) + + table.attach (entrytable, 0, 4, 0, 1, + xoptions = EXPAND | FILL, + yoptions = EXPAND | FILL) + + self.add = GtkButton (_("Add")) + self.add.connect("clicked", self.addUser) + self.edit = GtkButton (_("Edit")) + self.edit.connect("clicked", self.editUser) + delete = GtkButton (_("Delete")) + delete.connect("clicked", self.deleteUser) + new = GtkButton (_("New")) + new.connect("clicked", self.newUser) + + bb = GtkHButtonBox () + bb.set_border_width (5) + bb.pack_start (self.add) + bb.pack_start (self.edit) + bb.pack_start (delete) + bb.pack_start (new) + + box.pack_start (table, FALSE) + box.pack_start (bb, FALSE) + self.userList = GtkCList (2, (_("Account Name"), _("Full Name"))) + for x in range (2): + self.userList.set_selectable (x, FALSE) + + self.userList.connect("select_row", self.userSelected) + box.pack_start (self.userList, TRUE) + + index = 0 + for (user, name, password) in self.todo.getUserList(): + self.userList.append((user, name)) + self.passwords[user] = password + index = index + 1 + + self.userOkay() + box.set_border_width (5) + return box |