summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--text.py142
1 files changed, 85 insertions, 57 deletions
diff --git a/text.py b/text.py
index 7f4ab0958..bf1fc98ed 100644
--- a/text.py
+++ b/text.py
@@ -263,53 +263,58 @@ class RootPasswordWindow:
return INSTALL_OK
class UsersWindow:
- def editWindow (self, user, edit = 0):
+ def editWindow (self, user, text, edit = 0, cancelText = None):
+ if (not cancelText):
+ cancelText = _("Cancel")
+
userid = Entry (8, user["id"])
currentid = user["id"]
- fullname = Entry (30, user["name"])
+ fullname = Entry (20, user["name"], scroll = 1)
pass1 = Entry (10, user["password"], hidden = 1)
pass2 = Entry (10, user["password"], hidden = 1)
+ if edit:
+ title = _("Edit User")
+ else:
+ title = _("Add User")
+
while 1:
- if edit:
- title = _("Edit User")
- pass1.setFlags (FLAG_DISABLED, FLAGS_SET)
- pass2.setFlags (FLAG_DISABLED, FLAGS_SET)
- else:
- title = _("Add User")
- (rc, ent) = EntryWindow (self.screen, title, "",
- [ (_("User ID"), userid),
- (_("Full Name"), fullname),
- (_("Password"), pass1),
- (_("Password (confirm)"), pass2) ],
- buttons = [ _("OK"), _("Cancel") ])
+ (rc, ent) = EntryWindow (self.screen, title, text,
+ [ (_("User ID"), userid),
+ (_("Full Name"), fullname),
+ (_("Password"), pass1),
+ (_("Password (confirm)"), pass2) ],
+ buttons = [ (_("OK"), "ok"), (cancelText, "cancel") ])
- if rc == string.lower (_("Cancel")):
- return
-
- if not edit:
- if len (pass1.value ()) < 6:
- ButtonChoiceWindow(self.screen, _("Password Length"),
- _("The password must be at least 6 characters "
- "long."),
- buttons = [ _("OK") ], width = 50)
- pass1.set ("")
- pass2.set ("")
- continue
- elif pass1.value () != pass2.value ():
- ButtonChoiceWindow(self.screen, _("Password Mismatch"),
- _("The passwords you entered were different. Please "
- "try again."),
- buttons = [ _("OK") ], width = 50)
- pass1.set ("")
- pass2.set ("")
- continue
-
- if self.users.has_key (userid.value ()) and userid.value () != currentid:
+ if rc == "cancel":
+ return INSTALL_BACK
+ if not len(pass1.value()) and not len(pass2.value()) and \
+ not len(userid.value()) and not len(fullname.value()):
+ return INSTALL_OK
+
+ if len (pass1.value ()) < 6:
+ ButtonChoiceWindow(self.screen, _("Password Length"),
+ _("The password must be at least 6 characters "
+ "long."),
+ buttons = [ _("OK") ], width = 50)
+ pass1.set ("")
+ pass2.set ("")
+ continue
+ elif pass1.value () != pass2.value ():
+ ButtonChoiceWindow(self.screen, _("Password Mismatch"),
+ _("The passwords you entered were different. Please "
+ "try again."),
+ buttons = [ _("OK") ], width = 50)
+ pass1.set ("")
+ pass2.set ("")
+ continue
+
+ if self.users.has_key (userid.value ()) and \
+ userid.value () != currentid:
ButtonChoiceWindow(self.screen, _("User Exists"),
- _("This user id already exists. Choose another."),
- buttons = [ _("OK") ], width = 50)
+ _("This user id already exists. Choose another."),
+ buttons = [ _("OK") ], width = 50)
continue
# XXX FIXME - more data validity checks
@@ -319,20 +324,44 @@ class UsersWindow:
user["password"] = pass1.value ()
break
+ return INSTALL_OK
+
def __call__ (self, screen, todo):
self.users = {}
self.screen = screen
+ user = { "id" : "", "name" : "", "password" : "" }
+
+ if not self.users.keys():
+ rc = self.editWindow(user, _("You should use a normal user "
+ "account for most activities on your system. By not using the "
+ "root account casually, you'll reduce the chance of "
+ "disrupting your system's configuration."),
+ cancelText = _("Back"))
+ if (rc == INSTALL_BACK):
+ return INSTALL_BACK
+ if (not user['id']):
+ return INSTALL_OK
+ self.users[user["id"]] = user
- g = GridForm (screen, _("User Account Setup"), 1, 3)
+ g = GridForm (screen, _("User Account Setup"), 1, 4)
+
+ t = TextboxReflowed(60, _("What user account would you like to have "
+ "on the system? You should have at least one non-root account "
+ "for normal work, but multi-user systems can have any number "
+ "of accounts set up."))
+ g.add(t, 0, 0, anchorLeft = 1, padding = (0, 0, 0, 1))
listformat = "%-15s %-40s"
userformat = "%(id)-15s %(name)-40s"
+ subgrid = Grid(1, 2)
header = listformat % (_("User name"), _("Full Name"))
label = Label (header)
- g.add (label, 0, 0, anchorLeft = 1)
- listbox = Listbox (5, scroll = 1, returnExit = 1, width = 60)
- g.add (listbox, 0, 1, (0, 0, 0, 1))
+ subgrid.setField (label, 0, 0, anchorLeft = 1)
+ listbox = Listbox (5, scroll = 1, returnExit = 1, width = 54)
+ subgrid.setField (listbox, 0, 1, (0, 0, 0, 1), anchorLeft = 1)
+
+ g.add(subgrid, 0, 1)
for user in self.users.values ():
listbox.append (userformat % user, user["id"])
@@ -340,27 +369,29 @@ class UsersWindow:
bb = ButtonBar (screen, ((_("Add"), "add"), (_("Delete"), "delete"),
(_("Edit"), "edit"), (_("OK"), "ok"), (_("Back"), "back")))
- g.add (bb, 0, 2, growx = 1)
+ g.add (bb, 0, 3, growx = 1)
while 1:
result = g.run ()
rc = bb.buttonPressed (result)
- if rc == string.lower (_("Add")):
+ if rc == "add":
user = { "id" : "", "name" : "", "password" : "" }
- self.editWindow (user)
+ self.editWindow (user,
+ _("Enter the information for the user."), 0)
listbox.append (userformat % user, user["id"])
- listbox.setcurrent (user["id"])
+ listbox.setCurrent (user["id"])
self.users[user["id"]] = user
- elif rc == string.lower (_("Delete")):
+ elif rc == "delete":
current = listbox.current ()
listbox.delete (current)
del self.users [current]
- elif rc == string.lower (_("Edit")) or result == listbox:
+ elif rc == "edit" or result == listbox:
current = listbox.current()
user = self.users[current]
- self.editWindow (user, 1)
+ self.editWindow (user,
+ _("Change the information for this user."), 1)
# if the user id changed, we need to delete the old key
# and insert this new one.
if user["id"] != current:
@@ -373,17 +404,14 @@ class UsersWindow:
listbox.replace (userformat % user, user["id"])
self.users [user["id"]] = user
listbox.setCurrent(user["id"])
- elif rc == string.lower (_("OK")):
+ elif rc == "ok" or result == "F12":
dir = INSTALL_OK
break
- elif rc == string.lower (_("Back")):
+ elif rc == "back":
dir = INSTALL_BACK
break
- elif rc == "F12":
- dir = INSTALL_OK
- break
else:
- raise NeverGetHereError, "I shouldn't be here..."
+ raise NeverGetHereError, "I shouldn't be here w/ rc %s..." % rc
screen.popWindow ()
return dir
@@ -1011,7 +1039,7 @@ class LiloImagesWindow:
g.addHotKey("F2")
result = None
- while (result != "ok" and result != "back"):
+ while (result != "ok" and result != "back" and result != "F12"):
result = g.run()
if (buttons.buttonPressed(result)):
result = buttons.buttonPressed(result)
@@ -1351,6 +1379,7 @@ class InstallInterface:
]
self.installSteps = [
+ [_("User Account Setup"), UsersWindow, (self.screen, todo)],
[_("Network Setup"), NetworkWindow, (self.screen, todo),
"network"],
[_("Time zone Setup"), TimezoneWindow, (self.screen, todo, test)],
@@ -1374,7 +1403,6 @@ class InstallInterface:
[_("Authentication"), AuthConfigWindow, (self.screen, todo),
"authentication" ],
[_("Root Password"), RootPasswordWindow, (self.screen, todo)],
- [_("User Account Setup"), UsersWindow, (self.screen, todo)],
[_("Boot Disk"), BootDiskWindow, (self.screen, todo),
"bootdisk" ],
[_("Installation Begins"), BeginInstallWindow, (self.screen, todo)],