[packages/policycoreutils] - updated to 2.2.5 - removed obsolete gui patch

qboosh qboosh at pld-linux.org
Thu Mar 6 21:50:21 CET 2014


commit 67dc9db121c27c7329c5afcd2aa59acf8095b9ec
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Thu Mar 6 21:53:08 2014 +0100

    - updated to 2.2.5
    - removed obsolete gui patch

 policycoreutils-gui.patch | 13865 --------------------------------------------
 policycoreutils.spec      |   145 +-
 2 files changed, 116 insertions(+), 13894 deletions(-)
---
diff --git a/policycoreutils.spec b/policycoreutils.spec
index 4cc095d..c8e6763 100644
--- a/policycoreutils.spec
+++ b/policycoreutils.spec
@@ -9,21 +9,21 @@
 Summary:	SELinux policy core utilities
 Summary(pl.UTF-8):	Podstawowe narzędzia dla polityki SELinux
 Name:		policycoreutils
-Version:	2.1.10
-Release:	2
+Version:	2.2.5
+Release:	1
 # some parts strictly v2, some v2+
 License:	GPL v2
-Group:		Base
+Group:		Applications/System
 #git clone http://oss.tresys.com/git/selinux.git/
-Source0:	http://userspace.selinuxproject.org/releases/20120216/%{name}-%{version}.tar.gz
-# Source0-md5:	fefdede2815cdd2ba8b68599fef1f257
+Source0:	http://userspace.selinuxproject.org/releases/current/%{name}-%{version}.tar.gz
+# Source0-md5:	a2963d7024c5c4ce89f2459d48f91ec8
 Source1:	%{name}-newrole.pamd
 Source2:	%{name}-run_init.pamd
-Patch0:		%{name}-gui.patch
 URL:		http://userspace.selinuxproject.org/trac/wiki
 BuildRequires:	audit-libs-devel
 BuildRequires:	gettext-devel
 %{?with_restorecond:BuildRequires:	glibc-devel >= 6:2.4}
+BuildRequires:	libcap-ng-devel
 BuildRequires:	libcgroup-devel
 BuildRequires:	libselinux-devel >= 2.1.9
 BuildRequires:	libsemanage-devel >= 2.1.6
@@ -32,6 +32,8 @@ BuildRequires:	pam-devel
 BuildRequires:	rpm-perlprov
 BuildRequires:	rpm-pythonprov
 %{!?with_restorecond:BuildRequires:	sed >= 4.0}
+# for sepolicy/sepolgen
+BuildRequires:	setools-devel >= 3
 Requires:	libselinux >= 2.1.9
 Requires:	libsemanage >= 2.1.6
 Requires:	python
@@ -39,6 +41,7 @@ Requires:	python-modules
 Requires:	python-semanage >= 2.0
 # for audit2allow
 Requires:	python-sepolgen
+Obsoletes:	policycoreutils-tools-perl
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -77,18 +80,6 @@ load_policy do wczytywania polityki, setfiles do znaczenia systemu
 plików, newrole do przełączania ról i run_init do uruchamiania we
 właściwym kontekście skryptów zawartych w /etc/rc.d/init.d.
 
-%package tools-perl
-Summary:	policycoreutils tools written in Perl
-Summary(pl.UTF-8):	Zestaw narzędzi i skryptów policycoreutils napisanych w Perlu
-Group:		Base
-Requires:	%{name} = %{version}-%{release}
-
-%description tools-perl
-policycoreutils tools written in Perl.
-
-%description tools-perl -l pl.UTF-8
-Zestaw narzędzi i skryptów policycoreutils napisanych w Perlu.
-
 %package restorecond
 Summary:	restorecond - daemon which corrects contexts of newly created files
 Summary(pl.UTF-8):	restorecond - demon poprawiający konteksty nowo tworzonych plików
@@ -108,9 +99,62 @@ Demon restorecond używa inotify do śledzenia plików wymienionych w
 pliku /etc/selinux/restorecond.conf, aby przy ich tworzeniu upewnić
 się, że mają przypisane właściwe konteksty plików z polityki.
 
+%package sepolicy
+Summary:	SELinux Policy Inspection tool
+Summary(pl.UTF-8):	Narzędzie do inspekcji polityk SELinuksa
+Group:		Applications/System
+Requires:	%{name} = %{version}-%{release}
+Requires:	gobject-introspection
+Requires:	gtk+2 >= 2
+Requires:	python-dbus
+Requires:	python-pygobject >= 2
+Requires:	python-pygobject3 >= 2
+Requires:	python-selinux
+Requires:	python-sepolgen
+Requires:	python-slip-dbus
+
+%description sepolicy
+SELinux Policy Inspection tool.
+
+%description sepolicy -l pl.UTF-8
+Narzędzie do inspekcji polityk SELinuksa.
+
+%package -n bash-completion-%{name}
+Summary:	Bash completion for policycoreutils commands
+Summary(pl.UTF-8):	Bashowe dopełnianie składni poleceń policycoreutils
+Group:		Applications/Shells
+Requires:	%{name} = %{version}-%{release}
+Requires:	bash-completion >= 2
+
+%description -n bash-completion-%{name}
+Bash completion for policycoreutils commands.
+
+%description -n bash-completion-%{name} -l pl.UTF-8
+Bashowe dopełnianie składni poleceń policycoreutils.
+
+%package -n system-config-selinux
+Summary:	Graphical SELinux Management tool
+Summary(pl.UTF-8):	Graficzne narzędzie do zarządzania SELinuksem
+Group:		X11/Applications
+Requires:	%{name} = %{version}-%{release}
+Requires:	%{name}-sepolicy = %{version}-%{release}
+Requires:	python-gnome >= 2
+Requires:	python-pygobject >= 2
+Requires:	python-pygtk-glade >= 2:2
+Requires:	python-pygtk-gtk >= 2:2
+Requires:	python-selinux
+Requires:	polkit
+
+%description -n system-config-selinux
+system-config-selinux provides a graphical interface for managing the
+SELinux configuration.
+
+%description -n system-config-selinux -l pl.UTF-8
+system-config-selinux dostarcza graficzny interfejs do zarządzania
+konfiguracją SELinuksa.
+
 %prep
 %setup -q
-%patch0 -p1
 
 %{!?with_restorecond:sed -i 's/restorecond//' Makefile}
 
@@ -127,14 +171,22 @@ install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_mandir}/man{1,8},/etc/{pam.
 %{__make} install \
 	DESTDIR=$RPM_BUILD_ROOT \
 	MANDIR=$RPM_BUILD_ROOT%{_mandir} \
-	PYTHONLIBDIR=$RPM_BUILD_ROOT%{py_scriptdir}
+	PYTHONLIBDIR=$RPM_BUILD_ROOT%{py_scriptdir} \
+	SYSTEMDDIR=$RPM_BUILD_ROOT/lib/systemd
 
 install %{SOURCE1} $RPM_BUILD_ROOT/etc/pam.d/newrole
 install %{SOURCE2} $RPM_BUILD_ROOT/etc/pam.d/run_init
 :> $RPM_BUILD_ROOT/etc/security/console.apps/run_init
 
+# fix symlink pointing to buildroot
+ln -sf /sbin/load_policy $RPM_BUILD_ROOT%{_sbindir}/load_policy
+
+%py_comp $RPM_BUILD_ROOT%{py_sitedir}/sepolicy
+%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}/sepolicy
 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
+%py_comp $RPM_BUILD_ROOT%{_datadir}/system-config-selinux
+%py_ocomp $RPM_BUILD_ROOT%{_datadir}/system-config-selinux
 %py_postclean
 
 %find_lang %{name}
@@ -155,6 +207,7 @@ fi
 %files -f %{name}.lang
 %defattr(644,root,root,755)
 %doc ChangeLog
+%attr(755,root,root) %{_bindir}/audit2allow
 %attr(755,root,root) %{_bindir}/audit2why
 %attr(755,root,root) %{_bindir}/chcat
 %attr(4755,root,root) %{_bindir}/newrole
@@ -176,19 +229,20 @@ fi
 %attr(755,root,root) %{_sbindir}/setsebool
 %attr(755,root,root) %{_sbindir}/sestatus
 %attr(755,root,root) %{_sbindir}/seunshare
-%{py_sitescriptdir}/*.py[co]
+%{py_sitescriptdir}/seobject.py[co]
 #%attr(754,root,root) /etc/rc.d/init.d/sandbox
 %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/newrole
 %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/run_init
-%config(missingok) /etc/security/console.apps/*
+%config(missingok) /etc/security/console.apps/run_init
 %config(noreplace) %verify(not md5 mtime size) /etc/sestatus.conf
 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/sandbox
 %dir %{_datadir}/sandbox
 %attr(755,root,root) %{_datadir}/sandbox/*.sh
 %attr(755,root,root) %{_datadir}/sandbox/start
+%{_mandir}/man1/audit2allow.1*
+%{_mandir}/man1/audit2why.1*
 %{_mandir}/man1/newrole.1*
 %{_mandir}/man1/secon.1*
-%{_mandir}/man1/audit2why.1*
 %{_mandir}/man5/sandbox.5*
 %{_mandir}/man5/selinux_config.5*
 %{_mandir}/man5/sestatus.conf.5*
@@ -200,26 +254,59 @@ fi
 %{_mandir}/man8/restorecon.8*
 %{_mandir}/man8/run_init.8*
 %{_mandir}/man8/sandbox.8*
-%{_mandir}/man8/semanage.8*
+%{_mandir}/man8/semanage*.8*
 %{_mandir}/man8/semodule*.8*
 %{_mandir}/man8/sestatus.8*
 %{_mandir}/man8/setfiles.8*
 %{_mandir}/man8/setsebool.8*
 %{_mandir}/man8/seunshare.8*
 
-%files tools-perl
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/audit2allow
-%{_mandir}/man1/audit2allow.1*
-
 %if %{with restorecond}
 %files restorecond
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_sbindir}/restorecond
 %attr(754,root,root) /etc/rc.d/init.d/restorecond
+%{systemdunitdir}/restorecond.service
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/selinux/restorecond.conf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/selinux/restorecond_user.conf
 %{_mandir}/man8/restorecond.8*
 %{_sysconfdir}/xdg/autostart/restorecond.desktop
 %{_datadir}/dbus-1/services/org.selinux.Restorecond.service
 %endif
+
+%files sepolicy
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/sepolgen
+%attr(755,root,root) %{_bindir}/sepolicy
+%dir %{py_sitedir}/sepolicy
+%attr(755,root,root) %{py_sitedir}/sepolicy/_policy.so
+%{py_sitedir}/sepolicy/*.py[co]
+%{py_sitedir}/sepolicy/sepolicy.glade
+%dir %{py_sitedir}/sepolicy/help
+%{py_sitedir}/sepolicy/help/__init__.py[co]
+%{py_sitedir}/sepolicy/help/*.png
+%{py_sitedir}/sepolicy/help/*.txt
+%dir %{py_sitedir}/sepolicy/templates
+%{py_sitedir}/sepolicy/templates/*.py[co]
+%{py_sitedir}/sepolicy-1.1-py*.egg-info
+%{_mandir}/man8/sepolgen.8*
+%{_mandir}/man8/sepolicy*.8*
+/etc/dbus-1/system.d/org.selinux.conf
+%{_datadir}/dbus-1/system-services/org.selinux.service
+%{_datadir}/polkit-1/actions/org.selinux.policy
+
+%files -n bash-completion-%{name}
+%defattr(644,root,root,755)
+%{bash_compdir}/semanage
+%{bash_compdir}/sepolicy
+%{bash_compdir}/setsebool
+
+%files -n system-config-selinux
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/system-config-selinux
+%{_datadir}/system-config-selinux
+%{_datadir}/polkit-1/actions/org.selinux.config.policy
+%{_iconsdir}/hicolor/24x24/apps/system-config-selinux.png
+%{_pixmapsdir}/system-config-selinux.png
+%{_mandir}/man8/selinux-polgengui.8*
+%{_mandir}/man8/system-config-selinux.8*
diff --git a/policycoreutils-gui.patch b/policycoreutils-gui.patch
deleted file mode 100644
index 7676626..0000000
--- a/policycoreutils-gui.patch
+++ /dev/null
@@ -1,13865 +0,0 @@
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/booleansPage.py policycoreutils-2.0.62/gui/booleansPage.py
---- nsapolicycoreutils/gui/booleansPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/booleansPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,247 @@
-+#
-+# booleansPage.py - GUI for Booleans page in system-config-securitylevel
-+#
-+# Dan Walsh <dwalsh at redhat.com>
-+#
-+# Copyright 2006, 2007 Red Hat, Inc.
-+#
-+# This program 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.
-+#
-+# This program 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
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import gobject
-+import sys
-+import tempfile
-+import seobject
-+import semanagePage
-+
-+INSTALLPATH='/usr/share/system-config-selinux'
-+sys.path.append(INSTALLPATH)
-+
-+import commands
-+ENFORCING=0
-+PERMISSIVE=1
-+DISABLED=2
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+from glob import fnmatch
-+
-+class Modifier:
-+    def __init__(self,name, on, save):
-+        self.on=on
-+        self.name=name
-+        self.save=save
-+
-+    def set(self,value):
-+        self.on=value
-+        self.save=True
-+
-+    def isOn(self):
-+        return self.on
-+
-+class Boolean(Modifier):
-+    def __init__(self,name, val, save=False):
-+        Modifier.__init__(self,name, val, save)
-+
-+ACTIVE = 0
-+MODULE = 1
-+DESC = 2
-+BOOLEAN = 3
-+
-+class booleansPage:
-+    def __init__(self, xml, doDebug=None):
-+        self.xml = xml
-+        xml.signal_connect("on_lockdown_clicked", self.on_lockdown_clicked)
-+        self.window = self.xml.get_widget("mainWindow").get_root_window()
-+        self.local = False
-+        self.types=[]
-+        self.selinuxsupport = True
-+        self.typechanged = False
-+        self.doDebug = doDebug
-+        self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
-+        self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
-+
-+        # Bring in widgets from glade file.
-+        self.typeHBox = xml.get_widget("typeHBox")
-+        self.booleanSW = xml.get_widget("booleanSW")
-+        self.booleansFilter = xml.get_widget("booleansFilter")
-+        self.booleansFilter.connect("focus_out_event", self.filter_changed)
-+        self.booleansFilter.connect("activate", self.filter_changed)
-+        
-+        self.booleansView = xml.get_widget("booleansView")
-+        self.typeLabel = xml.get_widget("typeLabel")
-+        self.modifySeparator = xml.get_widget("modifySeparator")
-+
-+        self.revertButton = xml.get_widget("booleanRevertButton")
-+        self.revertButton.set_sensitive(self.local)
-+        self.revertButton.connect("clicked", self.on_revert_clicked)
-+        listStore = gtk.ListStore(gobject.TYPE_STRING)
-+        cell = gtk.CellRendererText()
-+
-+        self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.store.set_sort_column_id(1, gtk.SORT_ASCENDING)        
-+        self.booleansView.set_model(self.store)
-+
-+        checkbox = gtk.CellRendererToggle()
-+        checkbox.connect("toggled", self.boolean_toggled)
-+        col = gtk.TreeViewColumn('Active', checkbox, active = ACTIVE)
-+        col.set_clickable(True)
-+        col.set_sort_column_id(ACTIVE)
-+        self.booleansView.append_column(col)
-+
-+        col = gtk.TreeViewColumn("Module", gtk.CellRendererText(), text=MODULE)
-+        col.set_sort_column_id(MODULE)
-+        col.set_resizable(True)
-+        self.booleansView.append_column(col)
-+
-+        col = gtk.TreeViewColumn("Description", gtk.CellRendererText(), text=DESC)
-+	col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
-+        col.set_fixed_width(400)
-+        col.set_sort_column_id(DESC)
-+        col.set_resizable(True)
-+        self.booleansView.append_column(col)
-+
-+        col = gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=BOOLEAN)
-+        col.set_sort_column_id(BOOLEAN)
-+        col.set_resizable(True)
-+        self.booleansView.set_search_equal_func(self.__search)
-+        self.booleansView.append_column(col)
-+        self.filter=""
-+        self.load(self.filter)
-+            
-+    def __search(self, model, col, key, i):
-+        sort_col = self.store.get_sort_column_id()[0]
-+        if sort_col > 0:
-+            val = model.get_value(i, sort_col)
-+            if val.lower().startswith(key.lower()):
-+                return False
-+        return True
-+
-+    def wait(self):
-+        self.window.set_cursor(self.busy_cursor)
-+        semanagePage.idle_func()
-+    
-+    def ready(self):
-+        self.window.set_cursor(self.ready_cursor)
-+        semanagePage.idle_func()
-+    
-+    def deleteDialog(self):
-+        store, iter = self.booleansView.get_selection().get_selected()
-+        if iter == None:
-+            return
-+        boolean = store.get_value(iter, BOOLEAN)
-+        # change cursor
-+        if boolean == None:
-+            return
-+        try:
-+            self.wait()
-+            (rc, out) = commands.getstatusoutput("semanage boolean -d %s" % boolean)
-+            
-+            self.ready()
-+            if rc != 0:
-+                return self.error(out)
-+            self.load(self.filter)
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def filter_changed(self, *arg):
-+        filter =  arg[0].get_text()
-+        if filter != self.filter:
-+            self.load(filter)
-+            self.filter=filter
-+        
-+    def use_menus(self):
-+        return False
-+    
-+    def get_description(self):
-+        return _("Boolean")
-+
-+    def match(self,key, filter=""):
-+        try:
-+            f=filter.lower()
-+            cat=self.booleans.get_category(key).lower()
-+            val=self.booleans.get_desc(key).lower()
-+            k=key.lower()
-+            return val.find(f) >= 0 or k.find(f) >= 0 or cat.find(f) >= 0
-+        except:
-+            return False
-+
-+
-+    def load(self, filter=None):
-+        self.store.clear()
-+        self.booleans = seobject.booleanRecords()
-+        booleansList = self.booleans.get_all(self.local)
-+        for name in booleansList:
-+            rec = booleansList[name]
-+            if self.match(name, filter):
-+                iter=self.store.append()
-+                self.store.set_value(iter, ACTIVE, rec[2] == 1)
-+                self.store.set_value(iter, MODULE, self.booleans.get_category(name))
-+                self.store.set_value(iter, DESC, self.booleans.get_desc(name))
-+                self.store.set_value(iter, BOOLEAN, name)
-+
-+    def boolean_toggled(self, widget, row):
-+        iter = self.store.get_iter(row)
-+        val = self.store.get_value(iter, ACTIVE)
-+        key = self.store.get_value(iter, BOOLEAN)
-+        self.store.set_value(iter, ACTIVE , not val)
-+        self.wait()
-+        setsebool="/usr/sbin/setsebool -P %s=%d" % (key, not val)
-+        commands.getstatusoutput(setsebool)
-+        self.load(self.filter)
-+        self.ready()
-+
-+    def on_revert_clicked(self, button):
-+        self.wait()
-+        setsebool="semanage boolean --deleteall"
-+        commands.getstatusoutput(setsebool)
-+        self.load(self.filter)
-+        self.ready()
-+
-+    def on_lockdown_clicked(self, button):
-+        try:
-+            os.spawnl(os.P_NOWAIT, "/usr/share/system-config-selinux/lockdown.py")
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def on_local_clicked(self, button):
-+        self.local = not self.local
-+        self.revertButton.set_sensitive(self.local)
-+
-+        if self.local:
-+            button.set_label(_("all"))
-+        else:
-+            button.set_label(_("Customized"))
-+
-+        self.load(self.filter)
-+        return True
-+        
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/domainsPage.py policycoreutils-2.0.62/gui/domainsPage.py
---- nsapolicycoreutils/gui/domainsPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/domainsPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,154 @@
-+## domainsPage.py - show selinux domains
-+## Copyright (C) 2009 Red Hat, Inc.
-+
-+## This program 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.
-+
-+## This program 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 this program; if not, write to the Free Software
-+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+## Author: Dan Walsh
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import commands
-+import gobject
-+import sys
-+import seobject
-+import selinux
-+from semanagePage import *;
-+import polgen
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+class domainsPage(semanagePage):
-+    def __init__(self, xml):
-+        semanagePage.__init__(self, xml, "domains", _("Process Domain"))
-+        self.domain_filter = xml.get_widget("domainsFilterEntry")
-+        self.domain_filter.connect("focus_out_event", self.filter_changed)
-+        self.domain_filter.connect("activate", self.filter_changed)
-+
-+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.view.set_model(self.store)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)        
-+        col = gtk.TreeViewColumn(_("Domain Name"), gtk.CellRendererText(), text = 0)
-+        col.set_sort_column_id(0)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
-+        col = gtk.TreeViewColumn(_("Mode"), gtk.CellRendererText(), text = 1)
-+        col.set_sort_column_id(1)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        self.view.get_selection().connect("changed", self.itemSelected)
-+
-+        self.permissive_button = xml.get_widget("permissiveButton")
-+        self.enforcing_button = xml.get_widget("enforcingButton")
-+
-+        self.domains=polgen.get_all_domains()
-+        self.load()
-+        
-+    def get_modules(self):
-+        modules=[]
-+        fd=os.popen("semodule -l")
-+        mods = fd.readlines()
-+        fd.close()
-+        for l in mods:
-+            modules.append(l.split()[0])
-+        return modules
-+
-+    def load(self, filter=""):
-+        self.filter=filter            
-+        self.store.clear()
-+        try:
-+            modules=self.get_modules()
-+            for domain in self.domains:
-+                if not self.match(domain, filter):
-+                    continue
-+                iter = self.store.append()
-+                self.store.set_value(iter, 0, domain)
-+                t = "permissive_%s_t" % domain 
-+                if t in modules:
-+                    self.store.set_value(iter, 1, _("Permissive"))
-+                else:
-+                    self.store.set_value(iter, 1, "")
-+        except:
-+            pass
-+        self.view.get_selection().select_path ((0,))
-+    
-+    def itemSelected(self, selection):
-+        store, iter = selection.get_selected()
-+        if iter == None:
-+            return
-+        p = store.get_value(iter, 1) == _("Permissive")
-+        self.permissive_button.set_sensitive(not p)
-+        self.enforcing_button.set_sensitive(p)
-+
-+    def deleteDialog(self):
-+        # Do nothing
-+        return self.delete()
-+    
-+    def delete(self):
-+        selection = self.view.get_selection()
-+        store, iter = selection.get_selected()
-+        domain = store.get_value(iter, 0)
-+        try:
-+            self.wait()
-+            status, output = commands.getstatusoutput("semanage permissive -d %s_t" % domain)
-+            self.ready()
-+            if status != 0:
-+                self.error(output)
-+            else:
-+                domain = store.set_value(iter, 1, "")
-+                self.itemSelected(selection)
-+                
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def propertiesDialog(self):
-+        # Do nothing
-+        return
-+    
-+    def addDialog(self):
-+        # Do nothing
-+        return self.add()
-+    
-+    def add(self):
-+        selection = self.view.get_selection()
-+        store, iter = selection.get_selected()
-+        domain = store.get_value(iter, 0)
-+        try:
-+            self.wait()
-+            status, output = commands.getstatusoutput("semanage permissive -a %s_t" % domain)
-+            self.ready()
-+            if status != 0:
-+                self.error(output)
-+            else:
-+                domain = store.set_value(iter, 1, _("Permissive"))
-+                self.itemSelected(selection)
-+                
-+        except ValueError, e:
-+            self.error(e.args[0])
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/fcontextPage.py policycoreutils-2.0.62/gui/fcontextPage.py
---- nsapolicycoreutils/gui/fcontextPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/fcontextPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,223 @@
-+## fcontextPage.py - show selinux mappings
-+## Copyright (C) 2006 Red Hat, Inc.
-+
-+## This program 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.
-+
-+## This program 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 this program; if not, write to the Free Software
-+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+## Author: Dan Walsh
-+import gtk
-+import gtk.glade
-+import os
-+import gobject
-+import seobject
-+import commands
-+from semanagePage import *;
-+
-+SPEC_COL = 0
-+TYPE_COL = 1
-+FTYPE_COL = 2
-+
-+class context:
-+    def __init__(self, scontext):
-+        self.scontext = scontext
-+        con=scontext.split(":")
-+        self.type = con[0]
-+        if len(con) > 1:
-+            self.mls = con[1]
-+        else:
-+            self.mls = "s0"
-+        
-+    def __str__(self):
-+        return self.scontext
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+
-+class fcontextPage(semanagePage):
-+    def __init__(self, xml):
-+        semanagePage.__init__(self, xml, "fcontext", _("File Labeling"))
-+        self.fcontextFilter = xml.get_widget("fcontextFilterEntry")
-+        self.fcontextFilter.connect("focus_out_event", self.filter_changed)
-+        self.fcontextFilter.connect("activate", self.filter_changed)
-+
-+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.view = xml.get_widget("fcontextView")
-+        self.view.set_model(self.store)
-+        self.view.set_search_equal_func(self.search)
-+
-+        col = gtk.TreeViewColumn(_("File\nSpecification"), gtk.CellRendererText(), text=SPEC_COL)
-+	col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
-+	col.set_fixed_width(250)
-+        
-+        col.set_sort_column_id(SPEC_COL)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        col = gtk.TreeViewColumn(_("Selinux\nFile Type"), gtk.CellRendererText(), text=TYPE_COL)
-+
-+	col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
-+	col.set_fixed_width(250)
-+        col.set_sort_column_id(TYPE_COL)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        col = gtk.TreeViewColumn(_("File\nType"), gtk.CellRendererText(), text=2)
-+        col.set_sort_column_id(FTYPE_COL)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+
-+        self.store.set_sort_column_id(SPEC_COL, gtk.SORT_ASCENDING)        
-+        self.load()
-+        self.fcontextEntry = xml.get_widget("fcontextEntry")
-+        self.fcontextFileTypeCombo = xml.get_widget("fcontextFileTypeCombo")
-+        liststore=self.fcontextFileTypeCombo.get_model()
-+        for k in seobject.file_types:
-+            if len(k) > 0 and  k[0] != '-':
-+                iter=liststore.append()
-+                liststore.set_value(iter, 0, k)
-+        iter = liststore.get_iter_first()
-+        self.fcontextFileTypeCombo.set_active_iter(iter)
-+        self.fcontextTypeEntry = xml.get_widget("fcontextTypeEntry")
-+        self.fcontextMLSEntry = xml.get_widget("fcontextMLSEntry")
-+
-+    def match(self, fcon_dict, k, filter):
-+        try:
-+            f=filter.lower()
-+            for con in k:
-+                k=con.lower()
-+                if k.find(f) >= 0:
-+                    return True
-+            for con in fcon_dict[k]:
-+                k=con.lower()
-+                if k.find(f) >= 0:
-+                    return True
-+        except:
-+            pass
-+        return False
-+
-+    def load(self, filter=""):
-+        self.filter=filter            
-+        self.fcontext=seobject.fcontextRecords()
-+        self.store.clear()
-+        fcon_dict=self.fcontext.get_all(self.local)
-+        keys = fcon_dict.keys()
-+        keys.sort()
-+        for k in keys:
-+            if not self.match(fcon_dict, k, filter):
-+                continue
-+            iter=self.store.append()
-+            self.store.set_value(iter, SPEC_COL, k[0])
-+            self.store.set_value(iter, FTYPE_COL, k[1])
-+            if fcon_dict[k]:
-+                rec="%s:%s" % (fcon_dict[k][2], seobject.translate(fcon_dict[k][3],False))
-+            else:
-+                rec="<<None>>"
-+            self.store.set_value(iter, TYPE_COL, rec)
-+        self.view.get_selection().select_path ((0,))
-+    
-+    def filter_changed(self, *arg):
-+        filter =  arg[0].get_text()
-+        if filter != self.filter:
-+            self.load(filter)
-+
-+    def dialogInit(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        self.fcontextEntry.set_text(store.get_value(iter, SPEC_COL))
-+        self.fcontextEntry.set_sensitive(False)
-+        scontext = store.get_value(iter, TYPE_COL)
-+        scon=context(scontext)
-+        self.fcontextTypeEntry.set_text(scon.type)
-+        self.fcontextMLSEntry.set_text(scon.mls)
-+        type=store.get_value(iter, FTYPE_COL)
-+        liststore=self.fcontextFileTypeCombo.get_model()
-+        iter = liststore.get_iter_first()
-+        while iter != None and liststore.get_value(iter,0) != type:
-+            iter = liststore.iter_next(iter)
-+        if iter != None:
-+            self.fcontextFileTypeCombo.set_active_iter(iter)
-+        self.fcontextFileTypeCombo.set_sensitive(False)
-+        
-+    def dialogClear(self):
-+        self.fcontextEntry.set_text("")
-+        self.fcontextEntry.set_sensitive(True)
-+        self.fcontextFileTypeCombo.set_sensitive(True)
-+        self.fcontextTypeEntry.set_text("")
-+        self.fcontextMLSEntry.set_text("s0")
-+        
-+    def delete(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        try:
-+            fspec=store.get_value(iter, SPEC_COL)
-+            ftype=store.get_value(iter, FTYPE_COL)
-+            self.wait()
-+            (rc, out) = commands.getstatusoutput("semanage fcontext -d -f '%s' '%s'" % (ftype, fspec))
-+            self.ready()
-+            
-+            if rc != 0:
-+                return self.error(out)
-+            store.remove(iter)
-+            self.view.get_selection().select_path ((0,))
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def add(self):
-+        fspec=self.fcontextEntry.get_text().strip()
-+        type=self.fcontextTypeEntry.get_text().strip()
-+        mls=self.fcontextMLSEntry.get_text().strip()
-+        list_model=self.fcontextFileTypeCombo.get_model()
-+        iter = self.fcontextFileTypeCombo.get_active_iter()
-+        ftype=list_model.get_value(iter,0)
-+        self.wait()
-+        (rc, out) = commands.getstatusoutput("semanage fcontext -a -t %s -r %s -f '%s' '%s'" % (type, mls, ftype, fspec))
-+        self.ready()
-+        if rc != 0:
-+            self.error(out)
-+            return False
-+        
-+        iter=self.store.append()
-+        self.store.set_value(iter, SPEC_COL, fspec)
-+        self.store.set_value(iter, FTYPE_COL, ftype)
-+        self.store.set_value(iter, TYPE_COL, "%s:%s" % (type, mls))
-+        
-+    def modify(self):
-+        fspec=self.fcontextEntry.get_text().strip()
-+        type=self.fcontextTypeEntry.get_text().strip()
-+        mls=self.fcontextMLSEntry.get_text().strip()
-+        list_model=self.fcontextFileTypeCombo.get_model()
-+        iter = self.fcontextFileTypeCombo.get_active_iter()
-+        ftype=list_model.get_value(iter,0)
-+        self.wait()
-+        (rc, out) = commands.getstatusoutput("semanage fcontext -m -t %s -r %s -f '%s' '%s'" % (type, mls, ftype, fspec))
-+        self.ready()
-+        if rc != 0:
-+            self.error(out)
-+            return False
-+
-+        store, iter = self.view.get_selection().get_selected()
-+        self.store.set_value(iter, SPEC_COL, fspec)
-+        self.store.set_value(iter, FTYPE_COL, ftype)
-+        self.store.set_value(iter, TYPE_COL, "%s:%s" % (type, mls))
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/html_util.py policycoreutils-2.0.62/gui/html_util.py
---- nsapolicycoreutils/gui/html_util.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/html_util.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,164 @@
-+# Authors: John Dennis <jdennis at redhat.com>
-+#
-+# Copyright (C) 2007 Red Hat, Inc.
-+#
-+# This program 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.
-+#
-+# This program 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 this program; if not, write to the Free Software
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+
-+
-+__all__ = [
-+    'escape_html',
-+    'unescape_html',
-+    'html_to_text',
-+
-+    'html_document',
-+]
-+
-+import htmllib
-+import formatter as Formatter
-+import string
-+from types import *
-+import StringIO
-+
-+#------------------------------------------------------------------------------
-+
-+class TextWriter(Formatter.DumbWriter):
-+    def __init__(self, file=None, maxcol=80, indent_width=4):
-+        Formatter.DumbWriter.__init__(self, file, maxcol)
-+        self.indent_level = 0
-+        self.indent_width = indent_width
-+        self._set_indent()
-+
-+    def _set_indent(self):
-+        self.indent_col = self.indent_level * self.indent_width
-+        self.indent = ' ' * self.indent_col
-+
-+    def new_margin(self, margin, level):
-+        self.indent_level = level
-+        self._set_indent()
-+
-+    def send_label_data(self, data):
-+        data = data + ' '
-+        if len(data) > self.indent_col:
-+            self.send_literal_data(data)
-+        else:
-+            offset = self.indent_col - len(data)
-+            self.send_literal_data(' ' * offset + data)
-+
-+    def send_flowing_data(self, data):
-+        if not data: return
-+        atbreak = self.atbreak or data[0] in string.whitespace
-+        col = self.col
-+        maxcol = self.maxcol
-+        write = self.file.write
-+        col = self.col
-+        if col == 0:
-+            write(self.indent)
-+            col = self.indent_col
-+        for word in data.split():
-+            if atbreak:
-+                if col + len(word) >= maxcol:
-+                    write('\n' + self.indent)
-+                    col = self.indent_col
-+                else:
-+                    write(' ')
-+                    col = col + 1
-+            write(word)
-+            col = col + len(word)
-+            atbreak = 1
-+        self.col = col
-+        self.atbreak = data[-1] in string.whitespace
-+            
-+class HTMLParserAnchor(htmllib.HTMLParser):
-+
-+    def __init__(self, formatter, verbose=0):
-+        htmllib.HTMLParser.__init__(self, formatter, verbose)
-+
-+    def anchor_bgn(self, href, name, type):
-+        self.anchor = href
-+
-+    def anchor_end(self):
-+        if self.anchor:
-+            self.handle_data(' (%s) ' % self.anchor)
-+            self.anchor = None
-+
-+#------------------------------------------------------------------------------
-+
-+def escape_html(s):
-+    if s is None: return None
-+    s = s.replace("&", "&") # Must be done first!
-+    s = s.replace("<", "<")
-+    s = s.replace(">", ">")
-+    s = s.replace("'", "'")
-+    s = s.replace('"', """)
-+    return s
-+
-+
-+def unescape_html(s):
-+    if s is None: return None
-+    if '&' not in s:
-+        return s
-+    s = s.replace("<", "<")
-+    s = s.replace(">", ">")
-+    s = s.replace("'", "'")
-+    s = s.replace(""", '"')
-+    s = s.replace("&", "&") # Must be last
-+    return s
-+
-+def html_to_text(html, maxcol=80):
-+    try:
-+        buffer = StringIO.StringIO()
-+        formatter = Formatter.AbstractFormatter(TextWriter(buffer, maxcol))
-+        parser = HTMLParserAnchor(formatter)
-+        parser.feed(html)
-+        parser.close()
-+        text = buffer.getvalue()
-+        buffer.close()
-+        return text
-+    except Exception, e:
-+        log_program.error('cannot convert html to text: %s' % e)
-+        return None
-+
-+def html_document(*body_components):
-+    '''Wrap the body components in a HTML document structure with a valid header.
-+    Accepts a variable number of arguments of of which canb be:
-+    * string
-+    * a sequences of strings (tuple or list).
-+    * a callable object taking no parameters and returning a string or sequence of strings.
-+    '''
-+    head = '<html>\n  <head>\n    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n  </head>\n  <body>\n'
-+    tail = '\n  </body>\n</html>'
-+
-+    doc = head
-+
-+    for body_component in body_components:
-+        if type(body_component) is StringTypes:
-+            doc += body_component
-+        elif type(body_component) in [TupleType, ListType]:
-+            for item in body_component:
-+                doc += item
-+        elif callable(body_component):
-+            result = body_component()
-+            if type(result) in [TupleType, ListType]:
-+                for item in result:
-+                    doc += item
-+            else:
-+                doc += result
-+        else:
-+            doc += body_component
-+
-+    doc += tail
-+    return doc
-+
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/lockdown.glade policycoreutils-2.0.62/gui/lockdown.glade
---- nsapolicycoreutils/gui/lockdown.glade	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/lockdown.glade	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,771 @@
-+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-+
-+<glade-interface>
-+<requires lib="gnome"/>
-+<requires lib="bonobo"/>
-+
-+<widget class="GtkAboutDialog" id="aboutWindow">
-+  <property name="border_width">5</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="name" translatable="yes">system-config-selinux</property>
-+  <property name="copyright" translatable="yes">Copyright (c)2006 Red Hat, Inc.
-+Copyright (c) 2006 Dan Walsh <dwalsh at redhat.com></property>
-+  <property name="wrap_license">False</property>
-+  <property name="authors">Daniel Walsh <dwalsh at redhat.com>
-+</property>
-+  <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
-+  <property name="logo">system-config-selinux.png</property>
-+</widget>
-+
-+<widget class="GnomeApp" id="mainWindow">
-+  <property name="width_request">800</property>
-+  <property name="height_request">400</property>
-+  <property name="title" translatable="yes">SELinux Boolean Lockdown</property>
-+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-+  <property name="window_position">GTK_WIN_POS_NONE</property>
-+  <property name="modal">False</property>
-+  <property name="resizable">True</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="icon">system-config-selinux.png</property>
-+  <property name="decorated">True</property>
-+  <property name="skip_taskbar_hint">False</property>
-+  <property name="skip_pager_hint">False</property>
-+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-+  <property name="focus_on_map">True</property>
-+  <property name="urgency_hint">False</property>
-+  <property name="enable_layout_config">True</property>
-+
-+  <child internal-child="dock">
-+    <widget class="BonoboDock" id="bonobodock2">
-+      <property name="visible">True</property>
-+      <property name="allow_floating">True</property>
-+
-+      <child>
-+	<widget class="BonoboDockItem" id="bonobodockitem3">
-+	  <property name="visible">True</property>
-+	  <property name="shadow_type">GTK_SHADOW_NONE</property>
-+
-+	  <child>
-+	    <widget class="GtkMenuBar" id="menubar1">
-+	      <property name="visible">True</property>
-+	      <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
-+	      <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
-+
-+	      <child>
-+		<widget class="GtkMenuItem" id="file1">
-+		  <property name="visible">True</property>
-+		  <property name="stock_item">GNOMEUIINFO_MENU_FILE_TREE</property>
-+
-+		  <child>
-+		    <widget class="GtkMenu" id="file1_menu">
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="forward_menu_item">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">_Forward</property>
-+			  <property name="use_underline">True</property>
-+			  <signal name="activate" handler="on_forward_clicked" last_modification_time="Thu, 24 Apr 2008 10:18:41 GMT"/>
-+			  <accelerator key="f" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-+
-+			  <child internal-child="image">
-+			    <widget class="GtkImage" id="image46">
-+			      <property name="visible">True</property>
-+			      <property name="stock">gtk-media-next</property>
-+			      <property name="icon_size">1</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xpad">0</property>
-+			      <property name="ypad">0</property>
-+			    </widget>
-+			  </child>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="previous_menu_item">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">_Previous</property>
-+			  <property name="use_underline">True</property>
-+			  <signal name="activate" handler="on_previous_clicked" last_modification_time="Thu, 24 Apr 2008 10:18:41 GMT"/>
-+			  <accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-+
-+			  <child internal-child="image">
-+			    <widget class="GtkImage" id="image47">
-+			      <property name="visible">True</property>
-+			      <property name="stock">gtk-media-previous</property>
-+			      <property name="icon_size">1</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xpad">0</property>
-+			      <property name="ypad">0</property>
-+			    </widget>
-+			  </child>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkSeparatorMenuItem" id="separator1">
-+			  <property name="visible">True</property>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="save_as2">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">Save As</property>
-+			  <property name="use_underline">True</property>
-+			  <signal name="activate" handler="on_save_clicked" last_modification_time="Thu, 03 Jul 2008 13:30:05 GMT"/>
-+			  <accelerator key="s" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-+
-+			  <child internal-child="image">
-+			    <widget class="GtkImage" id="image48">
-+			      <property name="visible">True</property>
-+			      <property name="stock">gtk-save-as</property>
-+			      <property name="icon_size">1</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xpad">0</property>
-+			      <property name="ypad">0</property>
-+			    </widget>
-+			  </child>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="apply1">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">Apply</property>
-+			  <property name="use_underline">True</property>
-+			  <signal name="activate" handler="on_apply_clicked" last_modification_time="Thu, 03 Jul 2008 13:25:23 GMT"/>
-+			  <accelerator key="a" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-+
-+			  <child internal-child="image">
-+			    <widget class="GtkImage" id="image49">
-+			      <property name="visible">True</property>
-+			      <property name="stock">gtk-apply</property>
-+			      <property name="icon_size">1</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xpad">0</property>
-+			      <property name="ypad">0</property>
-+			    </widget>
-+			  </child>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="cancel">
-+			  <property name="visible">True</property>
-+			  <property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
-+			  <signal name="activate" handler="on_cancel_clicked" last_modification_time="Thu, 24 Apr 2008 10:18:41 GMT"/>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		  </child>
-+		</widget>
-+	      </child>
-+
-+	      <child>
-+		<widget class="GtkMenuItem" id="help1">
-+		  <property name="visible">True</property>
-+		  <property name="stock_item">GNOMEUIINFO_MENU_HELP_TREE</property>
-+
-+		  <child>
-+		    <widget class="GtkMenu" id="help1_menu">
-+
-+		      <child>
-+			<widget class="GtkImageMenuItem" id="about">
-+			  <property name="visible">True</property>
-+			  <property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
-+			  <signal name="activate" handler="on_about_activate" last_modification_time="Fri, 06 Oct 2006 13:58:02 GMT"/>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	  </child>
-+	</widget>
-+	<packing>
-+	  <property name="placement">BONOBO_DOCK_TOP</property>
-+	  <property name="band">0</property>
-+	  <property name="position">0</property>
-+	  <property name="offset">0</property>
-+	  <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE|BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL|BONOBO_DOCK_ITEM_BEH_LOCKED</property>
-+	</packing>
-+      </child>
-+
-+      <child>
-+	<widget class="GtkHPaned" id="hpaned1">
-+	  <property name="visible">True</property>
-+	  <property name="can_focus">True</property>
-+	  <property name="position">0</property>
-+
-+	  <child>
-+	    <widget class="GtkFrame" id="frame1">
-+	      <property name="border_width">5</property>
-+	      <property name="visible">True</property>
-+	      <property name="label_xalign">0</property>
-+	      <property name="label_yalign">0.5</property>
-+	      <property name="shadow_type">GTK_SHADOW_NONE</property>
-+
-+	      <child>
-+		<widget class="GtkAlignment" id="alignment1">
-+		  <property name="visible">True</property>
-+		  <property name="xalign">0.5</property>
-+		  <property name="yalign">0.5</property>
-+		  <property name="xscale">1</property>
-+		  <property name="yscale">1</property>
-+		  <property name="top_padding">0</property>
-+		  <property name="bottom_padding">0</property>
-+		  <property name="left_padding">12</property>
-+		  <property name="right_padding">0</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="scrolledwindow21">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<widget class="GtkTreeView" id="booleanView">
-+			  <property name="width_request">300</property>
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Select Management Object</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="headers_visible">False</property>
-+			  <property name="rules_hint">False</property>
-+			  <property name="reorderable">False</property>
-+			  <property name="enable_search">True</property>
-+			  <property name="fixed_height_mode">False</property>
-+			  <property name="hover_selection">False</property>
-+			  <property name="hover_expand">False</property>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		  </child>
-+		</widget>
-+	      </child>
-+
-+	      <child>
-+		<widget class="GtkLabel" id="label45">
-+		  <property name="visible">True</property>
-+		  <property name="label" translatable="yes"><b>Select:</b></property>
-+		  <property name="use_underline">False</property>
-+		  <property name="use_markup">True</property>
-+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+		  <property name="wrap">False</property>
-+		  <property name="selectable">False</property>
-+		  <property name="xalign">0.5</property>
-+		  <property name="yalign">0.5</property>
-+		  <property name="xpad">0</property>
-+		  <property name="ypad">0</property>
-+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+		  <property name="width_chars">-1</property>
-+		  <property name="single_line_mode">False</property>
-+		  <property name="angle">0</property>
-+		</widget>
-+		<packing>
-+		  <property name="type">label_item</property>
-+		</packing>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="shrink">False</property>
-+	      <property name="resize">False</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkVBox" id="vbox1">
-+	      <property name="homogeneous">False</property>
-+	      <property name="spacing">0</property>
-+
-+	      <child>
-+		<widget class="GtkVBox" id="radio_vbox">
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">0</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="html_scrolledwindow">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<placeholder/>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+
-+		  <child>
-+		    <widget class="GtkHButtonBox" id="savebox">
-+		      <property name="visible">True</property>
-+		      <property name="layout_style">GTK_BUTTONBOX_END</property>
-+		      <property name="spacing">0</property>
-+
-+		      <child>
-+			<widget class="GtkButton" id="button4">
-+			  <property name="visible">True</property>
-+			  <property name="can_default">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label">gtk-apply</property>
-+			  <property name="use_stock">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_apply_clicked" last_modification_time="Thu, 03 Jul 2008 12:39:08 GMT"/>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkButton" id="savebutton">
-+			  <property name="visible">True</property>
-+			  <property name="can_default">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label">gtk-save-as</property>
-+			  <property name="use_stock">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_save_clicked" last_modification_time="Thu, 03 Jul 2008 12:38:54 GMT"/>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">False</property>
-+		      <property name="fill">False</property>
-+		      <property name="pack_type">GTK_PACK_END</property>
-+		    </packing>
-+		  </child>
-+
-+		  <child>
-+		    <widget class="GtkHBox" id="radiobox">
-+		      <property name="homogeneous">True</property>
-+		      <property name="spacing">0</property>
-+
-+		      <child>
-+			<widget class="GtkRadioButton" id="enable_radiobutton">
-+			  <property name="visible">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <property name="active">False</property>
-+			  <property name="inconsistent">False</property>
-+			  <property name="draw_indicator">True</property>
-+
-+			  <child>
-+			    <widget class="GtkAlignment" id="alignment2">
-+			      <property name="visible">True</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xscale">0</property>
-+			      <property name="yscale">0</property>
-+			      <property name="top_padding">0</property>
-+			      <property name="bottom_padding">0</property>
-+			      <property name="left_padding">0</property>
-+			      <property name="right_padding">0</property>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox15">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">2</property>
-+
-+				  <child>
-+				    <widget class="GtkImage" id="image20">
-+				      <property name="visible">True</property>
-+				      <property name="stock">gtk-yes</property>
-+				      <property name="icon_size">4</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="button1">
-+				      <property name="label" translatable="yes">Enable</property>
-+				      <property name="use_underline">True</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+			      </child>
-+			    </widget>
-+			  </child>
-+			</widget>
-+			<packing>
-+			  <property name="padding">0</property>
-+			  <property name="expand">False</property>
-+			  <property name="fill">False</property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkRadioButton" id="disable_radiobutton">
-+			  <property name="visible">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <property name="active">False</property>
-+			  <property name="inconsistent">False</property>
-+			  <property name="draw_indicator">True</property>
-+			  <property name="group">enable_radiobutton</property>
-+
-+			  <child>
-+			    <widget class="GtkAlignment" id="alignment3">
-+			      <property name="visible">True</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xscale">0</property>
-+			      <property name="yscale">0</property>
-+			      <property name="top_padding">0</property>
-+			      <property name="bottom_padding">0</property>
-+			      <property name="left_padding">0</property>
-+			      <property name="right_padding">0</property>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox16">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">2</property>
-+
-+				  <child>
-+				    <widget class="GtkImage" id="image21">
-+				      <property name="visible">True</property>
-+				      <property name="stock">gtk-no</property>
-+				      <property name="icon_size">4</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="label60">
-+				      <property name="visible">True</property>
-+				      <property name="label" translatable="yes">Disable</property>
-+				      <property name="use_underline">True</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+			      </child>
-+			    </widget>
-+			  </child>
-+			</widget>
-+			<packing>
-+			  <property name="padding">0</property>
-+			  <property name="expand">False</property>
-+			  <property name="fill">False</property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkRadioButton" id="default_radiobutton">
-+			  <property name="visible">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <property name="active">False</property>
-+			  <property name="inconsistent">False</property>
-+			  <property name="draw_indicator">True</property>
-+			  <property name="group">enable_radiobutton</property>
-+
-+			  <child>
-+			    <widget class="GtkAlignment" id="alignment4">
-+			      <property name="visible">True</property>
-+			      <property name="xalign">0.5</property>
-+			      <property name="yalign">0.5</property>
-+			      <property name="xscale">0</property>
-+			      <property name="yscale">0</property>
-+			      <property name="top_padding">0</property>
-+			      <property name="bottom_padding">0</property>
-+			      <property name="left_padding">0</property>
-+			      <property name="right_padding">0</property>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox17">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">2</property>
-+
-+				  <child>
-+				    <widget class="GtkImage" id="image22">
-+				      <property name="visible">True</property>
-+				      <property name="stock">gtk-undo</property>
-+				      <property name="icon_size">4</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="label61">
-+				      <property name="visible">True</property>
-+				      <property name="label" translatable="yes">Default</property>
-+				      <property name="use_underline">True</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+			      </child>
-+			    </widget>
-+			  </child>
-+			</widget>
-+			<packing>
-+			  <property name="padding">0</property>
-+			  <property name="expand">False</property>
-+			  <property name="fill">False</property>
-+			</packing>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">11</property>
-+		      <property name="expand">False</property>
-+		      <property name="fill">False</property>
-+		    </packing>
-+		  </child>
-+
-+		  <child>
-+		    <widget class="GtkHButtonBox" id="hbuttonbox4">
-+		      <property name="visible">True</property>
-+		      <property name="layout_style">GTK_BUTTONBOX_END</property>
-+		      <property name="spacing">0</property>
-+
-+		      <child>
-+			<widget class="GtkButton" id="cancelButton">
-+			  <property name="visible">True</property>
-+			  <property name="can_default">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label">gtk-quit</property>
-+			  <property name="use_stock">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_cancel_clicked" last_modification_time="Thu, 24 Apr 2008 10:14:10 GMT"/>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkButton" id="previousButton">
-+			  <property name="visible">True</property>
-+			  <property name="can_default">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label">gtk-media-previous</property>
-+			  <property name="use_stock">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_previous_clicked" last_modification_time="Thu, 24 Apr 2008 10:14:23 GMT"/>
-+			</widget>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkButton" id="forwardButton">
-+			  <property name="visible">True</property>
-+			  <property name="can_default">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label">gtk-media-forward</property>
-+			  <property name="use_stock">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_forward_clicked" last_modification_time="Thu, 24 Apr 2008 10:14:38 GMT"/>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">False</property>
-+		      <property name="fill">False</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+		<packing>
-+		  <property name="padding">0</property>
-+		  <property name="expand">True</property>
-+		  <property name="fill">True</property>
-+		</packing>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="shrink">True</property>
-+	      <property name="resize">True</property>
-+	    </packing>
-+	  </child>
-+	</widget>
-+      </child>
-+    </widget>
-+    <packing>
-+      <property name="padding">0</property>
-+      <property name="expand">True</property>
-+      <property name="fill">True</property>
-+    </packing>
-+  </child>
-+
-+  <child internal-child="appbar">
-+    <widget class="GnomeAppBar" id="appbar2">
-+      <property name="visible">True</property>
-+      <property name="has_progress">True</property>
-+      <property name="has_status">True</property>
-+    </widget>
-+    <packing>
-+      <property name="padding">0</property>
-+      <property name="expand">True</property>
-+      <property name="fill">True</property>
-+    </packing>
-+  </child>
-+</widget>
-+
-+<widget class="GtkFileChooserDialog" id="filechooserdialog">
-+  <property name="border_width">5</property>
-+  <property name="tooltip" translatable="yes">Select file name to save  boolean settings.</property>
-+  <property name="action">GTK_FILE_CHOOSER_ACTION_SAVE</property>
-+  <property name="local_only">True</property>
-+  <property name="select_multiple">False</property>
-+  <property name="show_hidden">False</property>
-+  <property name="do_overwrite_confirmation">False</property>
-+  <property name="title" translatable="yes">Save Boolean Configuration File</property>
-+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-+  <property name="window_position">GTK_WIN_POS_MOUSE</property>
-+  <property name="modal">False</property>
-+  <property name="resizable">True</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="decorated">True</property>
-+  <property name="skip_taskbar_hint">False</property>
-+  <property name="skip_pager_hint">False</property>
-+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-+  <property name="focus_on_map">True</property>
-+  <property name="urgency_hint">False</property>
-+
-+  <child internal-child="vbox">
-+    <widget class="GtkVBox" id="dialog-vbox1">
-+      <property name="visible">True</property>
-+      <property name="homogeneous">False</property>
-+      <property name="spacing">2</property>
-+
-+      <child internal-child="action_area">
-+	<widget class="GtkHButtonBox" id="dialog-action_area1">
-+	  <property name="visible">True</property>
-+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-+
-+	  <child>
-+	    <widget class="GtkButton" id="button7">
-+	      <property name="visible">True</property>
-+	      <property name="can_default">True</property>
-+	      <property name="can_focus">True</property>
-+	      <property name="label">gtk-cancel</property>
-+	      <property name="use_stock">True</property>
-+	      <property name="relief">GTK_RELIEF_NORMAL</property>
-+	      <property name="focus_on_click">True</property>
-+	      <property name="response_id">-6</property>
-+	    </widget>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkButton" id="button8">
-+	      <property name="visible">True</property>
-+	      <property name="can_default">True</property>
-+	      <property name="has_default">True</property>
-+	      <property name="can_focus">True</property>
-+	      <property name="label">gtk-save</property>
-+	      <property name="use_stock">True</property>
-+	      <property name="relief">GTK_RELIEF_NORMAL</property>
-+	      <property name="focus_on_click">True</property>
-+	      <property name="response_id">-5</property>
-+	    </widget>
-+	  </child>
-+	</widget>
-+	<packing>
-+	  <property name="padding">0</property>
-+	  <property name="expand">False</property>
-+	  <property name="fill">True</property>
-+	  <property name="pack_type">GTK_PACK_END</property>
-+	</packing>
-+      </child>
-+    </widget>
-+  </child>
-+</widget>
-+
-+</glade-interface>
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/lockdown.gladep policycoreutils-2.0.62/gui/lockdown.gladep
---- nsapolicycoreutils/gui/lockdown.gladep	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/lockdown.gladep	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,7 @@
-+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
-+
-+<glade-project>
-+  <name></name>
-+  <program_name></program_name>
-+</glade-project>
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/lockdown.py policycoreutils-2.0.62/gui/lockdown.py
---- nsapolicycoreutils/gui/lockdown.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/lockdown.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,382 @@
-+#!/usr/bin/python
-+#
-+# lockdown.py - GUI for Booleans page in system-config-securitylevel
-+#
-+# Dan Walsh <dwalsh at redhat.com>
-+#
-+# Copyright 2008 Red Hat, Inc.
-+#
-+# This program 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.
-+#
-+# This program 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
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+import signal
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import gobject
-+import gnome
-+import sys
-+import selinux
-+import seobject
-+import gtkhtml2
-+import commands
-+import tempfile
-+
-+from html_util import *
-+
-+gnome.program_init("SELinux Boolean Lockdown Tool", "5")
-+
-+INSTALLPATH='/usr/share/system-config-selinux'
-+sys.path.append(INSTALLPATH)
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+from glob import fnmatch
-+
-+STATUS=(_("Disable"), _("Enable"), _("Default"))
-+DISABLE = 0
-+ENABLE = 1
-+DEFAULT = 2
-+
-+def idle_func():
-+    while gtk.events_pending():
-+        gtk.main_iteration()
-+        
-+def td_fmt(val):
-+    return '<td>%s</td>' % val
-+
-+tr_fmt = '<tr>%s</tr>\n'
-+
-+p_fmt = '<p>%s\n'
-+
-+##
-+## Pull in the Glade file
-+##
-+if os.access("system-config-selinux.glade", os.F_OK):
-+    xml = gtk.glade.XML ("lockdown.glade", domain=PROGNAME)
-+else:
-+    xml = gtk.glade.XML ("/usr/share/system-config-selinux/lockdown.glade", domain=PROGNAME)
-+BOOLEAN = 0
-+class booleanWindow:
-+    def __init__(self):
-+        self.tabs=[]
-+        self.xml = xml
-+        xml.signal_connect("on_cancel_clicked", self.cancel)
-+        xml.signal_connect("on_forward_clicked", self.forward)
-+        xml.signal_connect("on_previous_clicked", self.previous)
-+        xml.signal_connect("on_save_clicked", self.save)
-+        xml.signal_connect("on_apply_clicked", self.apply)
-+        self.xml = xml
-+        self.mainWindow = self.xml.get_widget("mainWindow")
-+        self.forwardbutton = self.xml.get_widget("forwardButton")
-+        self.window = self.xml.get_widget("mainWindow").get_root_window()
-+        self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
-+        self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
-+        self.radiobox = self.xml.get_widget("radiobox")
-+        self.savebox = self.xml.get_widget("savebox")
-+        self.file_dialog = self.xml.get_widget("filechooserdialog")
-+        self.vbox = self.xml.get_widget("vbox")
-+        self.enable_radiobutton = self.xml.get_widget("enable_radiobutton")
-+        self.enable_radiobutton.connect("toggled", self.toggled)
-+        self.disable_radiobutton = self.xml.get_widget("disable_radiobutton")
-+        self.disable_radiobutton.connect("toggled", self.toggled)
-+        self.default_radiobutton = self.xml.get_widget("default_radiobutton")
-+        self.default_radiobutton.connect("toggled", self.toggled)
-+        self.html_scrolledwindow = self.xml.get_widget("html_scrolledwindow")
-+        self.view = xml.get_widget("booleanView")
-+        self.view.get_selection().connect("changed", self.itemSelected)
-+
-+        self.store = gtk.TreeStore(gobject.TYPE_STRING)
-+        self.view.set_model(self.store)
-+
-+        col = gtk.TreeViewColumn("Boolean", gtk.CellRendererText(), text=BOOLEAN)
-+        col.set_sort_column_id(BOOLEAN)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+
-+        self.html_view, self.doc = self.create_htmlview(self.html_scrolledwindow)
-+        self.load()
-+        self.view.get_selection().select_path ((0,))
-+
-+    def create_htmlview(self, container):
-+        view = gtkhtml2.View()
-+        doc = gtkhtml2.Document()
-+        container.set_hadjustment(view.get_hadjustment())
-+        container.set_vadjustment(view.get_vadjustment())
-+        view.set_document(doc)
-+        container.add(view)
-+        return (view, doc)
-+
-+    def wait(self):
-+        self.window.set_cursor(self.busy_cursor)
-+        idle_func()
-+    
-+    def ready(self):
-+        self.window.set_cursor(self.ready_cursor)
-+        idle_func()
-+    
-+    def load(self):
-+        self.store.clear()
-+        self.booleans = seobject.booleanRecords()
-+        booleansList = self.booleans.get_all(0)
-+        self.booldict = {}
-+        for name in booleansList:
-+            cat = self.booleans.get_category(name)
-+            if cat not in self.booldict:
-+                self.booldict[cat] = {}
-+            
-+            rec = booleansList[name]
-+            self.booldict[cat][name]= [rec[2], self.booleans.get_desc(name)]
-+
-+        cats = self.booldict.keys()
-+        cats.sort()
-+
-+        citer = self.store.append(None)
-+        self.store.set_value(citer, BOOLEAN, "Begin")
-+        for cat in  cats:
-+            citer = self.store.append(None)
-+            self.store.set_value(citer, BOOLEAN, cat)
-+            bools = self.booldict[cat].keys()
-+            for bool in  bools:
-+                biter = self.store.append(citer)
-+                self.store.set_value(biter, BOOLEAN, bool)
-+            biter = self.store.append(citer)
-+            self.store.set_value(biter, BOOLEAN, "Finish")
-+        citer = self.store.append(None)
-+        self.store.set_value(citer, BOOLEAN, "Finish")
-+
-+    def on_about_activate(self, args):
-+        dlg = xml.get_widget ("aboutWindow")
-+        dlg.run ()
-+        dlg.hide ()
-+
-+    def cancel(self, args):
-+        gtk.main_quit()
-+
-+    def error(self, message):
-+        dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
-+                                gtk.BUTTONS_CLOSE,
-+                                message)
-+        dlg.set_position(gtk.WIN_POS_MOUSE)
-+        dlg.show_all()
-+        dlg.run()
-+        dlg.destroy()
-+
-+    def __out(self):
-+        out = ''
-+        for c in self.booldict.keys():
-+            for b in self.booldict[c]:
-+                out += "%s=%s\n" % (b, self.booldict[c][b][0])
-+        return out
-+
-+    def save(self, args):
-+        self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SAVE)
-+        rc = self.file_dialog.run()
-+        self.file_dialog.hide()
-+        if rc == gtk.RESPONSE_OK:
-+            try:
-+                fd = open(self.file_dialog.get_filename(), "w")
-+                fd.write(self.__out())
-+                fd.close()
-+
-+            except IOError, e:
-+                self.error(e)
-+
-+    def apply(self, args):
-+        fd = tempfile.NamedTemporaryFile(dir = "/var/lib/selinux")
-+        fd.write(self.__out())
-+        fd.flush()
-+        self.wait()
-+        rc, err = commands.getstatusoutput("semanage boolean -m -F %s" % fd.name)
-+        self.ready()
-+        fd.close()
-+        if rc != 0:
-+            self.error(err)
-+
-+    def forward(self, args):
-+        selection = self.view.get_selection()
-+        store, iter = selection.get_selected()
-+        if self.store.iter_has_child(iter):
-+            store, rows = selection.get_selected_rows()
-+            self.view.expand_to_path(rows[0])
-+            niter = self.store.iter_nth_child(iter, 0)
-+        else:
-+            niter = store.iter_next(iter)
-+
-+        if niter == None:
-+            piter = self.store.iter_parent(iter)
-+            if piter == None:
-+                return
-+            niter = store.iter_next(piter)
-+
-+        if niter != None:
-+            selection.select_iter(niter)
-+            store, rows = selection.get_selected_rows()
-+            self.view.scroll_to_cell(rows[0])
-+        else:
-+            print "Finish"
-+
-+    def toggled(self, button):
-+        if button.get_active() == False:
-+            return
-+        if self.cat == None:
-+            return
-+        if self.disable_radiobutton == button:
-+            self.booldict[self.cat][self.name][0] = DISABLE
-+        if self.enable_radiobutton == button:
-+            self.booldict[self.cat][self.name][0] = ENABLE
-+        if self.default_radiobutton == button:
-+            self.booldict[self.cat][self.name][0] = DEFAULT
-+
-+    def previous(self, args):
-+        selection = self.view.get_selection()
-+        store, iter = selection.get_selected()
-+        store, rows = selection.get_selected_rows()
-+        row = rows[0]
-+        if len(row) == 1 or self.store.iter_has_child(iter):
-+            if row[0] == 0:
-+                return
-+            nrow = row[0] - 1
-+            iter = self.store.get_iter((nrow,))
-+            if self.store.iter_has_child(iter):
-+                self.view.expand_to_path((nrow,))
-+                n = store.iter_n_children(iter) -1
-+                piter = store.iter_nth_child(iter, n)
-+            else:
-+                piter = iter
-+        else:
-+            if row[1] == 0:
-+                piter = self.store.iter_parent(iter)
-+            else:
-+                r0 = row[0]
-+                r1 = row[1] - 1
-+                piter = self.store.get_iter((r0,r1))
-+        if piter != None:
-+            selection.select_iter(piter)
-+            store, rows = selection.get_selected_rows()
-+            self.view.scroll_to_cell(rows[0])
-+        else:
-+            print "Finish"
-+                
-+    def html_cat(self, cat):
-+        html = ""
-+        row = td_fmt(_("<b>Boolean</b>")) + td_fmt(_("<b>Description</b>")) + td_fmt(_("<b>Status</b>"))
-+        html += tr_fmt % row
-+        
-+        for b in self.booldict[cat]:
-+            row = td_fmt(b) + td_fmt(self.booleans.get_desc(b)) + td_fmt(STATUS[self.booldict[cat][b][0]])
-+            html += tr_fmt % row
-+        return html
-+
-+    def html_table(self, title, body):
-+        html = self.html_head(title)
-+        html += '<table width="100%" cellspacing="1" cellpadding="2">\n'
-+        html += body
-+        html += '</table>'
-+        return html
-+
-+    def html_head(self, val):
-+        # Wrap entire alert in one table
-+        # 1st table: primary Information
-+
-+        html = '<b>%s</b>\n\n\n' % val
-+        return html
-+ 
-+    def html_all(self):
-+        html = ""
-+        cats = self.booldict.keys()
-+        cats.sort()
-+        for cat in  cats:
-+            html += self.html_table((_("Category: %s <br>") % cat), self.html_cat(cat))
-+        return html
-+
-+    def itemSelected(self, selection):
-+        store, iter = selection.get_selected()
-+        if iter == None:
-+            return
-+
-+        piter = self.store.iter_parent(iter)
-+        if piter != None:
-+            self.cat =  store.get_value(piter, BOOLEAN)
-+        else:
-+            self.cat =  None
-+
-+        self.name =  store.get_value(iter, BOOLEAN)
-+        self.doc.clear()
-+        self.doc.open_stream("text/html")
-+        
-+        html = ''
-+
-+        self.radiobox.hide()
-+        self.savebox.hide()
-+
-+        if self.name == _("Begin"):
-+            html += self.html_head(_("Welcome to the SELinux Lockdown Tool.<br> <br>This tool can be used to lockdown SELinux booleans.The tool will generate a configuration file which can be used to lockdown this system or other SELinux systems.<br>"))
-+            html += self.html_all()
-+        else:
-+            if self.name == _("Finish"):
-+                if self.cat != None:
-+                    html += self.html_head(_("Category %s booleans completed <br><br>") % self.cat)
-+                    html += self.html_table(_("Current settings:<br><br>"), self.html_cat(self.cat))
-+                else:
-+                    html += self.html_head(_("Finish: <br><br>"))
-+                    html += self.html_all()
-+                    self.savebox.show()
-+            else:
-+                if self.store.iter_has_child(iter):
-+                    html += self.html_table(_("Category: %s<br><br>Current Settings<br><br>") % self.name, self.html_cat(self.name))
-+                else:
-+                    self.radiobox.show()
-+                    html += self.html_table(_("Boolean:   %s<br><br>") % self.name, tr_fmt % td_fmt(self.booleans.get_desc(self.name)))
-+                    if self.booldict[self.cat][self.name][0] == ENABLE:
-+                        self.enable_radiobutton.set_active(True)
-+                    if self.booldict[self.cat][self.name][0] == DISABLE:
-+                        self.disable_radiobutton.set_active(True)
-+                    if self.booldict[self.cat][self.name][0] == DEFAULT:
-+                        self.default_radiobutton.set_active(True)
-+        html_doc= html_document(html)
-+
-+        self.doc.write_stream(html_doc)
-+        self.doc.close_stream()
-+
-+    def stand_alone(self):
-+        desktopName = _("Lockdown SELinux Booleans")
-+
-+        self.mainWindow.connect("destroy", self.cancel)
-+
-+        self.mainWindow.show_all()
-+        self.radiobox.hide()
-+        self.savebox.hide()
-+        gtk.main()
-+
-+if __name__ == "__main__":
-+    signal.signal (signal.SIGINT, signal.SIG_DFL)
-+
-+    app = booleanWindow()
-+    app.stand_alone()
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/loginsPage.py policycoreutils-2.0.62/gui/loginsPage.py
---- nsapolicycoreutils/gui/loginsPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/loginsPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,185 @@
-+## loginsPage.py - show selinux mappings
-+## Copyright (C) 2006 Red Hat, Inc.
-+
-+## This program 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.
-+
-+## This program 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 this program; if not, write to the Free Software
-+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+## Author: Dan Walsh
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import gobject
-+import sys
-+import commands
-+import seobject
-+from semanagePage import *;
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+class loginsPage(semanagePage):
-+    def __init__(self, xml):
-+        self.firstTime = False
-+        semanagePage.__init__(self, xml, "logins", _("User Mapping"))
-+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.view.set_model(self.store)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)        
-+        col = gtk.TreeViewColumn(_("Login\nName"), gtk.CellRendererText(), text = 0)
-+        col.set_sort_column_id(0)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        col = gtk.TreeViewColumn(_("SELinux\nUser"), gtk.CellRendererText(), text = 1)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text = 2)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        self.load()
-+        self.loginsNameEntry = xml.get_widget("loginsNameEntry")
-+        self.loginsSelinuxUserCombo = xml.get_widget("loginsSelinuxUserCombo")
-+        self.loginsMLSEntry = xml.get_widget("loginsMLSEntry")
-+        
-+    def load(self, filter = ""):
-+        self.filter=filter            
-+        self.login = seobject.loginRecords()
-+        dict = self.login.get_all(0)
-+        keys = dict.keys()
-+        keys.sort()
-+        self.store.clear()
-+        for k in keys:
-+            range = seobject.translate(dict[k][1])
-+            if not (self.match(k, filter) or self.match(dict[k][0], filter) or self.match(range, filter)):
-+                continue
-+            iter = self.store.append()
-+            self.store.set_value(iter, 0, k)
-+            self.store.set_value(iter, 1, dict[k][0])
-+            self.store.set_value(iter, 2, range)
-+        self.view.get_selection().select_path ((0,))
-+
-+    def __dialogSetup(self):
-+        if self.firstTime == True:
-+            return
-+        self.firstTime = True
-+        liststore = gtk.ListStore(gobject.TYPE_STRING)
-+        self.loginsSelinuxUserCombo.set_model(liststore)
-+        cell = gtk.CellRendererText()
-+        self.loginsSelinuxUserCombo.pack_start(cell, True)
-+        self.loginsSelinuxUserCombo.add_attribute(cell, 'text', 0)
-+        
-+        selusers = seobject.seluserRecords().get_all(0)
-+        keys = selusers.keys()
-+        keys.sort()
-+        for k in keys:
-+            if k != "system_u":
-+                self.loginsSelinuxUserCombo.append_text(k)
-+
-+        iter = liststore.get_iter_first()
-+        while liststore.get_value(iter,0) != "user_u":
-+            iter = liststore.iter_next(iter)
-+        self.loginsSelinuxUserCombo.set_active_iter(iter)
-+        
-+    def dialogInit(self):
-+        self.__dialogSetup()
-+        store, iter = self.view.get_selection().get_selected()
-+        self.loginsNameEntry.set_text(store.get_value(iter, 0))
-+        self.loginsNameEntry.set_sensitive(False)
-+        
-+        self.loginsMLSEntry.set_text(store.get_value(iter, 2))
-+        seuser = store.get_value(iter, 1)
-+        liststore = self.loginsSelinuxUserCombo.get_model()
-+        iter = liststore.get_iter_first()
-+        while iter != None and liststore.get_value(iter,0) != seuser:
-+            iter = liststore.iter_next(iter)
-+        if iter != None:
-+            self.loginsSelinuxUserCombo.set_active_iter(iter)
-+        
-+        
-+    def dialogClear(self):
-+        self.__dialogSetup()
-+        self.loginsNameEntry.set_text("")
-+        self.loginsNameEntry.set_sensitive(True)
-+        self.loginsMLSEntry.set_text("s0")
-+        
-+    def delete(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        try:
-+            login=store.get_value(iter, 0)
-+            if login == "root" or login == "__default__":
-+                raise ValueError(_("Login '%s' is required") % login)
-+                
-+            self.wait()
-+            (rc, out) = commands.getstatusoutput("semanage login -d %s" % login)
-+            self.ready()
-+            if rc != 0:
-+                self.error(out)
-+                return False
-+            store.remove(iter)
-+            self.view.get_selection().select_path ((0,))
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def add(self):
-+        target=self.loginsNameEntry.get_text().strip()
-+        serange=self.loginsMLSEntry.get_text().strip()
-+        if serange == "":
-+            serange="s0"
-+        list_model=self.loginsSelinuxUserCombo.get_model()
-+        iter = self.loginsSelinuxUserCombo.get_active_iter()
-+        seuser = list_model.get_value(iter,0)
-+        self.wait()
-+        (rc, out) = commands.getstatusoutput("semanage login -a -s %s -r %s %s" % (seuser, serange, target))
-+        self.ready()
-+        if rc != 0:
-+            self.error(out)
-+            return False
-+        
-+        iter = self.store.append()
-+        self.store.set_value(iter, 0, target)
-+        self.store.set_value(iter, 1, seuser)
-+        self.store.set_value(iter, 2, seobject.translate(serange))
-+        
-+    def modify(self):
-+        target=self.loginsNameEntry.get_text().strip()
-+        serange=self.loginsMLSEntry.get_text().strip()
-+        if serange == "":
-+            serange = "s0"
-+        list_model = self.loginsSelinuxUserCombo.get_model()
-+        iter = self.loginsSelinuxUserCombo.get_active_iter()
-+        seuser=list_model.get_value(iter,0)
-+        self.wait()
-+        (rc, out) = commands.getstatusoutput("semanage login -m -s %s -r %s %s" % (seuser, serange, target))
-+        self.ready()
-+        if rc != 0:
-+            self.error(out)
-+            return False
-+        
-+        store, iter = self.view.get_selection().get_selected()
-+        self.store.set_value(iter, 0, target)
-+        self.store.set_value(iter, 1, seuser)
-+        self.store.set_value(iter, 2, seobject.translate(serange))
-+
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/Makefile policycoreutils-2.0.62/gui/Makefile
---- nsapolicycoreutils/gui/Makefile	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/Makefile	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,38 @@
-+# Installation directories.
-+PREFIX ?= ${DESTDIR}/usr
-+SHAREDIR ?= $(PREFIX)/share/system-config-selinux
-+
-+TARGETS= \
-+booleansPage.py \
-+domainsPage.py \
-+fcontextPage.py \
-+html_util.py \
-+loginsPage.py \
-+mappingsPage.py \
-+modulesPage.py \
-+polgen.py \
-+polgen.glade \
-+portsPage.py \
-+lockdown.glade \
-+semanagePage.py \
-+statusPage.py \
-+system-config-selinux.glade \
-+translationsPage.py \
-+usersPage.py \
-+selinux.tbl
-+
-+all: $(TARGETS) system-config-selinux.py polgengui.py templates lockdown.py 
-+
-+install: all
-+	-mkdir -p $(SHAREDIR)/templates
-+	install -m 755 system-config-selinux.py $(SHAREDIR)
-+	install -m 755 polgengui.py $(SHAREDIR)
-+	install -m 755 lockdown.py $(SHAREDIR)
-+	install -m 644 $(TARGETS) $(SHAREDIR)
-+	install -m 644 templates/*.py $(SHAREDIR)/templates/
-+
-+clean:
-+
-+indent:
-+
-+relabel:
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/mappingsPage.py policycoreutils-2.0.62/gui/mappingsPage.py
---- nsapolicycoreutils/gui/mappingsPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/mappingsPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,56 @@
-+## mappingsPage.py - show selinux mappings
-+## Copyright (C) 2006 Red Hat, Inc.
-+
-+## This program 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.
-+
-+## This program 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 this program; if not, write to the Free Software
-+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+## Author: Dan Walsh
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import gobject
-+import sys
-+import seobject
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+class loginsPage:
-+    def __init__(self, xml):
-+        self.xml = xml
-+        self.view = xml.get_widget("mappingsView")
-+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)        
-+        self.view.set_model(self.store)
-+        self.login = loginRecords()
-+        dict = self.login.get_all(0)
-+        keys = dict.keys()
-+        keys.sort()
-+        for k in keys:
-+            print "%-25s %-25s %-25s" % (k, dict[k][0], translate(dict[k][1]))
-+
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/modulesPage.py policycoreutils-2.0.62/gui/modulesPage.py
---- nsapolicycoreutils/gui/modulesPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/modulesPage.py	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,190 @@
-+## modulesPage.py - show selinux mappings
-+## Copyright (C) 2006-2009 Red Hat, Inc.
-+
-+## This program 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.
-+
-+## This program 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 this program; if not, write to the Free Software
-+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+
-+## Author: Dan Walsh
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import commands
-+import gobject
-+import sys
-+import seobject
-+import selinux
-+from semanagePage import *;
-+
-+##
-+## I18N
-+## 
-+PROGNAME="policycoreutils"
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME,
-+                    localedir="/usr/share/locale",
-+                    unicode=False,
-+                    codeset = 'utf-8')
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+class modulesPage(semanagePage):
-+    def __init__(self, xml):
-+        semanagePage.__init__(self, xml, "modules", _("Policy Module"))
-+        self.module_filter = xml.get_widget("modulesFilterEntry")
-+        self.module_filter.connect("focus_out_event", self.filter_changed)
-+        self.module_filter.connect("activate", self.filter_changed)
-+        self.audit_enabled = False
-+
-+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
-+        self.view.set_model(self.store)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)        
-+        col = gtk.TreeViewColumn(_("Module Name"), gtk.CellRendererText(), text = 0)
-+        col.set_sort_column_id(0)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
-+        col = gtk.TreeViewColumn(_("Version"), gtk.CellRendererText(), text = 1)
-+        self.enable_audit_button = xml.get_widget("enableAuditButton")
-+        self.enable_audit_button.connect("clicked", self.enable_audit)
-+        self.new_button = xml.get_widget("newModuleButton")
-+        self.new_button.connect("clicked", self.new_module)
-+        col.set_sort_column_id(1)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        self.store.set_sort_func(1,self.sort_int, "")
-+        status, self.policy_type = selinux.selinux_getpolicytype()
-+
-+        self.load()
-+        
-+    def sort_int(self, treemodel, iter1, iter2, user_data):
-+        try:
-+            p1 = int(treemodel.get_value(iter1,1))
-+            p2 = int(treemodel.get_value(iter1,1))
-+            if p1 > p2:
-+                return 1
-+            if p1 == p2:
-+                return 0
-+            return -1
-+        except:
-+            return 0
-+
-+    def load(self, filter=""):
-+        self.filter=filter            
-+        self.store.clear()
-+        try:
-+            fd=os.popen("semodule -l")
-+            l = fd.readlines()
-+            fd.close()
-+            for i in l:
-+                module, ver = i.split('\t')
-+                if not (self.match(module, filter) or self.match(ver, filter)):
-+                    continue
-+                iter = self.store.append()
-+                self.store.set_value(iter, 0, module.strip())
-+                self.store.set_value(iter, 1, ver.strip())
-+        except:
-+            pass
-+        self.view.get_selection().select_path ((0,))
-+    
-+
-+    def new_module(self, args):
-+        try:
-+            os.spawnl(os.P_NOWAIT, "/usr/share/system-config-selinux/polgengui.py")
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def delete(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        module = store.get_value(iter, 0)
-+        try:
-+            self.wait()
-+            status, output = commands.getstatusoutput("semodule -r %s" % module)
-+            self.ready()
-+            if status != 0:
-+                self.error(output)
-+            else:
-+                store.remove(iter)
-+                self.view.get_selection().select_path ((0,))
-+                
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def enable_audit(self, button):
-+        self.audit_enabled = not self.audit_enabled 
-+        try:
-+            self.wait()
-+            if self.audit_enabled:
-+                status, output =commands.getstatusoutput("semodule -DB")
-+                button.set_label(_("Disable Audit"))
-+            else:
-+                status, output =commands.getstatusoutput("semodule -B")
-+                button.set_label(_("Enable Audit"))
-+            self.ready()
-+
-+            if status != 0:
-+                self.error(output)
-+
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def disable_audit(self, button):
-+        try:
-+            self.wait()
-+            status, output =commands.getstatusoutput("semodule -B")
-+            self.ready()
-+            if status != 0:
-+                self.error(output)
-+
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-+    def propertiesDialog(self):
-+        # Do nothing
-+        return
-+    
-+    def addDialog(self):
-+        dialog = gtk.FileChooserDialog(_("Load Policy Module"),
-+                                       None,
-+                                       gtk.FILE_CHOOSER_ACTION_OPEN,
-+                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-+                                        gtk.STOCK_OPEN, gtk.RESPONSE_OK))
-+        dialog.set_default_response(gtk.RESPONSE_OK)
-+
-+        filter = gtk.FileFilter()
-+        filter.set_name("Policy Files")
-+        filter.add_pattern("*.pp")
-+        dialog.add_filter(filter)
-+
-+        response = dialog.run()
-+        if response == gtk.RESPONSE_OK:
-+            self.add(dialog.get_filename())
-+        dialog.destroy()
-+
-+    def add(self, file):
-+        try:
-+            self.wait()
-+            status, output =commands.getstatusoutput("semodule -i %s" % file)
-+            self.ready()
-+            if status != 0:
-+                self.error(output)
-+            else:
-+                self.load()
-+                
-+        except ValueError, e:
-+            self.error(e.args[0])
-diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/polgen.glade policycoreutils-2.0.62/gui/polgen.glade
---- nsapolicycoreutils/gui/polgen.glade	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.62/gui/polgen.glade	2009-02-18 16:52:27.000000000 -0500
-@@ -0,0 +1,3305 @@
-+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-+
-+<glade-interface>
-+<requires lib="gnome"/>
-+
-+<widget class="GtkFileChooserDialog" id="filechooserdialog">
-+  <property name="border_width">5</property>
-+  <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
-+  <property name="local_only">True</property>
-+  <property name="select_multiple">True</property>
-+  <property name="show_hidden">True</property>
-+  <property name="do_overwrite_confirmation">False</property>
-+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-+  <property name="window_position">GTK_WIN_POS_MOUSE</property>
-+  <property name="modal">False</property>
-+  <property name="resizable">True</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="decorated">True</property>
-+  <property name="skip_taskbar_hint">False</property>
-+  <property name="skip_pager_hint">False</property>
-+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-+  <property name="focus_on_map">True</property>
-+  <property name="urgency_hint">False</property>
-+
-+  <child internal-child="vbox">
-+    <widget class="GtkVBox" id="dialog-vbox1">
-+      <property name="visible">True</property>
-+      <property name="homogeneous">False</property>
-+      <property name="spacing">24</property>
-+
-+      <child internal-child="action_area">
-+	<widget class="GtkHButtonBox" id="dialog-action_area1">
-+	  <property name="visible">True</property>
-+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
-+
-+	  <child>
-+	    <widget class="GtkButton" id="button5">
-+	      <property name="visible">True</property>
-+	      <property name="can_default">True</property>
-+	      <property name="can_focus">True</property>
-+	      <property name="label">gtk-cancel</property>
-+	      <property name="use_stock">True</property>
-+	      <property name="relief">GTK_RELIEF_NORMAL</property>
-+	      <property name="focus_on_click">True</property>
-+	      <property name="response_id">-6</property>
-+	    </widget>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkButton" id="button6">
-+	      <property name="visible">True</property>
-+	      <property name="can_default">True</property>
-+	      <property name="has_default">True</property>
-+	      <property name="can_focus">True</property>
-+	      <property name="label">gtk-add</property>
-+	      <property name="use_stock">True</property>
-+	      <property name="relief">GTK_RELIEF_NORMAL</property>
-+	      <property name="focus_on_click">True</property>
-+	      <property name="response_id">-5</property>
-+	    </widget>
-+	  </child>
-+	</widget>
-+	<packing>
-+	  <property name="padding">0</property>
-+	  <property name="expand">False</property>
-+	  <property name="fill">True</property>
-+	  <property name="pack_type">GTK_PACK_END</property>
-+	</packing>
-+      </child>
-+    </widget>
-+  </child>
-+</widget>
-+
-+<widget class="GtkAboutDialog" id="about_dialog">
-+  <property name="border_width">5</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="name" translatable="yes">Polgen</property>
-+  <property name="copyright" translatable="yes">Red Hat 2007</property>
-+  <property name="license" translatable="yes">GPL</property>
-+  <property name="wrap_license">False</property>
-+  <property name="website">www.redhat.com</property>
-+  <property name="authors">Daniel Walsh <dwalsh at redhat.com></property>
-+  <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
-+</widget>
-+
-+<widget class="GtkWindow" id="main_window">
-+  <property name="border_width">12</property>
-+  <property name="visible">True</property>
-+  <property name="title" translatable="yes">SELinux Policy Generation Tool</property>
-+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-+  <property name="window_position">GTK_WIN_POS_NONE</property>
-+  <property name="modal">False</property>
-+  <property name="resizable">True</property>
-+  <property name="destroy_with_parent">False</property>
-+  <property name="decorated">True</property>
-+  <property name="skip_taskbar_hint">False</property>
-+  <property name="skip_pager_hint">False</property>
-+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-+  <property name="focus_on_map">True</property>
-+  <property name="urgency_hint">False</property>
-+
-+  <child>
-+    <widget class="GtkVBox" id="vbox11">
-+      <property name="visible">True</property>
-+      <property name="homogeneous">False</property>
-+      <property name="spacing">18</property>
-+
-+      <child>
-+	<widget class="GtkNotebook" id="notebook1">
-+	  <property name="visible">True</property>
-+	  <property name="show_tabs">False</property>
-+	  <property name="show_border">False</property>
-+	  <property name="tab_pos">GTK_POS_TOP</property>
-+	  <property name="scrollable">False</property>
-+	  <property name="enable_popup">False</property>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageEdge" id="start_page">
-+	      <property name="visible">True</property>
-+	      <property name="position">GNOME_EDGE_START</property>
-+	      <property name="title" translatable="yes">SELinux Policy Generation Tool</property>
-+	      <property name="text" translatable="yes">This tool can be used to generate a policy framework, to confine applications or users using SELinux.   
-+
-+The tool generates:
-+Type enforcement file (te)
-+Interface file (if)
-+File context file (fc)
-+Shell script (sh) - used to compile and install the policy. </property>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">True</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label25">
-+	      <property name="visible">True</property>
-+	      <property name="label">label25</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="select_type_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Select type of the application/user role to be confined</property>
-+	      <signal name="next" handler="on_select_type_page_next" last_modification_time="Sat, 04 Aug 2007 11:39:15 GMT"/>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="druid-vbox17">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkVBox" id="vbox14">
-+		      <property name="visible">True</property>
-+		      <property name="homogeneous">False</property>
-+		      <property name="spacing">0</property>
-+
-+		      <child>
-+			<widget class="GtkHBox" id="hbox16">
-+			  <property name="visible">True</property>
-+			  <property name="homogeneous">False</property>
-+			  <property name="spacing">12</property>
-+
-+			  <child>
-+			    <widget class="GtkVBox" id="vbox18">
-+			      <property name="visible">True</property>
-+			      <property name="homogeneous">False</property>
-+			      <property name="spacing">6</property>
-+
-+			      <child>
-+				<widget class="GtkLabel" id="label41">
-+				  <property name="visible">True</property>
-+				  <property name="label" translatable="yes"><b>Applications</b></property>
-+				  <property name="use_underline">False</property>
-+				  <property name="use_markup">True</property>
-+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				  <property name="wrap">False</property>
-+				  <property name="selectable">False</property>
-+				  <property name="xalign">0</property>
-+				  <property name="yalign">0.5</property>
-+				  <property name="xpad">0</property>
-+				  <property name="ypad">0</property>
-+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				  <property name="width_chars">-1</property>
-+				  <property name="single_line_mode">False</property>
-+				  <property name="angle">0</property>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">False</property>
-+				  <property name="fill">False</property>
-+				</packing>
-+			      </child>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox17">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">0</property>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="label52">
-+				      <property name="visible">True</property>
-+				      <property name="label">    </property>
-+				      <property name="use_underline">False</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkVBox" id="vbox6">
-+				      <property name="visible">True</property>
-+				      <property name="homogeneous">False</property>
-+				      <property name="spacing">6</property>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="init_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Standard Init Daemon are daemons started on boot via init scripts.  Usually requires a script in /etc/rc.d/init.d</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Standard Init Daemon</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="dbus_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Standard Init Daemon are daemons started on boot via init scripts.  Usually requires a script in /etc/rc.d/init.d</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">DBUS System Daemon</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="inetd_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Internet Services Daemon are daemons started by xinetd</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Internet Services Daemon (inetd)</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="cgi_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Web Applications/Script (CGI) CGI scripts started by the web server (apache)</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Web Application/Script (CGI)</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">User Application are any application that you would like to confine that is started by a user</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">User Application</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">True</property>
-+				      <property name="fill">True</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">True</property>
-+				  <property name="fill">True</property>
-+				</packing>
-+			      </child>
-+			    </widget>
-+			    <packing>
-+			      <property name="padding">0</property>
-+			      <property name="expand">True</property>
-+			      <property name="fill">True</property>
-+			    </packing>
-+			  </child>
-+
-+			  <child>
-+			    <widget class="GtkVBox" id="vbox19">
-+			      <property name="visible">True</property>
-+			      <property name="homogeneous">False</property>
-+			      <property name="spacing">6</property>
-+
-+			      <child>
-+				<widget class="GtkLabel" id="label42">
-+				  <property name="visible">True</property>
-+				  <property name="label" translatable="yes"><b>Login Users</b></property>
-+				  <property name="use_underline">False</property>
-+				  <property name="use_markup">True</property>
-+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				  <property name="wrap">False</property>
-+				  <property name="selectable">False</property>
-+				  <property name="xalign">0</property>
-+				  <property name="yalign">0.5</property>
-+				  <property name="xpad">0</property>
-+				  <property name="ypad">0</property>
-+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				  <property name="width_chars">-1</property>
-+				  <property name="single_line_mode">False</property>
-+				  <property name="angle">0</property>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">False</property>
-+				  <property name="fill">False</property>
-+				</packing>
-+			      </child>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox18">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">0</property>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="label53">
-+				      <property name="visible">True</property>
-+				      <property name="label">    </property>
-+				      <property name="use_underline">False</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkVBox" id="vbox15">
-+				      <property name="visible">True</property>
-+				      <property name="homogeneous">False</property>
-+				      <property name="spacing">6</property>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="existing_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Modify an existing login user record.</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Existing User Roles</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="terminal_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">This user will login to a machine only via a terminal or remote login.  By default this user will have  no setuid, no networking, no su, no sudo.</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Minimal Terminal User Role</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="xwindows_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">This user can login to a machine via X or terminal.  By default this user will have no setuid, no networking, no sudo, no su</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Minimal X Windows User Role</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="login_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">User with full networking, no setuid applications without transition, no sudo, no su.</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">User Role</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="admin_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">User with full networking, no setuid applications without transition, no su, can sudo to Root Administration Roles</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Admin User Role</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">True</property>
-+				      <property name="fill">True</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">True</property>
-+				  <property name="fill">True</property>
-+				</packing>
-+			      </child>
-+			    </widget>
-+			    <packing>
-+			      <property name="padding">0</property>
-+			      <property name="expand">True</property>
-+			      <property name="fill">True</property>
-+			    </packing>
-+			  </child>
-+
-+			  <child>
-+			    <widget class="GtkVBox" id="vbox20">
-+			      <property name="visible">True</property>
-+			      <property name="homogeneous">False</property>
-+			      <property name="spacing">6</property>
-+
-+			      <child>
-+				<widget class="GtkLabel" id="label50">
-+				  <property name="visible">True</property>
-+				  <property name="label" translatable="yes"><b>Root Users</b></property>
-+				  <property name="use_underline">False</property>
-+				  <property name="use_markup">True</property>
-+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				  <property name="wrap">False</property>
-+				  <property name="selectable">False</property>
-+				  <property name="xalign">0</property>
-+				  <property name="yalign">0.5</property>
-+				  <property name="xpad">0</property>
-+				  <property name="ypad">0</property>
-+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				  <property name="width_chars">-1</property>
-+				  <property name="single_line_mode">False</property>
-+				  <property name="angle">0</property>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">False</property>
-+				  <property name="fill">False</property>
-+				</packing>
-+			      </child>
-+
-+			      <child>
-+				<widget class="GtkHBox" id="hbox19">
-+				  <property name="visible">True</property>
-+				  <property name="homogeneous">False</property>
-+				  <property name="spacing">0</property>
-+
-+				  <child>
-+				    <widget class="GtkLabel" id="label54">
-+				      <property name="visible">True</property>
-+				      <property name="label">    </property>
-+				      <property name="use_underline">False</property>
-+				      <property name="use_markup">False</property>
-+				      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+				      <property name="wrap">False</property>
-+				      <property name="selectable">False</property>
-+				      <property name="xalign">0.5</property>
-+				      <property name="yalign">0.5</property>
-+				      <property name="xpad">0</property>
-+				      <property name="ypad">0</property>
-+				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+				      <property name="width_chars">-1</property>
-+				      <property name="single_line_mode">False</property>
-+				      <property name="angle">0</property>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">False</property>
-+				      <property name="fill">False</property>
-+				    </packing>
-+				  </child>
-+
-+				  <child>
-+				    <widget class="GtkVBox" id="vbox21">
-+				      <property name="visible">True</property>
-+				      <property name="homogeneous">False</property>
-+				      <property name="spacing">0</property>
-+
-+				      <child>
-+					<widget class="GtkRadioButton" id="root_user_radiobutton">
-+					  <property name="visible">True</property>
-+					  <property name="tooltip" translatable="yes">Select Root Administrator User Role, if this user will be used to administer the machine while running as root.  This user will not be able to login to the system directly.</property>
-+					  <property name="can_focus">True</property>
-+					  <property name="label" translatable="yes">Root Admin User Role</property>
-+					  <property name="use_underline">True</property>
-+					  <property name="relief">GTK_RELIEF_NORMAL</property>
-+					  <property name="focus_on_click">True</property>
-+					  <property name="active">False</property>
-+					  <property name="inconsistent">False</property>
-+					  <property name="draw_indicator">True</property>
-+					  <property name="group">init_radiobutton</property>
-+					</widget>
-+					<packing>
-+					  <property name="padding">0</property>
-+					  <property name="expand">False</property>
-+					  <property name="fill">False</property>
-+					</packing>
-+				      </child>
-+				    </widget>
-+				    <packing>
-+				      <property name="padding">0</property>
-+				      <property name="expand">True</property>
-+				      <property name="fill">True</property>
-+				    </packing>
-+				  </child>
-+				</widget>
-+				<packing>
-+				  <property name="padding">0</property>
-+				  <property name="expand">True</property>
-+				  <property name="fill">True</property>
-+				</packing>
-+			      </child>
-+			    </widget>
-+			    <packing>
-+			      <property name="padding">0</property>
-+			      <property name="expand">True</property>
-+			      <property name="fill">True</property>
-+			    </packing>
-+			  </child>
-+			</widget>
-+			<packing>
-+			  <property name="padding">0</property>
-+			  <property name="expand">True</property>
-+			  <property name="fill">True</property>
-+			</packing>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label26">
-+	      <property name="visible">True</property>
-+	      <property name="label">label26</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="app_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Enter name of application or user role to be confined</property>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="druid-vbox5">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkTable" id="table5">
-+		      <property name="visible">True</property>
-+		      <property name="n_rows">3</property>
-+		      <property name="n_columns">3</property>
-+		      <property name="homogeneous">False</property>
-+		      <property name="row_spacing">6</property>
-+		      <property name="column_spacing">12</property>
-+
-+		      <child>
-+			<widget class="GtkLabel" id="label1">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">Name</property>
-+			  <property name="use_underline">False</property>
-+			  <property name="use_markup">False</property>
-+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+			  <property name="wrap">False</property>
-+			  <property name="selectable">False</property>
-+			  <property name="xalign">0</property>
-+			  <property name="yalign">0.5</property>
-+			  <property name="xpad">0</property>
-+			  <property name="ypad">0</property>
-+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+			  <property name="width_chars">-1</property>
-+			  <property name="single_line_mode">False</property>
-+			  <property name="angle">0</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">0</property>
-+			  <property name="right_attach">1</property>
-+			  <property name="top_attach">0</property>
-+			  <property name="bottom_attach">1</property>
-+			  <property name="x_options">fill</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkEntry" id="exec_entry">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Enter complete path for executable to be confined.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="editable">True</property>
-+			  <property name="visibility">True</property>
-+			  <property name="max_length">0</property>
-+			  <property name="text" translatable="yes"></property>
-+			  <property name="has_frame">True</property>
-+			  <property name="invisible_char">•</property>
-+			  <property name="activates_default">False</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">1</property>
-+			  <property name="right_attach">2</property>
-+			  <property name="top_attach">1</property>
-+			  <property name="bottom_attach">2</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkButton" id="exec_button">
-+			  <property name="visible">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label" translatable="yes">...</property>
-+			  <property name="use_underline">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_exec_select_clicked" last_modification_time="Wed, 21 Feb 2007 18:45:26 GMT"/>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">2</property>
-+			  <property name="right_attach">3</property>
-+			  <property name="top_attach">1</property>
-+			  <property name="bottom_attach">2</property>
-+			  <property name="x_options">fill</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkEntry" id="name_entry">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Enter unique name for the confined application or user role.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="editable">True</property>
-+			  <property name="visibility">True</property>
-+			  <property name="max_length">0</property>
-+			  <property name="text" translatable="yes"></property>
-+			  <property name="has_frame">True</property>
-+			  <property name="invisible_char">•</property>
-+			  <property name="activates_default">False</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">1</property>
-+			  <property name="right_attach">3</property>
-+			  <property name="top_attach">0</property>
-+			  <property name="bottom_attach">1</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkLabel" id="label2">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">Executable</property>
-+			  <property name="use_underline">False</property>
-+			  <property name="use_markup">False</property>
-+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+			  <property name="wrap">False</property>
-+			  <property name="selectable">False</property>
-+			  <property name="xalign">0</property>
-+			  <property name="yalign">0.5</property>
-+			  <property name="xpad">0</property>
-+			  <property name="ypad">0</property>
-+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+			  <property name="width_chars">-1</property>
-+			  <property name="single_line_mode">False</property>
-+			  <property name="angle">0</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">0</property>
-+			  <property name="right_attach">1</property>
-+			  <property name="top_attach">1</property>
-+			  <property name="bottom_attach">2</property>
-+			  <property name="x_options">fill</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkLabel" id="label40">
-+			  <property name="visible">True</property>
-+			  <property name="label" translatable="yes">Init script</property>
-+			  <property name="use_underline">False</property>
-+			  <property name="use_markup">False</property>
-+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
-+			  <property name="wrap">False</property>
-+			  <property name="selectable">False</property>
-+			  <property name="xalign">0</property>
-+			  <property name="yalign">0.5</property>
-+			  <property name="xpad">0</property>
-+			  <property name="ypad">0</property>
-+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+			  <property name="width_chars">-1</property>
-+			  <property name="single_line_mode">False</property>
-+			  <property name="angle">0</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">0</property>
-+			  <property name="right_attach">1</property>
-+			  <property name="top_attach">2</property>
-+			  <property name="bottom_attach">3</property>
-+			  <property name="x_options">fill</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkEntry" id="init_script_entry">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Enter complete path to init script used to start the confined application.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="editable">True</property>
-+			  <property name="visibility">True</property>
-+			  <property name="max_length">0</property>
-+			  <property name="text" translatable="yes"></property>
-+			  <property name="has_frame">True</property>
-+			  <property name="invisible_char">•</property>
-+			  <property name="activates_default">False</property>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">1</property>
-+			  <property name="right_attach">2</property>
-+			  <property name="top_attach">2</property>
-+			  <property name="bottom_attach">3</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+
-+		      <child>
-+			<widget class="GtkButton" id="init_script_button">
-+			  <property name="visible">True</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="label" translatable="yes">...</property>
-+			  <property name="use_underline">True</property>
-+			  <property name="relief">GTK_RELIEF_NORMAL</property>
-+			  <property name="focus_on_click">True</property>
-+			  <signal name="clicked" handler="on_init_script_select_clicked" last_modification_time="Thu, 30 Aug 2007 15:36:47 GMT"/>
-+			</widget>
-+			<packing>
-+			  <property name="left_attach">2</property>
-+			  <property name="right_attach">3</property>
-+			  <property name="top_attach">2</property>
-+			  <property name="bottom_attach">3</property>
-+			  <property name="x_options">fill</property>
-+			  <property name="y_options"></property>
-+			</packing>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label28">
-+	      <property name="visible">True</property>
-+	      <property name="label">label28</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="existing_user_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Select user roles that you want to customize</property>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="vbox17">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="scrolledwindow5">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="shadow_type">GTK_SHADOW_IN</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<widget class="GtkTreeView" id="existing_user_treeview">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Select the user roles that will transiton to this applications domains.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="headers_visible">False</property>
-+			  <property name="rules_hint">False</property>
-+			  <property name="reorderable">False</property>
-+			  <property name="enable_search">True</property>
-+			  <property name="fixed_height_mode">False</property>
-+			  <property name="hover_selection">False</property>
-+			  <property name="hover_expand">False</property>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label39">
-+	      <property name="visible">True</property>
-+	      <property name="label">label28</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="transition_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Select additional domains to which this user role will transition</property>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="vbox13">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="scrolledwindow4">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="shadow_type">GTK_SHADOW_IN</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<widget class="GtkTreeView" id="transition_treeview">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Select the applications domains that you would like this user role to transition to.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="headers_visible">False</property>
-+			  <property name="rules_hint">False</property>
-+			  <property name="reorderable">False</property>
-+			  <property name="enable_search">True</property>
-+			  <property name="fixed_height_mode">False</property>
-+			  <property name="hover_selection">False</property>
-+			  <property name="hover_expand">False</property>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label30">
-+	      <property name="visible">True</property>
-+	      <property name="label">label30</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="user_transition_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Select user roles that will transition to this domain</property>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="vbox13">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="scrolledwindow4">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="shadow_type">GTK_SHADOW_IN</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<widget class="GtkTreeView" id="user_transition_treeview">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Select the user roles that will transiton to this applications domains.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="headers_visible">False</property>
-+			  <property name="rules_hint">False</property>
-+			  <property name="reorderable">False</property>
-+			  <property name="enable_search">True</property>
-+			  <property name="fixed_height_mode">False</property>
-+			  <property name="hover_selection">False</property>
-+			  <property name="hover_expand">False</property>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GtkLabel" id="label31">
-+	      <property name="visible">True</property>
-+	      <property name="label">label31</property>
-+	      <property name="use_underline">False</property>
-+	      <property name="use_markup">False</property>
-+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-+	      <property name="wrap">False</property>
-+	      <property name="selectable">False</property>
-+	      <property name="xalign">0.5</property>
-+	      <property name="yalign">0.5</property>
-+	      <property name="xpad">0</property>
-+	      <property name="ypad">0</property>
-+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+	      <property name="width_chars">-1</property>
-+	      <property name="single_line_mode">False</property>
-+	      <property name="angle">0</property>
-+	    </widget>
-+	    <packing>
-+	      <property name="type">tab</property>
-+	    </packing>
-+	  </child>
-+
-+	  <child>
-+	    <widget class="GnomeDruidPageStandard" id="admin_page">
-+	      <property name="visible">True</property>
-+	      <property name="title" translatable="yes">Select additional domains that this user role will administer</property>
-+
-+	      <child internal-child="vbox">
-+		<widget class="GtkVBox" id="vbox13">
-+		  <property name="border_width">18</property>
-+		  <property name="visible">True</property>
-+		  <property name="homogeneous">False</property>
-+		  <property name="spacing">6</property>
-+
-+		  <child>
-+		    <widget class="GtkScrolledWindow" id="scrolledwindow4">
-+		      <property name="visible">True</property>
-+		      <property name="can_focus">True</property>
-+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-+		      <property name="shadow_type">GTK_SHADOW_IN</property>
-+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-+
-+		      <child>
-+			<widget class="GtkTreeView" id="admin_treeview">
-+			  <property name="visible">True</property>
-+			  <property name="tooltip" translatable="yes">Select the domains that you would like this user administer.</property>
-+			  <property name="can_focus">True</property>
-+			  <property name="headers_visible">False</property>
-+			  <property name="rules_hint">False</property>
-+			  <property name="reorderable">False</property>
-+			  <property name="enable_search">True</property>
-+			  <property name="fixed_height_mode">False</property>
-+			  <property name="hover_selection">False</property>
-+			  <property name="hover_expand">False</property>
-+			</widget>
-+		      </child>
-+		    </widget>
-+		    <packing>
-+		      <property name="padding">0</property>
-+		      <property name="expand">True</property>
-+		      <property name="fill">True</property>
-+		    </packing>
-+		  </child>
-+		</widget>
-+	      </child>
-+	    </widget>
-+	    <packing>
-+	      <property name="tab_expand">False</property>
-+	      <property name="tab_fill">True</property>
-+	    </packing>
<Skipped 10151 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/policycoreutils.git/commitdiff/67dc9db121c27c7329c5afcd2aa59acf8095b9ec



More information about the pld-cvs-commit mailing list