summaryrefslogtreecommitdiffstats
path: root/iw/account_gui.py
diff options
context:
space:
mode:
authorMike Fulbright <msf@redhat.com>2000-04-19 21:07:22 +0000
committerMike Fulbright <msf@redhat.com>2000-04-19 21:07:22 +0000
commit83aa244cd3c83ad0fb3c7831a351e91e172f8e07 (patch)
treeb8401cc220a460d440def7f61802c5d40d125f50 /iw/account_gui.py
parentc57c049b2cf8f8d37e045d6eed01e575d530bc98 (diff)
downloadanaconda-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.py283
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