policycoreutils/selinux-gui-fedora.patch

3402 lines
161 KiB
Diff

diff --git selinux-gui-2.7/Makefile selinux-gui-2.7/Makefile
index 4fc2c1a..cfe4740 100644
--- selinux-gui-2.7/Makefile
+++ selinux-gui-2.7/Makefile
@@ -11,14 +11,13 @@ domainsPage.py \
fcontextPage.py \
html_util.py \
loginsPage.py \
-mappingsPage.py \
modulesPage.py \
polgen.glade \
portsPage.py \
semanagePage.py \
statusPage.py \
-system-config-selinux.glade \
system-config-selinux.png \
+system-config-selinux.ui \
usersPage.py
all: $(TARGETS) system-config-selinux.py polgengui.py
diff --git selinux-gui-2.7/booleansPage.py selinux-gui-2.7/booleansPage.py
index a5d04bf..7849bea 100644
--- selinux-gui-2.7/booleansPage.py
+++ selinux-gui-2.7/booleansPage.py
@@ -18,13 +18,8 @@
# 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
+from gi.repository import Gdk, GObject, Gtk
import seobject
import semanagePage
@@ -61,8 +56,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-from glob import fnmatch
-
class Modifier:
@@ -94,56 +87,53 @@ class booleansPage:
def __init__(self, xml, doDebug=None):
self.xml = xml
- self.window = self.xml.get_widget("mainWindow").get_root_window()
+ self.window = self.xml.get_object("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)
+ self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
+ self.ready_cursor = Gdk.Cursor.new(Gdk.CursorType.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 = xml.get_object("booleansFilter")
self.booleansFilter.connect("focus_out_event", self.filter_changed)
self.booleansFilter.connect("activate", self.filter_changed)
+ self.booleansFilter.connect("changed", self.filter_changed)
- self.booleansView = xml.get_widget("booleansView")
- self.typeLabel = xml.get_widget("typeLabel")
- self.modifySeparator = xml.get_widget("modifySeparator")
+ self.booleansView = xml.get_object("booleansView")
- self.revertButton = xml.get_widget("booleanRevertButton")
+ self.revertButton = xml.get_object("booleanRevertButton")
self.revertButton.set_sensitive(self.local)
self.revertButton.connect("clicked", self.on_revert_clicked)
- listStore = gtk.ListStore(gobject.TYPE_STRING)
- cell = gtk.CellRendererText()
+ 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.store = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.store.set_sort_column_id(1, Gtk.SortType.ASCENDING)
self.booleansView.set_model(self.store)
- checkbox = gtk.CellRendererToggle()
+ checkbox = Gtk.CellRendererToggle()
checkbox.connect("toggled", self.boolean_toggled)
- col = gtk.TreeViewColumn('Active', checkbox, active=ACTIVE)
+ 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 = 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 = Gtk.TreeViewColumn("Description", Gtk.CellRendererText(), text=DESC)
+ col.set_sizing(Gtk.TreeViewColumnSizing.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 = 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)
@@ -152,10 +142,10 @@ class booleansPage:
self.load(self.filter)
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -178,11 +168,11 @@ class booleansPage:
def deleteDialog(self):
store, iter = self.booleansView.get_selection().get_selected()
- if iter == None:
+ if iter is None:
return
boolean = store.get_value(iter, BOOLEAN)
# change cursor
- if boolean == None:
+ if boolean is None:
return
try:
self.wait()
diff --git selinux-gui-2.7/domainsPage.py selinux-gui-2.7/domainsPage.py
index 66f882a..bad5140 100644
--- selinux-gui-2.7/domainsPage.py
+++ selinux-gui-2.7/domainsPage.py
@@ -16,19 +16,14 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
import os
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
-import gobject
import sys
-import seobject
-import selinux
+from gi.repository import GObject, Gtk
import sepolicy
from semanagePage import *
@@ -58,26 +53,26 @@ class domainsPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "domains", _("Process Domain"))
- self.domain_filter = xml.get_widget("domainsFilterEntry")
+ self.domain_filter = xml.get_object("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.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)
+ self.store.set_sort_column_id(0, Gtk.SortType.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)
+ self.store.set_sort_column_id(0, Gtk.SortType.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.permissive_button = xml.get_object("permissiveButton")
+ self.enforcing_button = xml.get_object("enforcingButton")
self.domains = sepolicy.get_all_entrypoint_domains()
self.load()
@@ -112,7 +107,7 @@ class domainsPage(semanagePage):
def itemSelected(self, selection):
store, iter = selection.get_selected()
- if iter == None:
+ if iter is None:
return
p = store.get_value(iter, 1) == _("Permissive")
self.permissive_button.set_sensitive(not p)
diff --git selinux-gui-2.7/fcontextPage.py selinux-gui-2.7/fcontextPage.py
index 2e26666..a6577ef 100644
--- selinux-gui-2.7/fcontextPage.py
+++ selinux-gui-2.7/fcontextPage.py
@@ -16,10 +16,7 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import gtk
-import gtk.glade
-import os
-import gobject
+from gi.repository import GObject, Gtk
import seobject
try:
from subprocess import getstatusoutput
@@ -73,40 +70,40 @@ class fcontextPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "fcontext", _("File Labeling"))
- self.fcontextFilter = xml.get_widget("fcontextFilterEntry")
+ self.fcontextFilter = xml.get_object("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.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
+ self.view = xml.get_object("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 = Gtk.TreeViewColumn(_("File\nSpecification"), Gtk.CellRendererText(), text=SPEC_COL)
+ col.set_sizing(Gtk.TreeViewColumnSizing.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 = Gtk.TreeViewColumn(_("Selinux\nFile Type"), Gtk.CellRendererText(), text=TYPE_COL)
- col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ col.set_sizing(Gtk.TreeViewColumnSizing.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 = 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.store.set_sort_column_id(SPEC_COL, Gtk.SortType.ASCENDING)
self.load()
- self.fcontextEntry = xml.get_widget("fcontextEntry")
- self.fcontextFileTypeCombo = xml.get_widget("fcontextFileTypeCombo")
- self.fcontextTypeEntry = xml.get_widget("fcontextTypeEntry")
- self.fcontextMLSEntry = xml.get_widget("fcontextMLSEntry")
+ self.fcontextEntry = xml.get_object("fcontextEntry")
+ self.fcontextFileTypeCombo = xml.get_object("fcontextFileTypeCombo")
+ self.fcontextTypeEntry = xml.get_object("fcontextTypeEntry")
+ self.fcontextMLSEntry = xml.get_object("fcontextMLSEntry")
def match(self, fcon_dict, k, filter):
try:
@@ -192,7 +189,7 @@ class fcontextPage(semanagePage):
mls = self.fcontextMLSEntry.get_text().strip()
list_model = self.fcontextFileTypeCombo.get_model()
it = self.fcontextFileTypeCombo.get_active_iter()
- ftype = list_model.get_value(it,0)
+ ftype = list_model.get_value(it, 0)
self.wait()
(rc, out) = getstatusoutput("semanage fcontext -a -t %s -r %s -f '%s' '%s'" % (type, mls, seobject.file_type_str_to_option[ftype], fspec))
self.ready()
diff --git selinux-gui-2.7/loginsPage.py selinux-gui-2.7/loginsPage.py
index 1f35a57..b67eb8b 100644
--- selinux-gui-2.7/loginsPage.py
+++ selinux-gui-2.7/loginsPage.py
@@ -16,17 +16,13 @@
## 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
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
+from gi.repository import GObject, Gtk
import seobject
from semanagePage import *
@@ -57,23 +53,23 @@ 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.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)
+ self.store.set_sort_column_id(0, Gtk.SortType.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 = 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 = 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")
+ self.loginsNameEntry = xml.get_object("loginsNameEntry")
+ self.loginsSelinuxUserCombo = xml.get_object("loginsSelinuxUserCombo")
+ self.loginsMLSEntry = xml.get_object("loginsMLSEntry")
def load(self, filter=""):
self.filter = filter
@@ -91,12 +87,12 @@ class loginsPage(semanagePage):
self.view.get_selection().select_path((0,))
def __dialogSetup(self):
- if self.firstTime == True:
+ if self.firstTime:
return
self.firstTime = True
- liststore = gtk.ListStore(gobject.TYPE_STRING)
+ liststore = Gtk.ListStore(GObject.TYPE_STRING)
self.loginsSelinuxUserCombo.set_model(liststore)
- cell = gtk.CellRendererText()
+ cell = Gtk.CellRendererText()
self.loginsSelinuxUserCombo.pack_start(cell, True)
self.loginsSelinuxUserCombo.add_attribute(cell, 'text', 0)
diff --git selinux-gui-2.7/modulesPage.py selinux-gui-2.7/modulesPage.py
index 3767896..34c5d9e 100644
--- selinux-gui-2.7/modulesPage.py
+++ selinux-gui-2.7/modulesPage.py
@@ -16,21 +16,16 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## Author: Dan Walsh
-import string
-import gtk
-import gtk.glade
-import os
+import sys
+from subprocess import Popen, PIPE
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
-import gobject
-import sys
-import seobject
+from gi.repository import GObject, Gtk
import selinux
from semanagePage import *
-from subprocess import Popen, PIPE
##
## I18N
@@ -58,27 +53,33 @@ class modulesPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "modules", _("Policy Module"))
- self.module_filter = xml.get_widget("modulesFilterEntry")
+ self.module_filter = xml.get_object("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.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(_("Module Name"), gtk.CellRendererText(), text=0)
+ self.store.set_sort_column_id(0, Gtk.SortType.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.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Priority"), Gtk.CellRendererText(), text=1)
+ self.enable_audit_button = xml.get_object("enableAuditButton")
self.enable_audit_button.connect("clicked", self.enable_audit)
- self.new_button = xml.get_widget("newModuleButton")
+ self.new_button = xml.get_object("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_column_id(2, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Kind"), Gtk.CellRendererText(), text=2)
+ col.set_sort_column_id(2)
+ 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()
@@ -100,16 +101,17 @@ class modulesPage(semanagePage):
self.filter = filter
self.store.clear()
try:
- fd = Popen("semodule -l", shell=True, stdout=PIPE).stdout
+ fd = Popen("semodule -lfull", shell=True, stdout=PIPE).stdout
l = fd.readlines()
fd.close()
for i in l:
- module, ver, newline = i.split('\t')
- if not (self.match(module, filter) or self.match(ver, filter)):
+ priority, module, kind = i.decode('utf-8').split()
+ if not (self.match(module, filter) or self.match(priority, filter)):
continue
iter = self.store.append()
self.store.set_value(iter, 0, module.strip())
- self.store.set_value(iter, 1, ver.strip())
+ self.store.set_value(iter, 1, priority.strip())
+ self.store.set_value(iter, 2, kind.strip())
except:
pass
self.view.get_selection().select_path((0,))
@@ -170,20 +172,20 @@ class modulesPage(semanagePage):
return
def addDialog(self):
- dialog = gtk.FileChooserDialog(_("Load Policy Module"),
+ 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)
+ Gtk.FileChooserAction.OPEN,
+ (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
+ dialog.set_default_response(Gtk.ResponseType.OK)
- filter = gtk.FileFilter()
+ filter = Gtk.FileFilter()
filter.set_name("Policy Files")
filter.add_pattern("*.pp")
dialog.add_filter(filter)
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
self.add(dialog.get_filename())
dialog.destroy()
diff --git selinux-gui-2.7/polgengui.py selinux-gui-2.7/polgengui.py
index 7460cce..bc01a62 100644
--- selinux-gui-2.7/polgengui.py
+++ selinux-gui-2.7/polgengui.py
@@ -22,11 +22,11 @@
#
import signal
import string
-import gtk
-import gtk.glade
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
import os
-import gobject
-import gnome
+from gi.repository import GObject
import sys
try:
import sepolicy
@@ -34,7 +34,9 @@ except ValueError as e:
sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
sys.exit(1)
+import sepolicy.generate
import sepolicy.interface
+
try:
from subprocess import getstatusoutput
except ImportError:
@@ -79,8 +81,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-gnome.program_init("SELinux Policy Generation Tool", "5")
-
version = "1.0"
sys.path.append('/usr/share/system-config-selinux')
@@ -95,10 +95,12 @@ def foreach(model, path, iter, selected):
##
## Pull in the Glade file
##
+xml = Gtk.Builder()
+xml.set_translation_domain(PROGNAME)
if os.access("polgen.glade", os.F_OK):
- xml = gtk.glade.XML("polgen.glade", domain=PROGNAME)
+ xml.add_from_file("polgen.glade")
else:
- xml = gtk.glade.XML("/usr/share/system-config-selinux/polgen.glade", domain=PROGNAME)
+ xml.add_from_file("/usr/share/system-config-selinux/polgen.glade")
FILE = 1
DIR = 2
@@ -277,27 +279,27 @@ class childWindow:
b.connect("clicked", self.network_all_clicked)
self.boolean_treeview = self.xml.get_widget("boolean_treeview")
- self.boolean_store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.boolean_store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING)
self.boolean_treeview.set_model(self.boolean_store)
- self.boolean_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Name"), gtk.CellRendererText(), text=0)
+ self.boolean_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Name"), Gtk.CellRendererText(), text=0)
self.boolean_treeview.append_column(col)
- col = gtk.TreeViewColumn(_("Description"), gtk.CellRendererText(), text=1)
+ col = Gtk.TreeViewColumn(_("Description"), Gtk.CellRendererText(), text=1)
self.boolean_treeview.append_column(col)
self.role_treeview = self.xml.get_widget("role_treeview")
- self.role_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.role_store = Gtk.ListStore(GObject.TYPE_STRING)
self.role_treeview.set_model(self.role_store)
- self.role_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.role_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Role"), gtk.CellRendererText(), text=0)
+ self.role_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.role_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Role"), Gtk.CellRendererText(), text=0)
self.role_treeview.append_column(col)
self.existing_user_treeview = self.xml.get_widget("existing_user_treeview")
- self.existing_user_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.existing_user_store = Gtk.ListStore(GObject.TYPE_STRING)
self.existing_user_treeview.set_model(self.existing_user_store)
- self.existing_user_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Existing_User"), gtk.CellRendererText(), text=0)
+ self.existing_user_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Existing_User"), Gtk.CellRendererText(), text=0)
self.existing_user_treeview.append_column(col)
for i in self.all_roles:
@@ -307,19 +309,19 @@ class childWindow:
self.in_tcp_reserved_checkbutton = xml.get_widget("in_tcp_reserved_checkbutton")
self.transition_treeview = self.xml.get_widget("transition_treeview")
- self.transition_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.transition_store = Gtk.ListStore(GObject.TYPE_STRING)
self.transition_treeview.set_model(self.transition_store)
- self.transition_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.transition_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.transition_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.transition_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.transition_treeview.append_column(col)
self.user_transition_treeview = self.xml.get_widget("user_transition_treeview")
- self.user_transition_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.user_transition_store = Gtk.ListStore(GObject.TYPE_STRING)
self.user_transition_treeview.set_model(self.user_transition_store)
- self.user_transition_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.user_transition_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.user_transition_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.user_transition_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.user_transition_treeview.append_column(col)
for i in self.all_users:
@@ -329,11 +331,11 @@ class childWindow:
self.existing_user_store.set_value(iter, 0, i[:-2])
self.admin_treeview = self.xml.get_widget("admin_treeview")
- self.admin_store = gtk.ListStore(gobject.TYPE_STRING)
+ self.admin_store = Gtk.ListStore(GObject.TYPE_STRING)
self.admin_treeview.set_model(self.admin_store)
- self.admin_treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- self.admin_store.set_sort_column_id(0, gtk.SORT_ASCENDING)
- col = gtk.TreeViewColumn(_("Application"), gtk.CellRendererText(), text=0)
+ self.admin_treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.admin_store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
+ col = Gtk.TreeViewColumn(_("Application"), Gtk.CellRendererText(), text=0)
self.admin_treeview.append_column(col)
try:
@@ -383,17 +385,17 @@ class childWindow:
if self.pages[type][self.current_page] == self.FINISH_PAGE:
self.generate_policy()
- self.xml.get_widget("cancel_button").set_label(gtk.STOCK_CLOSE)
+ self.xml.get_widget("cancel_button").set_label(Gtk.STOCK_CLOSE)
else:
self.current_page = self.current_page + 1
self.notebook.set_current_page(self.pages[type][self.current_page])
if self.pages[type][self.current_page] == self.FINISH_PAGE:
- self.forward_button.set_label(gtk.STOCK_APPLY)
+ self.forward_button.set_label(Gtk.STOCK_APPLY)
def back(self, arg):
type = self.get_type()
if self.pages[type][self.current_page] == self.FINISH_PAGE:
- self.forward_button.set_label(gtk.STOCK_GO_FORWARD)
+ self.forward_button.set_label(Gtk.STOCK_GO_FORWARD)
self.current_page = self.current_page - 1
self.notebook.set_current_page(self.pages[type][self.current_page])
@@ -406,30 +408,30 @@ class childWindow:
b.set_sensitive(not active)
def verify(self, message, title=""):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
dlg.set_title(title)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
return rc
def info(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_OK,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.OK,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -550,7 +552,7 @@ class childWindow:
self.boolean_description_entry.set_text("")
rc = self.boolean_dialog.run()
self.boolean_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
iter = self.boolean_store.append()
self.boolean_store.set_value(iter, 0, self.boolean_name_entry.get_text())
@@ -559,7 +561,7 @@ class childWindow:
def __add(self, type):
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
for i in self.file_dialog.get_filenames():
iter = self.store.append()
@@ -569,29 +571,29 @@ class childWindow:
def exec_select(self, args):
self.file_dialog.set_select_multiple(0)
self.file_dialog.set_title(_("Select executable file to be confined."))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_current_folder("/usr/sbin")
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.exec_entry.set_text(self.file_dialog.get_filename())
def init_script_select(self, args):
self.file_dialog.set_select_multiple(0)
self.file_dialog.set_title(_("Select init script file to be confined."))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_current_folder("/etc/rc.d/init.d")
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.init_script_entry.set_text(self.file_dialog.get_filename())
def add(self, args):
self.file_dialog.set_title(_("Select file(s) that confined application creates or writes"))
self.file_dialog.set_current_folder("/")
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
self.file_dialog.set_select_multiple(1)
self.__add(FILE)
@@ -599,7 +601,7 @@ class childWindow:
self.file_dialog.set_title(_("Select directory(s) that the confined application owns and writes into"))
self.file_dialog.set_current_folder("/")
self.file_dialog.set_select_multiple(1)
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ self.file_dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
self.__add(DIR)
def on_about_clicked(self, args):
@@ -608,7 +610,7 @@ class childWindow:
dlg.hide()
def quit(self, args):
- gtk.main_quit()
+ Gtk.main_quit()
def setupScreen(self):
# Bring in widgets from glade file.
@@ -650,20 +652,20 @@ class childWindow:
self.view = self.xml.get_widget("write_treeview")
self.file_dialog = self.xml.get_widget("filechooserdialog")
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_INT)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_INT)
self.view.set_model(self.store)
- col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=0)
col.set_resizable(True)
self.view.append_column(col)
self.view.get_selection().select_path((0,))
def output_button_clicked(self, *args):
self.file_dialog.set_title(_("Select directory to generate policy files in"))
- self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ self.file_dialog.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
self.file_dialog.set_select_multiple(0)
rc = self.file_dialog.run()
self.file_dialog.hide()
- if rc == gtk.RESPONSE_CANCEL:
+ if rc == Gtk.ResponseType.CANCEL:
return
self.output_entry.set_text(self.file_dialog.get_filename())
@@ -675,11 +677,11 @@ class childWindow:
name = entry.get_text()
if self.name != name:
if name in self.all_types:
- if self.verify(_("Type %s_t already defined in current policy.\nDo you want to continue?") % name, _("Verify Name")) == gtk.RESPONSE_NO:
+ if self.verify(_("Type %s_t already defined in current policy.\nDo you want to continue?") % name, _("Verify Name")) == Gtk.ResponseType.NO:
entry.set_text("")
return False
if name in self.all_modules:
- if self.verify(_("Module %s already loaded in current policy.\nDo you want to continue?") % name, _("Verify Name")) == gtk.RESPONSE_NO:
+ if self.verify(_("Module %s already loaded in current policy.\nDo you want to continue?") % name, _("Verify Name")) == Gtk.ResponseType.NO:
entry.set_text("")
return False
@@ -696,16 +698,16 @@ class childWindow:
def on_in_net_page_next(self, *args):
try:
- generate.verify_ports(self.in_tcp_entry.get_text())
- generate.verify_ports(self.in_udp_entry.get_text())
+ sepolicy.generate.verify_ports(self.in_tcp_entry.get_text())
+ sepolicy.generate.verify_ports(self.in_udp_entry.get_text())
except ValueError as e:
self.error(e.message)
return True
def on_out_net_page_next(self, *args):
try:
- generate.verify_ports(self.out_tcp_entry.get_text())
- generate.verify_ports(self.out_udp_entry.get_text())
+ sepolicy.generate.verify_ports(self.out_tcp_entry.get_text())
+ sepolicy.generate.verify_ports(self.out_udp_entry.get_text())
except ValueError as e:
self.error(e.message)
return True
@@ -770,7 +772,7 @@ class childWindow:
self.mainWindow.connect("destroy", self.quit)
self.mainWindow.show_all()
- gtk.main()
+ Gtk.main()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
diff --git selinux-gui-2.7/portsPage.py selinux-gui-2.7/portsPage.py
index b8fdaad..03179c5 100644
--- selinux-gui-2.7/portsPage.py
+++ selinux-gui-2.7/portsPage.py
@@ -16,12 +16,8 @@
## 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
+from gi.repository import GObject, Gtk
import seobject
TYPE_COL = 0
@@ -40,6 +36,12 @@ from semanagePage import *
## I18N
##
PROGNAME = "policycoreutils"
+
+TYPE_COL = 0
+PROTOCOL_COL = 1
+MLS_COL = 2
+PORT_COL = 3
+
try:
import gettext
kwargs = {}
@@ -62,18 +64,19 @@ class portsPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "ports", _("Network Port"))
- xml.signal_connect("on_group_clicked", self.on_group_clicked)
+ group_listview = xml.get_object("listViewButton")
+ group_listview.connect("clicked", self.on_group_clicked)
self.group = False
- self.ports_filter = xml.get_widget("portsFilterEntry")
+ self.ports_filter = xml.get_object("portsFilterEntry")
self.ports_filter.connect("focus_out_event", self.filter_changed)
self.ports_filter.connect("activate", self.filter_changed)
- self.ports_name_entry = xml.get_widget("portsNameEntry")
- self.ports_protocol_combo = xml.get_widget("portsProtocolCombo")
- self.ports_number_entry = xml.get_widget("portsNumberEntry")
- self.ports_mls_entry = xml.get_widget("portsMLSEntry")
- self.ports_add_button = xml.get_widget("portsAddButton")
- self.ports_properties_button = xml.get_widget("portsPropertiesButton")
- self.ports_delete_button = xml.get_widget("portsDeleteButton")
+ self.ports_name_entry = xml.get_object("portsNameEntry")
+ self.ports_protocol_combo = xml.get_object("portsProtocolCombo")
+ self.ports_number_entry = xml.get_object("portsNumberEntry")
+ self.ports_mls_entry = xml.get_object("portsMLSEntry")
+ self.ports_add_button = xml.get_object("portsAddButton")
+ self.ports_properties_button = xml.get_object("portsPropertiesButton")
+ self.ports_delete_button = xml.get_object("portsDeleteButton")
liststore = self.ports_protocol_combo.get_model()
iter = liststore.get_iter_first()
self.ports_protocol_combo.set_active_iter(iter)
@@ -90,28 +93,28 @@ class portsPage(semanagePage):
self.group_load(filter)
def init_store(self):
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, 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)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
self.view.set_search_equal_func(self.search)
- col = gtk.TreeViewColumn(_("SELinux Port\nType"), gtk.CellRendererText(), text=TYPE_COL)
+ col = Gtk.TreeViewColumn(_("SELinux Port\nType"), Gtk.CellRendererText(), text=TYPE_COL)
col.set_sort_column_id(TYPE_COL)
col.set_resizable(True)
self.view.append_column(col)
- self.store.set_sort_column_id(TYPE_COL, gtk.SORT_ASCENDING)
+ self.store.set_sort_column_id(TYPE_COL, Gtk.SortType.ASCENDING)
- col = gtk.TreeViewColumn(_("Protocol"), gtk.CellRendererText(), text=PROTOCOL_COL)
+ col = Gtk.TreeViewColumn(_("Protocol"), Gtk.CellRendererText(), text=PROTOCOL_COL)
col.set_sort_column_id(PROTOCOL_COL)
col.set_resizable(True)
self.view.append_column(col)
- self.mls_col = gtk.TreeViewColumn(_("MLS/MCS\nLevel"), gtk.CellRendererText(), text=MLS_COL)
+ self.mls_col = Gtk.TreeViewColumn(_("MLS/MCS\nLevel"), Gtk.CellRendererText(), text=MLS_COL)
self.mls_col.set_resizable(True)
self.mls_col.set_sort_column_id(MLS_COL)
self.view.append_column(self.mls_col)
- col = gtk.TreeViewColumn(_("Port"), gtk.CellRendererText(), text=PORT_COL)
+ col = Gtk.TreeViewColumn(_("Port"), Gtk.CellRendererText(), text=PORT_COL)
col.set_sort_column_id(PORT_COL)
col.set_resizable(True)
self.view.append_column(col)
@@ -139,7 +142,7 @@ class portsPage(semanagePage):
continue
iter = self.store.append()
if k[0] == k[1]:
- self.store.set_value(iter, PORT_COL, k[0])
+ self.store.set_value(iter, PORT_COL, str(k[0]))
else:
rec = "%s-%s" % k[:2]
self.store.set_value(iter, PORT_COL, rec)
diff --git selinux-gui-2.7/semanagePage.py selinux-gui-2.7/semanagePage.py
index 27367f3..560ec07 100644
--- selinux-gui-2.7/semanagePage.py
+++ selinux-gui-2.7/semanagePage.py
@@ -16,13 +16,8 @@
## 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
+from gi.repository import Gdk, Gtk
##
## I18N
@@ -47,24 +42,25 @@ except:
def idle_func():
- while gtk.events_pending():
- gtk.main_iteration()
+ while Gtk.events_pending():
+ Gtk.main_iteration()
class semanagePage:
def __init__(self, xml, name, description):
self.xml = xml
- 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.window = self.xml.get_object("mainWindow").get_root_window()
+ self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
+ self.ready_cursor = Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR)
self.local = False
- self.view = xml.get_widget("%sView" % name)
- self.dialog = xml.get_widget("%sDialog" % name)
- self.filter_entry = xml.get_widget("%sFilterEntry" % name)
+ self.view = xml.get_object("%sView" % name)
+ self.dialog = xml.get_object("%sDialog" % name)
+ self.filter_entry = xml.get_object("%sFilterEntry" % name)
self.filter_entry.connect("focus_out_event", self.filter_changed)
self.filter_entry.connect("activate", self.filter_changed)
+ self.filter_entry.connect("changed", self.filter_changed)
self.view.connect("row_activated", self.rowActivated)
self.view.get_selection().connect("changed", self.itemSelected)
@@ -81,7 +77,7 @@ class semanagePage:
def get_description(self):
return self.description
- def itemSelected(self, args):
+ def itemSelected(self, selection):
return
def filter_changed(self, *arg):
@@ -110,28 +106,28 @@ class semanagePage:
self.propertiesDialog()
def verify(self, message, title=""):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
dlg.set_title(title)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
return rc
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
def deleteDialog(self):
store, it = self.view.get_selection().get_selected()
- if (it is not None) and (self.verify(_("Are you sure you want to delete %s '%s'?" % (self.description, store.get_value(it, 0))), _("Delete %s" % self.description)) == gtk.RESPONSE_YES):
+ if (it is not None) and (self.verify(_("Are you sure you want to delete %s '%s'?" % (self.description, store.get_value(it, 0))), _("Delete %s" % self.description)) == Gtk.ResponseType.YES):
self.delete()
def use_menus(self):
@@ -140,11 +136,11 @@ class semanagePage:
def addDialog(self):
self.dialogClear()
self.dialog.set_title(_("Add %s" % self.description))
- self.dialog.set_position(gtk.WIN_POS_MOUSE)
+ self.dialog.set_position(Gtk.WindowPosition.MOUSE)
- while self.dialog.run() == gtk.RESPONSE_OK:
+ while self.dialog.run() == Gtk.ResponseType.OK:
try:
- if self.add() == False:
+ if not self.add():
continue
break
except ValueError as e:
@@ -154,10 +150,10 @@ class semanagePage:
def propertiesDialog(self):
self.dialogInit()
self.dialog.set_title(_("Modify %s" % self.description))
- self.dialog.set_position(gtk.WIN_POS_MOUSE)
- while self.dialog.run() == gtk.RESPONSE_OK:
+ self.dialog.set_position(Gtk.WindowPosition.MOUSE)
+ while self.dialog.run() == Gtk.ResponseType.OK:
try:
- if self.modify() == False:
+ if not self.modify():
continue
break
except ValueError as e:
diff --git selinux-gui-2.7/statusPage.py selinux-gui-2.7/statusPage.py
index 23d0d0f..766854b 100644
--- selinux-gui-2.7/statusPage.py
+++ selinux-gui-2.7/statusPage.py
@@ -16,23 +16,14 @@
## 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 tempfile
+from gi.repository import Gtk
import selinux
INSTALLPATH = '/usr/share/system-config-selinux'
sys.path.append(INSTALLPATH)
-try:
- from subprocess import getstatusoutput
-except ImportError:
- from commands import getstatusoutput
-
ENFORCING = 1
PERMISSIVE = 0
DISABLED = -1
@@ -71,12 +62,11 @@ class statusPage:
self.type = selinux.selinux_getpolicytype()
# Bring in widgets from glade file.
- self.typeHBox = xml.get_widget("typeHBox")
- self.selinuxTypeOptionMenu = xml.get_widget("selinuxTypeOptionMenu")
- self.typeLabel = xml.get_widget("typeLabel")
- self.enabledOptionMenu = xml.get_widget("enabledOptionMenu")
- self.currentOptionMenu = xml.get_widget("currentOptionMenu")
- self.relabel_checkbutton = xml.get_widget("relabelCheckbutton")
+ self.selinuxTypeOptionMenu = xml.get_object("selinuxTypeOptionMenu")
+ self.typeLabel = xml.get_object("typeLabel")
+ self.enabledOptionMenu = xml.get_object("enabledOptionMenu")
+ self.currentOptionMenu = xml.get_object("currentOptionMenu")
+ self.relabel_checkbutton = xml.get_object("relabelCheckbutton")
self.relabel_checkbutton.set_active(self.is_relabel())
self.relabel_checkbutton.connect("toggled", self.on_relabel_toggle)
if self.get_current_mode() == ENFORCING or self.get_current_mode() == PERMISSIVE:
@@ -90,7 +80,7 @@ class statusPage:
self.currentOptionMenu.set_active(0)
self.currentOptionMenu.set_sensitive(False)
- if self.read_selinux_config() == None:
+ if self.read_selinux_config() is None:
self.selinuxsupport = False
else:
self.enabledOptionMenu.connect("changed", self.enabled_changed)
@@ -131,10 +121,10 @@ class statusPage:
os.unlink(RELABELFILE)
def verify(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO,
- gtk.BUTTONS_YES_NO,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
+ Gtk.ButtonsType.YES_NO,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
rc = dlg.run()
dlg.destroy()
@@ -144,7 +134,7 @@ class statusPage:
type = self.get_type()
enabled = self.enabledOptionMenu.get_active()
if self.initialtype != type:
- if self.verify(_("Changing the policy type will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing the policy type will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == Gtk.ResponseType.NO:
menu.set_active(self.typeHistory)
return None
@@ -158,12 +148,12 @@ class statusPage:
type = self.get_type()
if self.initEnabled != DISABLED and enabled == DISABLED:
- if self.verify(_("Changing to SELinux disabled requires a reboot. It is not recommended. If you later decide to turn SELinux back on, the system will be required to relabel. If you just want to see if SELinux is causing a problem on your system, you can go to permissive mode which will only log errors and not enforce SELinux policy. Permissive mode does not require a reboot Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing to SELinux disabled requires a reboot. It is not recommended. If you later decide to turn SELinux back on, the system will be required to relabel. If you just want to see if SELinux is causing a problem on your system, you can go to permissive mode which will only log errors and not enforce SELinux policy. Permissive mode does not require a reboot Do you wish to continue?")) == Gtk.ResponseType.NO:
combo.set_active(self.enabled)
return None
if self.initEnabled == DISABLED and enabled < 2:
- if self.verify(_("Changing to SELinux enabled will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == gtk.RESPONSE_NO:
+ if self.verify(_("Changing to SELinux enabled will cause a relabel of the entire file system on the next boot. Relabeling takes a long time depending on the size of the file system. Do you wish to continue?")) == Gtk.ResponseType.NO:
combo.set_active(self.enabled)
return None
self.relabel_checkbutton.set_active(True)
diff --git selinux-gui-2.7/system-config-selinux.py selinux-gui-2.7/system-config-selinux.py
index ed41e98..ce7c74b 100644
--- selinux-gui-2.7/system-config-selinux.py
+++ selinux-gui-2.7/system-config-selinux.py
@@ -20,20 +20,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
+import os
import signal
-import string
import sys
+import gi
+gi.require_version('Gtk', '3.0')
try:
- import gtk
+ from gi.repository import Gtk
except RuntimeError as e:
print("system-config-selinux:", e)
print("This is a graphical application and requires DISPLAY to be set.")
sys.exit(1)
-import gtk.glade
-import os
-import gobject
-import gnome
+from gi.repository import GObject
import statusPage
import booleansPage
import loginsPage
@@ -64,8 +63,6 @@ except:
import __builtin__
__builtin__.__dict__['_'] = unicode
-gnome.program_init("SELinux Management Tool", "5")
-
version = "1.0"
sys.path.append('/usr/share/system-config-selinux')
@@ -74,10 +71,12 @@ sys.path.append('/usr/share/system-config-selinux')
##
## Pull in the Glade file
##
-if os.access("system-config-selinux.glade", os.F_OK):
- xml = gtk.glade.XML("system-config-selinux.glade", domain=PROGNAME)
+xml = Gtk.Builder()
+xml.set_translation_domain(PROGNAME)
+if os.access("system-config-selinux.ui", os.F_OK):
+ xml.add_from_file("system-config-selinux.ui")
else:
- xml = gtk.glade.XML("/usr/share/system-config-selinux/system-config-selinux.glade", domain=PROGNAME)
+ xml.add_from_file("/usr/share/system-config-selinux/system-config-selinux.ui")
class childWindow:
@@ -85,11 +84,16 @@ class childWindow:
def __init__(self):
self.tabs = []
self.xml = xml
- xml.signal_connect("on_quit_activate", self.destroy)
- xml.signal_connect("on_delete_clicked", self.delete)
- xml.signal_connect("on_add_clicked", self.add)
- xml.signal_connect("on_properties_clicked", self.properties)
- xml.signal_connect("on_local_clicked", self.on_local_clicked)
+ xml.connect_signals({
+ "on_quit_activate": self.destroy,
+ "on_delete_clicked": self.delete,
+ "on_add_clicked": self.add,
+ "on_properties_clicked": self.properties,
+ "on_local_clicked": self.on_local_clicked,
+ "on_policy_activate": self.policy,
+ "on_logging_activate": self.logging,
+ "on_about_activate": self.on_about_activate,
+ })
self.add_page(statusPage.statusPage(xml))
if selinux.is_selinux_enabled() > 0:
try:
@@ -103,20 +107,15 @@ class childWindow:
except ValueError as e:
self.error(e.message)
- xml.signal_connect("on_quit_activate", self.destroy)
- xml.signal_connect("on_policy_activate", self.policy)
- xml.signal_connect("on_logging_activate", self.logging)
- xml.signal_connect("on_about_activate", self.on_about_activate)
-
- self.add_menu = xml.get_widget("add_menu_item")
- self.properties_menu = xml.get_widget("properties_menu_item")
- self.delete_menu = xml.get_widget("delete_menu_item")
+ self.add_menu = xml.get_object("add_menu_item")
+ self.properties_menu = xml.get_object("properties_menu_item")
+ self.delete_menu = xml.get_object("delete_menu_item")
def error(self, message):
- dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR,
- gtk.BUTTONS_CLOSE,
+ dlg = Gtk.MessageDialog(None, 0, Gtk.MessageType.ERROR,
+ Gtk.ButtonsType.CLOSE,
message)
- dlg.set_position(gtk.WIN_POS_MOUSE)
+ dlg.set_position(Gtk.WindowPosition.MOUSE)
dlg.show_all()
dlg.run()
dlg.destroy()
@@ -143,12 +142,12 @@ class childWindow:
self.tabs[self.notebook.get_current_page()].on_local_clicked(button)
def on_about_activate(self, args):
- dlg = xml.get_widget("aboutWindow")
+ dlg = xml.get_object("aboutWindow")
dlg.run()
dlg.hide()
def destroy(self, args):
- gtk.main_quit()
+ Gtk.main_quit()
def use_menus(self, use_menus):
self.add_menu.set_sensitive(use_menus)
@@ -166,13 +165,13 @@ class childWindow:
def setupScreen(self):
# Bring in widgets from glade file.
- self.mainWindow = self.xml.get_widget("mainWindow")
- self.notebook = self.xml.get_widget("notebook")
- self.view = self.xml.get_widget("selectView")
+ self.mainWindow = self.xml.get_object("mainWindow")
+ self.notebook = self.xml.get_object("notebook")
+ self.view = self.xml.get_object("selectView")
self.view.get_selection().connect("changed", self.itemSelected)
- self.store = gtk.ListStore(gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING)
self.view.set_model(self.store)
- col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=0)
col.set_resizable(True)
self.view.append_column(col)
@@ -189,7 +188,7 @@ class childWindow:
self.mainWindow.connect("destroy", self.destroy)
self.mainWindow.show_all()
- gtk.main()
+ Gtk.main()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
diff --git selinux-gui-2.7/system-config-selinux.ui selinux-gui-2.7/system-config-selinux.ui
new file mode 100644
index 0000000..7cc1cc5
--- /dev/null
+++ selinux-gui-2.7/system-config-selinux.ui
@@ -0,0 +1,2024 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<!--*- mode: xml -*-->
+<interface>
+ <requires lib="gtk+" version="3.0"/>
+ <object class="GtkAboutDialog" id="aboutWindow">
+ <property name="name">system-config-selinux</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="type_hint">normal</property>
+ <property name="copyright" translatable="yes">Copyright (c)2006 Red Hat, Inc.
+Copyright (c) 2006 Dan Walsh &lt;dwalsh@redhat.com&gt;</property>
+ <property name="authors">Daniel Walsh &lt;dwalsh@redhat.com&gt;
+</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>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox">
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkImage" id="image13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-add</property>
+ </object>
+ <object class="GtkImage" id="image14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-properties</property>
+ </object>
+ <object class="GtkImage" id="image15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-delete</property>
+ </object>
+ <object class="GtkDialog" id="loginsDialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Add SELinux Login Mapping</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="cancelbutton1">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton1">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Login Name</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">SELinux User</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">MLS/MCS Range</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="loginsNameEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="loginsSelinuxUserCombo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="loginsMLSEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">cancelbutton1</action-widget>
+ <action-widget response="-5">okbutton1</action-widget>
+ </action-widgets>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkListStore" id="model1">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">tcp</col>
+ </row>
+ <row>
+ <col id="0">udp</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkDialog" id="portsDialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Add SELinux Network Ports</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Port Number</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Protocol</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">SELinux Type</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="portsNumberEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="portsProtocolCombo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">model1</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="portsNameEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">MLS/MCS
+Level</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="portsMLSEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button1</action-widget>
+ <action-widget response="-5">button2</action-widget>
+ </action-widgets>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkListStore" id="model2">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">all files</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">regular file</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">directory</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">character device</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">block device</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">socket file</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">symbolic link</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">named pipe</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkDialog" id="fcontextDialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Add SELinux Login Mapping</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="hbuttonbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button5">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button6">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="table4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">File Specification</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">File Type</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label27">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">SELinux Type</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="fcontextEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="fcontextFileTypeCombo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">model2</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer2"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="fcontextTypeEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">MLS</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="fcontextMLSEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button5</action-widget>
+ <action-widget response="-5">button6</action-widget>
+ </action-widgets>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkListStore" id="model3">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Disabled</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Permissive</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Enforcing</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkApplicationWindow" id="mainWindow">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">SELinux Administration</property>
+ <property name="default_width">800</property>
+ <property name="default_height">500</property>
+ <property name="icon">system-config-selinux.png</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="file1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="file1_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="add_menu_item">
+ <property name="label" translatable="yes">_Add</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image13</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_add_clicked" swapped="no"/>
+ <accelerator key="a" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="properties_menu_item">
+ <property name="label" translatable="yes">_Properties</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image14</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_properties_clicked" swapped="no"/>
+ <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="delete_menu_item">
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="image">image15</property>
+ <property name="use_stock">False</property>
+ <accelerator key="Delete" signal="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="quit">
+ <property name="label">gtk-quit</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_quit_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="help1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="help1_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="about">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_about_activate" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTreeView" id="selectView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Select Management Object</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Select:&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_tabs">False</property>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="table6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">System Default Enforcing Mode</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="enabledOptionMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="model">model3</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer3"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label48">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Current Enforcing Mode</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="currentOptionMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="typeLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">System Default Policy Type: </property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="selinuxTypeOptionMenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="relabelCheckbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Select if you wish to relabel then entire file system on next reboot. Relabeling can take a very long time, depending on the size of the system. If you are changing policy types or going from disabled to enforcing, a relabel is required.</property>
+ <property name="hexpand">False</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-refresh</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label49">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Relabel on next reboot.</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="booleanRevertButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Revert boolean setting to system default</property>
+ <property name="stock_id">gtk-revert-to-saved</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton34">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Toggle between Customized and All Booleans</property>
+ <property name="label" translatable="yes">Customized</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-find</property>
+ <signal name="clicked" handler="on_local_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label51">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="booleansFilter">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow18">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="booleansView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Boolean</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="toolbutton5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add File Context</property>
+ <property name="stock_id">gtk-add</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Modify File Context</property>
+ <property name="stock_id">gtk-properties</property>
+ <signal name="clicked" handler="on_properties_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Delete File Context</property>
+ <property name="stock_id">gtk-delete</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="customizedButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Toggle between all and customized file context</property>
+ <property name="label" translatable="yes">Customized</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-find</property>
+ <signal name="clicked" handler="on_local_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label58">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="fcontextFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow19">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="fcontextView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">File Labeling</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="toolbutton8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add SELinux User Mapping</property>
+ <property name="stock_id">gtk-add</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton29">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Modify SELinux User Mapping</property>
+ <property name="stock_id">gtk-properties</property>
+ <signal name="clicked" handler="on_properties_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Delete SELinux User Mapping</property>
+ <property name="stock_id">gtk-delete</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="loginsFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow16">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="loginsView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">User Mapping</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="toolbutton14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add User</property>
+ <property name="stock_id">gtk-add</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Modify User</property>
+ <property name="stock_id">gtk-properties</property>
+ <signal name="clicked" handler="on_properties_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Delete User</property>
+ <property name="stock_id">gtk-delete</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label56">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="usersFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow11">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="usersView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">SELinux User</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="portsAddButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add Network Port</property>
+ <property name="stock_id">gtk-add</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="portsPropertiesButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Edit Network Port</property>
+ <property name="stock_id">gtk-properties</property>
+ <signal name="clicked" handler="on_properties_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="portsDeleteButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Delete Network Port</property>
+ <property name="stock_id">gtk-delete</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="toolitem2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSeparator" id="vseparator1">
+ <property name="width_request">32</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="listViewButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Toggle between Customized and All Ports</property>
+ <property name="label" translatable="yes">Group View</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-indent</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton35">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Toggle between Customized and All Ports</property>
+ <property name="label" translatable="yes">Customized</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-find</property>
+ <signal name="clicked" handler="on_local_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label53">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="portsFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow13">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="portsView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Network Port</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="newModuleButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Generate new policy module</property>
+ <property name="stock_id">gtk-new</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Load policy module</property>
+ <property name="stock_id">gtk-add</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="toolbutton25">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Remove loadable policy module</property>
+ <property name="stock_id">gtk-remove</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="toolitem3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSeparator" id="vseparator2">
+ <property name="width_request">10</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="enableAuditButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Enable/Disable additional audit rules, that are normally not reported in the log files.</property>
+ <property name="label" translatable="yes">Enable Audit</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-zoom-in</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="modulesFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow15">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="modulesView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Policy Module</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkToolbar" id="toolbar10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="permissiveButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Change process mode to permissive.</property>
+ <property name="label" translatable="yes">Permissive</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-dialog-warning</property>
+ <signal name="clicked" handler="on_add_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="enforcingButton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Change process mode to enforcing</property>
+ <property name="label" translatable="yes">Enforcing</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-dialog-error</property>
+ <signal name="clicked" handler="on_delete_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="label60">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Filter</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="domainsFilterEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow20">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">always</property>
+ <property name="vscrollbar_policy">always</property>
+ <child>
+ <object class="GtkTreeView" id="domainsView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">Process Domain</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkDialog" id="usersDialog">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Add SELinux User</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="vbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="hbuttonbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button7">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button8">
+ <property name="label">gtk-ok</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="table5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label32">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">SELinux User</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label34">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">MLS/MCS Range</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="mlsRangeEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label36">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">SELinux Roles</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="selinuxRolesEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="selinuxUserEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">*</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">button7</action-widget>
+ <action-widget response="-5">button8</action-widget>
+ </action-widgets>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+</interface>
diff --git selinux-gui-2.7/usersPage.py selinux-gui-2.7/usersPage.py
index 75b0547..26794ed 100644
--- selinux-gui-2.7/usersPage.py
+++ selinux-gui-2.7/usersPage.py
@@ -16,17 +16,13 @@
## 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
try:
from subprocess import getstatusoutput
except ImportError:
from commands import getstatusoutput
+from gi.repository import GObject, Gtk
import seobject
from semanagePage import *
@@ -57,27 +53,27 @@ class usersPage(semanagePage):
def __init__(self, xml):
semanagePage.__init__(self, xml, "users", _("SELinux User"))
- self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.store = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING, 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)
+ self.store.set_sort_column_id(0, Gtk.SortType.ASCENDING)
- col = gtk.TreeViewColumn(_("SELinux\nUser"), gtk.CellRendererText(), text=0)
+ col = Gtk.TreeViewColumn(_("SELinux\nUser"), Gtk.CellRendererText(), text=0)
col.set_sort_column_id(0)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text=1)
+ col = Gtk.TreeViewColumn(_("MLS/\nMCS Range"), Gtk.CellRendererText(), text=1)
col.set_resizable(True)
self.view.append_column(col)
- col = gtk.TreeViewColumn(_("SELinux Roles"), gtk.CellRendererText(), text=2)
+ col = Gtk.TreeViewColumn(_("SELinux Roles"), Gtk.CellRendererText(), text=2)
col.set_resizable(True)
self.view.append_column(col)
self.load()
- self.selinuxUserEntry = xml.get_widget("selinuxUserEntry")
- self.mlsRangeEntry = xml.get_widget("mlsRangeEntry")
- self.selinuxRolesEntry = xml.get_widget("selinuxRolesEntry")
+ self.selinuxUserEntry = xml.get_object("selinuxUserEntry")
+ self.mlsRangeEntry = xml.get_object("mlsRangeEntry")
+ self.selinuxRolesEntry = xml.get_object("selinuxRolesEntry")
def load(self, filter=""):
self.filter = filter
@@ -95,10 +91,6 @@ class usersPage(semanagePage):
self.store.set_value(iter, 2, dict[k][3])
self.view.get_selection().select_path((0,))
- def delete(self):
- if semanagePage.delete(self) == gtk.RESPONSE_NO:
- return None
-
def dialogInit(self):
store, iter = self.view.get_selection().get_selected()
self.selinuxUserEntry.set_text(store.get_value(iter, 0))