diff options
Diffstat (limited to 'build_tools/larch7/larch0/gui/front/page_larchify.py')
-rw-r--r-- | build_tools/larch7/larch0/gui/front/page_larchify.py | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/build_tools/larch7/larch0/gui/front/page_larchify.py b/build_tools/larch7/larch0/gui/front/page_larchify.py deleted file mode 100644 index 9868727..0000000 --- a/build_tools/larch7/larch0/gui/front/page_larchify.py +++ /dev/null @@ -1,248 +0,0 @@ -# page_larchify.py - Handler for the project settings page -# -# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) -# -# This file is part of the larch project. -# -# larch is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# larch is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with larch; if not, write to the Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -#---------------------------------------------------------------------------- -# 2010.07.13 - -USERINFO = ['pw', 'maingroup', 'uid', 'skel', 'xgroups', 'expert'] - -class Larchify: - def __init__(self): - ui.widgetlist(fss('fetch_layout', 'page_larchify.uim')) - - ui.connectlist( - (':build*clicked', self.build), - (':ssh*toggled', self.sshtoggle), - (':locales*clicked', self.locales), - (':rcconf*clicked', self.rcconf), - (':initcpio*clicked', self.initcpio), - (':overlay*clicked', self.overlay), - (':utable*clicked', self.uedit), - (':useradd*clicked', self.useradd), - (':userdel*clicked', self.userdel), - (':rootpwb*clicked', self.rootpw), - ) - - self.userheaders = self.data('uheaders') - - - def data(self, key): - return ui.command('larchify_page_data.get', key) - - - def enter(self): - """This is called when the page is entered/selected/shown. - It performs initializations which depend on the state. - """ - docviewer.gohome('gui_larchify.html') - - # Check that it could possibly be an Arch installation - idir = fss('get_installation_dir') - couldBeArch = fss('isdir', ':var/lib/pacman/local') - ui.command(':build.enable', couldBeArch) - if not couldBeArch: - run_error(_("No Arch installation at %s") % idir) - - # ssh keys - sshon = fss('isfile', ':usr/bin/ssh-keygen') - ui.command(':ssh.enable', sshon) - - if fss('isfile', 'profile:nosshkeys'): - sshon = False - ui.command(":ssh.set", sshon) - - # users table - idir_normal = idir != '/' - ui.command(':users.enable', idir_normal) - if idir_normal: - # Fetch users information - fss('newUserinfo') - self.readuserinfo() - - # Root password - self.showrootpw() - - self.reenter() - - - def reenter(self): - """These also need resetting after a build run. - """ - # Whether there is an old system.sqf to reuse? - ossqf = fss('oldsqf') - if not ossqf: - ui.command(':oldsquash.set', False) - ui.command(':oldsquash.enable', ossqf) - - # Whether there is a set of old glibc locales to reuse? - olcl = fss('oldlocales') - if not olcl: - ui.command(':oldlocales.set', False) - ui.command(':oldlocales.enable', olcl) - -#TODO: Remove hack if the underlying bug gets fixed - ui.command(":larchify_advanced.enable_hack") - - - def readuserinfo(self, select=None): - """'select' should be a username, defaulting to the first entry. - """ - self.usersel = 0 - self.userlist = [] - i = 0 - for u in fss('allusers'): - self.userlist.append(self.userinfolist(u)) - if u == select: - self.usersel = i - i += 1 - ui.command(':utable.set', self.userlist, self.usersel) - - - def userinfolist(self, user): - return [user] + fss('getuserinfo', user, USERINFO) - - - def uedit(self, row, column): - if self.usersel == row: - uname = self.userlist[row][0] - ulcell = self.userlist[row][column] - if column == 4: - ok, text = self.select_skel(ulcell) - else: - ok, text = ui.command('textLineDialog', - self.userheaders[column] + ':', 'larchify', ulcell) - text = text.strip() - if ok: - try: - if (column == 0) and (text != ''): - # Rename the user, by adding a new one and deleting - # the old - uname = text - fss('newuser', uname) - i = 0 - for f in USERINFO: - i += 1 - fss('userset', uname, f, self.userlist[row][i]) - if not fss('deluser', ulcell): - run_error(self.data('rn_error')) - - else: - fss('userset', uname, USERINFO[column-1], text) - fss('saveusers') - - except: - run_error(self.data('ud_error')) - self.readuserinfo(uname) - - else: - self.usersel = row - - - def select_skel(self, current): - # Present a list of available 'skel' folders - self.skellist = [self.data('def_skel')] - for f in fss('listskels'): - self.skellist.append(f.rsplit('/skel_', 1)[1]) - try: - i = self.skellist.index(current) - except: - i = 0 - ok, skeli = ui.command('listDialog', self.data('skel_lbl'), - self.data('skel_ttl'), self.skellist, i) - if ok: - return (True, '' if skeli == self.skellist[0] - else skeli.split()[0]) - return (False, '') - - - def useradd(self): - ok, name = ui.command('textLineDialog', self.data('newlogin')) - if ok: - name = name.strip() - if name != '' and fss('newuser', name): - self.userlist.append(self.userinfolist(name)) - self.usersel = len(self.userlist) -1 - ui.command(':utable.set', self.userlist, self.usersel) - - - def userdel(self): - if self.usersel >= 0: - user = self.userlist[self.usersel][0] - if fss('deluser', user): - del(self.userlist[self.usersel]) - lu = len(self.userlist) - if lu: - if lu <= self.usersel: - self.usersel -= 1 - ui.command(':utable.set', self.userlist, self.usersel) - - - def showrootpw(self): - self.rootpw = fss('readfile', 'profile:rootpw', trap=False) - if self.rootpw == None: - self.rootpw = "" - ui.command(':rootpwe.text', self.rootpw) - - - def rootpw(self): - ok, pw = ui.command('textLineDialog', self.data('newrootpw'), - "larchify", self.rootpw) - if ok: - pw = pw.strip() - if pw: - fss('savefile', 'profile:rootpw', pw) - else: - fss('rm_rf', 'profile:rootpw') - self.showrootpw() - - - def sshtoggle(self, on): - """Whether the system ssh keys are pregenerated - depends on the presence of the profile file 'nosshkeys' - (and of course on openssh being installed). - """ - sshoff = fss('isfile', 'profile:nosshkeys') - if on: - if sshoff: - fss('rm_rf', 'profile:nosshkeys') - elif not sshoff: - fss('savefile', 'profile:nosshkeys', "Don't pregenerate ssh keys") - - - def locales(self): - edit('profile:rootoverlay/etc/locale.gen', 'install:etc/locale.gen') - - - def rcconf(self): - edit('profile:rootoverlay/etc/rc.conf', 'install:etc/rc.conf') - - - def initcpio(self): - edit('profile:rootoverlay/etc/mkinitcpio.conf.larch0', - 'install:etc/mkinitcpio.conf.larch0') - - - def overlay(self): - fss('browse', 'profile:rootoverlay') - - - def build(self): - larchscripts.larchify(ui.command(':oldsquash.active'), - ui.command(':oldlocales.active')) |