[policycoreutils/f20] Add Miroslav Grepl Patch to handle semanage -i and semanage -o better

Daniel J Walsh dwalsh at fedoraproject.org
Fri Aug 30 20:17:47 UTC 2013


commit 378ad5cdbaacce750e79acc29ff0379b76a3339a
Author: Dan Walsh <dwalsh at redhat.com>
Date:   Fri Aug 30 16:17:28 2013 -0400

    Add Miroslav Grepl Patch to handle semanage -i and semanage -o better
    
    - Update Translations

 policycoreutils-rhat.patch | 3203 +++++++++++++++++++++++++++-----------------
 policycoreutils.spec       |   13 +-
 2 files changed, 1973 insertions(+), 1243 deletions(-)
---
diff --git a/policycoreutils-rhat.patch b/policycoreutils-rhat.patch
index 932ae14..18215f3 100644
--- a/policycoreutils-rhat.patch
+++ b/policycoreutils-rhat.patch
@@ -304689,10 +304689,10 @@ index b24322e..d6c8880 100644
 +msgid "Boolean %s Allow Rules"
  msgstr ""
 diff --git a/policycoreutils/po/ml.po b/policycoreutils/po/ml.po
-index e7b146f..b45469a 100644
+index e7b146f..5b7e2da 100644
 --- a/policycoreutils/po/ml.po
 +++ b/policycoreutils/po/ml.po
-@@ -3,13 +3,14 @@
+@@ -3,14 +3,15 @@
  # This file is distributed under the same license as the PACKAGE package.
  # 
  # Translators:
@@ -304705,11 +304705,13 @@ index e7b146f..b45469a 100644
  "Report-Msgid-Bugs-To: \n"
 -"POT-Creation-Date: 2013-01-04 12:01-0500\n"
 -"PO-Revision-Date: 2013-01-04 17:02+0000\n"
+-"Last-Translator: dwalsh <dwalsh at redhat.com>\n"
 +"POT-Creation-Date: 2013-07-10 16:36-0400\n"
-+"PO-Revision-Date: 2013-07-10 20:43+0000\n"
- "Last-Translator: dwalsh <dwalsh at redhat.com>\n"
++"PO-Revision-Date: 2013-08-22 10:03+0000\n"
++"Last-Translator: Ani Peter <apeter at redhat.com>\n"
  "Language-Team: Malayalam <discuss at lists.smc.org.in>\n"
  "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
 @@ -25,7 +26,7 @@ msgid ""
  "         <args ...> are the arguments to that script."
  msgstr "USAGE: run_init <script> <args ...>\n  where: <script> പ്രവര്‍ത്തിപ്പിക്കുവാനുളള init scriptന്‍റെ പേര്,\n         <args ...> സ്ക്രിപ്പ്റ്റിനുളള arguments."
@@ -304745,7 +304747,7 @@ index e7b146f..b45469a 100644
 +#: ../semanage/seobject.py:288
 +#, python-format
 +msgid "Module does not exists %s "
-+msgstr ""
++msgstr "ഘടകത്തില്‍ %s നിലവിലില്ല"
 +
 +#: ../semanage/seobject.py:298
  #, python-format
@@ -304786,7 +304788,7 @@ index e7b146f..b45469a 100644
 +"In some distributions it is included in the policycoreutils-devel patckage.\n"
 +"# yum install policycoreutils-devel\n"
 +"Or similar for your distro."
-+msgstr ""
++msgstr "പെര്‍മ്മിസ്സീവ് ഡൊമെയിനുകള്‍ സജ്ജമാക്കുന്നതിനു് sepolgen പൈഥണ്‍ ഘടകം ആവശ്യമുണ്ടു്.\nചില വിതരണങ്ങളില്‍, ഇതു് policycoreutils-devel പാക്കേജില്‍ ഉള്‍പ്പെടുത്തിയിരിയ്ക്കുന്നു.\n# yum install policycoreutils-devel\nഅല്ലെങ്കില്‍ നിങ്ങളുടെ വിതരണത്തിനുള്ളതു്."
 +
 +#: ../semanage/seobject.py:418
  #, python-format
@@ -306904,7 +306906,7 @@ index e7b146f..b45469a 100644
 -#: booleans.py:70
 +#: booleans.py:72
 +msgid "Allow http daemon to connect to mythtv"
-+msgstr ""
++msgstr "mythtv-ലേക്കു് കണക്ട് ചെയ്യുന്നതിനു് http ഡെമണിനെ അനുവദിയ്ക്കുക"
 +
 +#: booleans.py:73
  msgid "Allow http daemon to connect to zabbix"
@@ -307066,23 +307068,23 @@ index e7b146f..b45469a 100644
  msgstr "ഓപ്പണ്‍സ്റ്റാക്ക് പോര്‍ട്ടുകള്‍ ലഭ്യമാക്കുന്നതിനായി httpd-യെ അനുവദിയ്ക്കുക"
  
 -#: booleans.py:100
--msgid "Allow Apache to query NS records"
 +#: booleans.py:103
 +msgid "Allow httpd to connect to  sasl"
- msgstr ""
++msgstr "sasl-ലേക്കു് കണക്ട് ചെയ്യുന്നതിനു് httpd അനുവദിയ്ക്കുക"
++
++#: booleans.py:104
+ msgid "Allow Apache to query NS records"
+-msgstr ""
++msgstr "എന്‍എസ് റിക്കോര്‍ഡുകള്‍ ചോദ്യം ചെയ്യുന്നതിനായി അപ്പാച്ചയെ അനുവദിയ്ക്കുക"
  
 -#: booleans.py:101
 -msgid "Allow icecast to connect to all ports, not just sound ports."
 -msgstr "എല്ലാ പോര്‍ട്ടുകളിലേക്കു് കണക്ട് ചെയ്യുന്നതിനായി icecast-നെ അനുവദിയ്ക്കുക."
-+#: booleans.py:104
-+msgid "Allow Apache to query NS records"
-+msgstr "എന്‍എസ് റിക്കോര്‍ഡുകള്‍ ചോദ്യം ചെയ്യുന്നതിനായി അപ്പാച്ചയെ അനുവദിയ്ക്കുക"
- 
--#: booleans.py:102
 +#: booleans.py:105
 +msgid "Determine whether icecast can listen on and connect to any TCP port."
 +msgstr "icecast-നു് ശ്രദ്ധിച്ചു്, ഏതെങ്കിലും ടിസിപി പോര്‍ട്ടിലേക്കു് കണക്ട് ചെയ്യുവാന്‍ സാധ്യമോ എന്നു് കണ്ടുപിടിയ്ക്കുക."
-+
+ 
+-#: booleans.py:102
 +#: booleans.py:106
 +msgid ""
 +"Determine whether irc clients can listen on and connect to any unreserved "
@@ -307160,7 +307162,7 @@ index e7b146f..b45469a 100644
 -msgstr "ഏതു് ഡയറക്ടറിയും ഫയലും മൌണ്ട് ചെയ്യുവാന്‍ mount കമാന്‍ഡിനെ അനുവദിയ്ക്കുക."
 +#: booleans.py:121
 +msgid "Allow the mount commands to mount any directory or file."
-+msgstr ""
++msgstr "ഏതെങ്കിലും ഡയറക്ടറി അല്ലെങ്കില്‍ ഫയല്‍ മൌണ്ട് ചെയ്യുന്നതിനായി മൌണ്ട് കമാന്‍ഡുകളെ അനുവദിയ്ക്കുക."
  
 -#: booleans.py:110
 +#: booleans.py:122
@@ -307173,12 +307175,12 @@ index e7b146f..b45469a 100644
 -msgstr "ഉപയോക്താക്കള്‍ക്കുള്ള ആസ്ഥാന ഡയറക്ടറിയില്‍ പെട്ടെന്നുള്ള വിവരങ്ങള്‍ തയ്യാറാക്കുവാന്‍ mozilla_plugin-കളെ അനുവദിയ്ക്കുക"
 +#: booleans.py:123
 +msgid "Allow mozilla plugin to support GPS."
-+msgstr ""
++msgstr "ജിപിഎസ് പിന്തുണയ്ക്കുന്നിനു് മോസിലാ പ്ലഗിനെ അനുവദിയ്ക്കുക."
  
 -#: booleans.py:112
 +#: booleans.py:124
 +msgid "Allow mozilla plugin to support spice protocols."
-+msgstr ""
++msgstr "സ്പയിസ് സമ്പ്രദായങ്ങള്‍ പിന്തുണയ്ക്കുന്നതിനായി മോസിലാ പ്ലഗിനെ അനുവദിയ്ക്കുക."
 +
 +#: booleans.py:125
  msgid "Allow confined web browsers to read home directory content"
@@ -307349,7 +307351,7 @@ index e7b146f..b45469a 100644
 -"Allow privoxy to connect to all ports, not just HTTP, FTP, and Gopher ports."
 -msgstr "HTTP, FTP, ഗോഫര്‍ പോര്‍ട്ടുകള്‍ മാത്രമല്ല, എല്ലാ പോര്‍ട്ടുകളിലേക്കും കണക്ട് ചെയ്യുവാന്‍ privoxy-നെ അനുവദിയ്ക്കുക."
 +"Permit to prosody to bind apache port. Need to be activated to use BOSH."
-+msgstr ""
++msgstr "അപ്പാച്ചെ പോര്‍ട്ട് ബൈന്‍ഡ് ചെയ്യുന്നതിനു് prosody-യെ അനുവദിയ്ക്കുക. ബിഒഎസ്എച് ഉപയോഗിയ്ക്കുന്നതിനു് സജീവമാക്കേണ്ടതുണ്ടു്."
  
 -#: booleans.py:139
 +#: booleans.py:156
@@ -307558,12 +307560,12 @@ index e7b146f..b45469a 100644
 +#: booleans.py:190
  msgid "Allow user  to use ssh chroot environment."
 -msgstr ""
--
++msgstr "ssh chroot എന്‍വയണ്മെന്റ് ഉപയോഗിയ്ക്കുന്നതിനായി ഉപയോക്താവിനെ അനുവദിയ്ക്കുക."
+ 
 -#: booleans.py:175
 -msgid "Allow user music sharing"
 -msgstr "ഉപയോക്താവിനെ സംഗീതം പങ്കിടുന്നതിനായി അനുവദിയ്ക്കുക"
-+msgstr "ssh chroot എന്‍വയണ്മെന്റ് ഉപയോഗിയ്ക്കുന്നതിനായി ഉപയോക്താവിനെ അനുവദിയ്ക്കുക."
- 
+-
 -#: booleans.py:176
 +#: booleans.py:191
  msgid ""
@@ -307701,7 +307703,7 @@ index e7b146f..b45469a 100644
 -#: booleans.py:196
 +#: booleans.py:211
 +msgid "Allow testpolicy to exec content"
-+msgstr ""
++msgstr "ഉള്ളടക്കം നടപ്പിലാക്കുന്നതിനായി testpolicy-യെ അനുവദിയ്ക്കുക"
 +
 +#: booleans.py:212
  msgid ""
@@ -307895,7 +307897,7 @@ index e7b146f..b45469a 100644
 +msgid ""
 +"Allow the graphical login program to create files in HOME dirs as "
 +"xdm_home_t."
-+msgstr ""
++msgstr "ആസ്ഥാന ഡയറക്ടറികളിലുള്ള ഫയലുകളെ xdm_home_t ആയി തയ്യാറാക്കുന്നതിനു് ഗ്രാഫിക്കല്‍ പ്രവേശന പ്രോഗ്രാമിനെ അനുവദിയ്ക്കുക."
 +
 +#: booleans.py:243
  msgid "Allow xen to manage nfs files"
@@ -307971,7 +307973,7 @@ index e7b146f..b45469a 100644
 +
 +#: booleans.py:256
 +msgid "Allow ZoneMinder to run su/sudo."
-+msgstr ""
++msgstr "su/sudo നടപ്പിലാക്കുന്നതിനായി ZoneMinder-നെ അനുവദിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy.py:194
 +#, python-format
@@ -307980,7 +307982,7 @@ index e7b146f..b45469a 100644
 +
 +#: ../sepolicy/sepolicy.py:281
 +msgid "Graphical User Interface for SELinux Policy"
-+msgstr ""
++msgstr "SELinux പോളിസിയ്ക്കുള്ള ഗ്രാഫിക്കല്‍ യൂസര്‍ ഇന്റര്‍ഫെയിസ്"
 +
 +#: ../sepolicy/sepolicy.py:305
 +msgid "Generate SELinux man pages"
@@ -308114,11 +308116,11 @@ index e7b146f..b45469a 100644
 +
 +#: ../sepolicy/sepolicy.py:528
 +msgid "Enter SELinux role(s) to which the administror domain will transition"
-+msgstr ""
++msgstr "അഡ്മിനിസ്ട്രേറ്റര്‍ ഡൊമെയിന്‍ മാറ്റുന്നതിനുള്ള SELinux നിയമനം നല്‍കുക"
 +
 +#: ../sepolicy/sepolicy.py:531
 +msgid "Enter domain(s) which this confined admin will administrate"
-+msgstr ""
++msgstr "ഈ അഡ്മിന്‍ നിരീക്ഷിയ്ക്കുന്ന ഡൊമെയിന്‍ നല്‍കുക"
 +
 +#: ../sepolicy/sepolicy.py:534
 +msgid "name of policy to generate"
@@ -308165,35 +308167,35 @@ index e7b146f..b45469a 100644
 +
 +#: ../sepolicy/sepolicy/__init__.py:167 ../sepolicy/sepolicy/gui.py:479
 +msgid "all files"
-+msgstr ""
++msgstr "എല്ലാ ഫയലുകളും"
 +
 +#: ../sepolicy/sepolicy/__init__.py:168
 +msgid "regular file"
-+msgstr ""
++msgstr "സാധാരണ ഫയല്‍"
 +
 +#: ../sepolicy/sepolicy/__init__.py:169
 +msgid "directory"
-+msgstr ""
++msgstr "ഡയറക്ടറി"
 +
 +#: ../sepolicy/sepolicy/__init__.py:170
 +msgid "character device"
-+msgstr ""
++msgstr "ക്യാരക്ടര്‍ ഡിവൈസ്"
 +
 +#: ../sepolicy/sepolicy/__init__.py:171
 +msgid "block device"
-+msgstr ""
++msgstr "ബ്ലോക്ക് ഡിവൈസ്"
 +
 +#: ../sepolicy/sepolicy/__init__.py:172
 +msgid "socket file"
-+msgstr ""
++msgstr "സോക്കറ്റ് ഫയല്‍"
 +
 +#: ../sepolicy/sepolicy/__init__.py:173
 +msgid "symbolic link"
-+msgstr ""
++msgstr "സിംബോളിക്ക് ലിങ്ക്"
 +
 +#: ../sepolicy/sepolicy/__init__.py:174
 +msgid "named pipe"
-+msgstr ""
++msgstr "നെയിമ്ഡ് പൈപ്പ്"
 +
 +#: ../sepolicy/sepolicy/__init__.py:306
 +msgid "No SELinux Policy installed"
@@ -308201,7 +308203,7 @@ index e7b146f..b45469a 100644
 +
 +#: ../sepolicy/sepolicy/__init__.py:386
 +msgid "You must regenerate interface info by running /usr/bin/sepolgen-ifgen"
-+msgstr ""
++msgstr "/usr/bin/sepolgen-ifgen നടപ്പിലാക്കി ഇന്റര്‍ഫെയിസ് വിവരം വീണ്ടും ലഭ്യമാക്കണം"
 +
 +#: ../sepolicy/sepolicy/__init__.py:591
 +#, python-format
@@ -308338,368 +308340,368 @@ index e7b146f..b45469a 100644
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:7
 +msgid "SELinux Gui"
-+msgstr ""
++msgstr "SELinux ജിയുഐ"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:33
 +msgid "Type to search for a process"
-+msgstr ""
++msgstr "ഒരു പ്രക്രിയ തെരയുന്നതിനായി ടൈപ്പ് ചെയ്യുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:35
 +msgid "Select domain"
-+msgstr ""
++msgstr "ഡൊമെയിന്‍ തെരഞ്ഞെടുക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:70
 +#: ../sepolicy/sepolicy/sepolicy.glade:308
 +msgid "Booleans"
-+msgstr ""
++msgstr "ബൂളിയനുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:74
 +msgid ""
 +"Display boolean information that can be used to modify the policy for the "
 +"'selected domain'."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനുള്ള' പോളിസിയില്‍ മാറ്റം വരുത്തുന്നതിനുള്ള ബൂളിയന്‍ വിവരം കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:85
 +#: ../sepolicy/sepolicy/sepolicy.glade:710
 +msgid "Files"
-+msgstr ""
++msgstr "ഫയലുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:89
 +msgid ""
 +"Display file type information that can be used by the 'selected domain'."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിന്‍' ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമാകുന്ന ഫയല്‍ തരത്തിലുള്ള വിവരം കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:100
 +#: ../sepolicy/sepolicy/sepolicy.glade:1062
 +msgid "Network"
-+msgstr ""
++msgstr "നെറ്റ്‌വര്‍ക്ക്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:104
 +msgid ""
 +"Display network ports to which the 'selected domain' can connect or listen "
 +"to."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനു്' കണക്ട് ചെയ്യുവാന്‍ സാധിയ്ക്കുന്ന അല്ലെങ്കില്‍ ശ്രദ്ധിയ്ക്കുവാന്‍ സാധിയ്ക്കുന്ന നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍ കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:115
 +#: ../sepolicy/sepolicy/sepolicy.glade:1361
 +msgid "Transitions"
-+msgstr ""
++msgstr "മാറ്റങ്ങള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:119
 +msgid ""
 +"Display applications that can transition into or out of the 'selected "
 +"domain'."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കുള്ള' അല്ലെങ്കില്‍ പുറത്തേക്കുള്ള മാറ്റങ്ങള്‍ക്കുള്ള പ്രയോഗങ്ങള്‍ പ്രദര്‍ശിപ്പിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:188
 +#: ../sepolicy/sepolicy/sepolicy.glade:358
 +#: ../sepolicy/sepolicy/sepolicy.glade:765
 +#: ../sepolicy/sepolicy/sepolicy.glade:1113
 +msgid "Show Modified Only"
-+msgstr ""
++msgstr "മാറ്റം വരുത്തിയവ മാത്രം കാണിയ്ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:219
 +msgid ""
 +"If-Then-Else rules written in policy that can \n"
 +"allow alternative access control."
-+msgstr ""
++msgstr "മറ്റൊരു രീതിയിലുള്ള പ്രവേശന നിയന്ത്രണം അനുവദിയ്ക്കുന്നതിനുള്ള\nIf-Then-Else നിയമങ്ങള്‍ പോളിസിയില്‍ സൂക്ഷിച്ചിരിയ്ക്കുന്നു."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:373
 +#: ../sepolicy/sepolicy/sepolicy.glade:787
 +#: ../sepolicy/sepolicy/sepolicy.glade:1128
 +msgid "Modify"
-+msgstr ""
++msgstr "മാറ്റം വരുത്തുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:377
 +#: ../sepolicy/sepolicy/sepolicy.glade:791
 +msgid "Modify an existing item"
-+msgstr ""
++msgstr "നിലവിലുള്ളൊരു വസ്തുവില്‍ മാറ്റം വരുത്തുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:389
 +#: ../sepolicy/sepolicy/sepolicy.glade:803
 +#: ../sepolicy/sepolicy/sepolicy.glade:1142
 +msgid "Delete"
-+msgstr ""
++msgstr "വെട്ടി നീക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:393
 +#: ../sepolicy/sepolicy/sepolicy.glade:807
 +msgid "Delete an existing item"
-+msgstr ""
++msgstr "നിലവിലുള്ളൊരു വസ്തു വെട്ടി നീക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:409
 +#: ../sepolicy/sepolicy/sepolicy.glade:823
 +msgid "Add a new item"
-+msgstr ""
++msgstr "പുതിയൊരു വസ്തു ചേര്‍ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:442
 +msgid "File path used to enter the above selected process domain."
-+msgstr ""
++msgstr "മുകളില്‍ തെരഞ്ഞെടുത്ത ഡൊമെയിന്‍ നല്‍കുവാനുള്ള ഫയല്‍ പാഥ്."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:450
 +#: ../sepolicy/sepolicy/sepolicy.glade:531
 +msgid "File Path"
-+msgstr ""
++msgstr "ഫയല്‍ പാഥ്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:468
 +#: ../sepolicy/sepolicy/sepolicy.glade:549
 +msgid "SELinux File Label"
-+msgstr ""
++msgstr "SELinux ഫയല്‍ ലേബല്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:485
 +#: ../sepolicy/sepolicy/sepolicy.glade:567
 +#: ../sepolicy/sepolicy/sepolicy.glade:660
 +msgid "Class"
-+msgstr ""
++msgstr "ക്ലാസ്സ്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:505
 +msgid "File path used to enter the 'selected domain'."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിന്‍' നല്‍കുവാനുള്ള ഫയല്‍ പാഥ്."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:506
 +msgid "Executable Files"
-+msgstr ""
++msgstr "നടപ്പിലാക്കുവാന്‍ സാധ്യമാകുന്ന ഫയലുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:523
 +msgid "Files to which the above selected process domain can write."
-+msgstr ""
++msgstr "മുകളില്‍ തെരഞ്ഞെടുത്ത പ്രക്രിയകളിലേക്കു് സൂക്ഷിയ്ക്കുവാന്‍ സാധ്യമാകുന്ന ഫയലുകള്‍."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:591
 +msgid "Files to which the 'selected domain' can write."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കു്' സൂക്ഷിയ്ക്കുവാന്‍ സാധ്യമായ ഫയലുകള്‍."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:592
 +msgid "Writable Files"
-+msgstr ""
++msgstr "എഴുതുവാന്‍ സാധ്യമാകുന്ന ഫയലുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:610
 +msgid "File Types defined for the selected domain"
-+msgstr ""
++msgstr "തെരഞ്ഞെടുത്ത ഡൊമെയിനുള്ള ഫയല്‍ തരങ്ങള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:618
 +msgid "File path"
-+msgstr ""
++msgstr "ഫയല്‍ പാഥ്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:686
 +msgid "File Types defined for the 'selected domain'."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനുള്ള' ഫയല്‍ തരങ്ങള്‍."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:687
 +msgid "Application File Types"
-+msgstr ""
++msgstr "പ്രയോഗത്തിനുള്ള ഫയല്‍ തരങ്ങള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:856
 +msgid "Network Ports to which the selected domain is allowed to connect."
-+msgstr ""
++msgstr "കണക്ട് ചെയ്യുവാന്‍ അനുവദിയ്ക്കുന്ന തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കുള്ള നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:898
 +#: ../sepolicy/sepolicy/sepolicy.glade:997
 +msgid "Modified"
-+msgstr ""
++msgstr "മാറ്റം വരുത്തിയവ"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:937
 +msgid "Network Ports to which the 'selected domain' is allowed to connect."
-+msgstr ""
++msgstr "കണക്ട് ചെയ്യുവാന്‍ അനുവദിയ്ക്കുന്ന 'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കുള്ള' നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:938
 +msgid "Outbound"
-+msgstr ""
++msgstr "ഔട്ട്ബൌണ്ട്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:955
 +msgid "Network Ports to which the selected domain is allowed to listen."
-+msgstr ""
++msgstr "ശ്രദ്ധിയ്ക്കുവാന്‍ അനുവദിയ്ക്കുന്ന തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കുള്ള നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1038
 +msgid "Network Ports to which the 'selected domain' is allowed to listen."
-+msgstr ""
++msgstr "ശ്രദ്ധിയ്ക്കുവാന്‍ അനുവദിയ്ക്കുന്ന 'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കുള്ള' നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1039
 +msgid "Inbound"
-+msgstr ""
++msgstr "ഇന്‍ബൌണ്ട്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1189
 +#: ../sepolicy/sepolicy/sepolicy.glade:1260
 +msgid ""
 +"Executables which will transition to a different domain, when the 'selected "
 +"domain' executes them."
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിന്‍' എക്സിക്യൂട്ടബിളുകളെ നടപ്പിലാക്കുമ്പോള്‍, അവ മറ്റൊരു ഡൊമെയിനിലേക്കു് മാറുന്നു."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1194
 +#: ../sepolicy/sepolicy/sepolicy.glade:1285
 +msgid "Enabled"
-+msgstr ""
++msgstr "പ്രവര്‍ത്തന സജ്ജം"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1223
 +msgid "Executable File Type"
-+msgstr ""
++msgstr "നടപ്പിലാക്കുവാന്‍ സാധിയ്ക്കുന്ന ഫയല്‍ തരം"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1239
 +msgid "Transtype"
-+msgstr ""
++msgstr "ട്രാന്‍സ്‌ടൈപ്പ്"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1263
 +msgid "Transitions From 'select domain'"
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കു്' മാറുന്നു"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1280
 +#: ../sepolicy/sepolicy/sepolicy.glade:1337
 +msgid ""
 +"Executables which will transition to the 'selected domain', when executing a"
 +" selected domains entrypoint."
-+msgstr ""
++msgstr "തെരഞ്ഞെടുത്ത ഡൊമെയിന്‍ എന്‍ട്രിപോയിന്റ് നടപ്പിലാക്കുമ്പോള്‍, നടപ്പിലാക്കുന്നവ 'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കു്' മാറുന്നു."
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1299
 +msgid "Calling Process Domain"
-+msgstr ""
++msgstr "പ്രക്രിയ ഡൊമെയിന്‍ ലഭ്യമാക്കുന്നു"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1313
 +msgid "Executable File"
-+msgstr ""
++msgstr "നടപ്പിലാക്കുവാന്‍ സാധ്യമാകുന്ന ഫയല്‍"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1338
 +msgid "Transitions Into 'select domain'"
-+msgstr ""
++msgstr "'തെരഞ്ഞെടുത്ത ഡൊമെയിനിലേക്കു്' മാറ്റുന്നു"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1388
 +msgid "Reset"
-+msgstr ""
++msgstr "വീണ്ടും സജ്ജമാക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1392
 +msgid "Reset to system default"
-+msgstr ""
++msgstr "സിസ്റ്റത്തിന്റെ സഹജമായതിലേക്കു് വീണ്ടും സജ്ജമാക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1403
 +msgid "Update"
-+msgstr ""
++msgstr "പരിഷ്കരിയ്ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1407
 +msgid "Save your changes"
-+msgstr ""
++msgstr "നിങ്ങളുടെ മാറ്റങ്ങള്‍ സൂക്ഷിയ്ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1454
 +#: ../sepolicy/sepolicy/sepolicy.glade:1541
 +#: ../sepolicy/sepolicy/sepolicy.glade:1629
 +msgid "Add a File"
-+msgstr ""
++msgstr "ഒരു ഫയല്‍ ചേര്‍ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1504
 +#: ../sepolicy/sepolicy/sepolicy.glade:1592
 +#: ../sepolicy/sepolicy/sepolicy.glade:1680
 +msgid "Save changes"
-+msgstr ""
++msgstr "മാറ്റങ്ങള്‍ സൂക്ഷിയ്ക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1518
 +#: ../sepolicy/sepolicy/sepolicy.glade:1606
 +#: ../sepolicy/sepolicy/sepolicy.glade:1694
 +msgid "Reset Changes"
-+msgstr ""
++msgstr "മാറ്റങ്ങള്‍ വീണ്ടും സജ്ജമാക്കുക"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1780
 +msgid "Applicaiton more detailed view"
-+msgstr ""
++msgstr "പ്രയോഗത്തിന്റെ കൂടുതല്‍ വിശദമായ കാഴ്ച"
 +
 +#: ../sepolicy/sepolicy/sepolicy.glade:1874
 +msgid "Analyzing Policy..."
-+msgstr ""
++msgstr "പോളിസി നിരീക്ഷിയ്ക്കുന്നു..."
 +
 +#: ../sepolicy/sepolicy/gui.py:49
 +msgid "No"
-+msgstr ""
++msgstr "ഇല്ല"
 +
 +#: ../sepolicy/sepolicy/gui.py:49
 +msgid "Yes"
-+msgstr ""
++msgstr "ഉവ്വു്"
 +
 +#: ../sepolicy/sepolicy/gui.py:61
 +msgid "GTK Not Available"
-+msgstr ""
++msgstr "ജിറ്റികെ ലഭ്യമല്ല"
 +
 +#: ../sepolicy/sepolicy/gui.py:195
 +msgid "System Status: Enforcing"
-+msgstr ""
++msgstr "സിസ്റ്റം അവസ്ഥ: എന്‍ഫോഴ്സിങ്"
 +
 +#: ../sepolicy/sepolicy/gui.py:197
 +msgid "System Status: Permissive"
-+msgstr ""
++msgstr "സിസ്റ്റം അവസ്ഥ: പെര്‍മ്മിസ്സീവ്"
 +
 +#: ../sepolicy/sepolicy/gui.py:199
 +msgid "System Status: Disabled"
-+msgstr ""
++msgstr "സിസ്റ്റം അവസ്ഥ: പ്രവര്‍ത്തന രഹിതം"
 +
 +#: ../sepolicy/sepolicy/gui.py:413
 +#, python-format
 +msgid "File path used to enter the '%s' domain."
-+msgstr ""
++msgstr "'%s' ഡൊമെയിന്‍ നല്‍കുന്നതിനുള്ള ഫയല്‍ പാഥ്."
 +
 +#: ../sepolicy/sepolicy/gui.py:414
 +#, python-format
 +msgid "Files to which the '%s' domain can write."
-+msgstr ""
++msgstr "'%s' ഡൊമെയിന്‍ സൂക്ഷിയ്ക്കുവാന്‍ സാധ്യമായ ഫയലുകള്‍."
 +
 +#: ../sepolicy/sepolicy/gui.py:415
 +#, python-format
 +msgid "Network Ports to which the '%s' is allowed to connect."
-+msgstr ""
++msgstr "കണക്ട് ചെയ്യുവാന്‍ അനുവദിയ്ക്കുന്ന '%s'-നുള്ള നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍."
 +
 +#: ../sepolicy/sepolicy/gui.py:416
 +#, python-format
 +msgid "Network Ports to which the '%s' is allowed to listen."
-+msgstr ""
++msgstr "ശ്രദ്ധിയ്ക്കുവാന്‍ അനുവദിയ്ക്കുന്ന '%s'-നുള്ള നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍."
 +
 +#: ../sepolicy/sepolicy/gui.py:417
 +#, python-format
 +msgid "File Types defined for the '%s'."
-+msgstr ""
++msgstr "'%s'-നു് നിഷ്കര്‍ഷിച്ചിട്ടുള്ള ഫയല്‍ തരങ്ങള്‍."
 +
 +#: ../sepolicy/sepolicy/gui.py:418
 +#, python-format
 +msgid ""
 +"Display boolean information that can be used to modify the policy for the "
 +"'%s'."
-+msgstr ""
++msgstr "'%s'-നുള്ള പോളിസി മാറ്റുന്നതിനുള്ള ബൂളിയന്‍ വിവരം കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/gui.py:419
 +#, python-format
 +msgid "Display file type information that can be used by the '%s'."
-+msgstr ""
++msgstr "'%s'-നു് ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമായ ഫയല്‍ രിതിയിലുള്ള വിവരങ്ങള്‍ കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/gui.py:420
 +#, python-format
 +msgid "Display network ports to which the '%s' can connect or listen to."
-+msgstr ""
++msgstr "'%s'-നു് കണക്ട് ചെയ്യുവാന്‍ അല്ലെങ്കില്‍ ശ്രദ്ധിയ്ക്കുവാനുള്ള നെറ്റ്‌വര്‍ക്ക് പോര്‍ട്ടുകള്‍ കാണിയ്ക്കുക."
 +
 +#: ../sepolicy/sepolicy/gui.py:421
 +#, python-format
 +msgid "Transitions Into '%s'"
-+msgstr ""
++msgstr "'%s'-ലേക്കുള്ള മാറ്റങ്ങള്‍"
 +
 +#: ../sepolicy/sepolicy/gui.py:422
 +#, python-format
 +msgid "Transitions From '%s'"
-+msgstr ""
++msgstr "'%s'-ല്‍ നിന്നുമുള്ള മാറ്റങ്ങള്‍"
 +
 +#: ../sepolicy/sepolicy/gui.py:423
 +#, python-format
 +msgid ""
 +"Executables which will transition to the '%s', when executing a selected "
 +"domains entrypoint."
-+msgstr ""
++msgstr "'%s'-ലേക്കു് മാറുന്ന എക്സിക്യൂട്ടബിളുകള്‍, തെരഞ്ഞെടുത്തൊരു ഡൊമെയിന്‍ എന്‍ട്രിപോയിന്റ് നടപ്പിലാക്കുമ്പോള്‍ മാത്രം."
 +
 +#: ../sepolicy/sepolicy/gui.py:424
 +#, python-format
 +msgid ""
 +"Executables which will transition to a different domain, when the '%s' "
 +"executes them."
-+msgstr ""
++msgstr "മറ്റൊരു ഡൊമെയിനിലേക്കു് മാറുന്ന എക്സിക്യൂട്ടബിളുകള്‍, ഇവിടെ '%s' അവയെ നടപ്പിലാക്കുന്നു."
 +
 +#: ../sepolicy/sepolicy/gui.py:425
 +#, python-format
 +msgid "Display applications that can transition into or out of the '%s'."
-+msgstr ""
++msgstr "'%s'-ല്‍ നിന്നോ അല്ലെങ്കില്‍ അതിലേക്കുള്ള പ്രയോഗങ്ങള്‍ കാണിയ്ക്കുക"
 +
 +#: ../sepolicy/sepolicy/gui.py:604
 +#, python-format
 +msgid "Boolean %s Allow Rules"
-+msgstr ""
++msgstr "ബൂളിയന്‍ %s നിയമങ്ങള്‍ അനുവദിയ്ക്കുന്നു"
 diff --git a/policycoreutils/po/mn.po b/policycoreutils/po/mn.po
 new file mode 100644
 index 0000000..b0d96a4
@@ -509385,7 +509387,7 @@ index 7c6d75a..d095a25 100644
  .TP
  \fB\-d\fR
 diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles
-index 6901e4d..9cfe355 100755
+index 6901e4d..7025dbd 100755
 --- a/policycoreutils/scripts/fixfiles
 +++ b/policycoreutils/scripts/fixfiles
 @@ -3,7 +3,7 @@
@@ -509548,7 +509550,7 @@ index 6901e4d..9cfe355 100755
  #
  LogReadOnly() {
  if [ ! -z "$FILESYSTEMSRO" ]; then
-@@ -209,7 +209,7 @@ rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' '
+@@ -209,11 +209,14 @@ rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' '
  [ ${PIPESTATUS[0]} != 0 ] && echo "$1 not found" >/dev/stderr
  }
  
@@ -509557,7 +509559,14 @@ index 6901e4d..9cfe355 100755
  # restore
  # if called with -n will only check file context
  #
-@@ -241,8 +241,8 @@ then
+ restore () {
++OPTION=$1
++shift
++
+ if [ ! -z "$PREFC" ]; then
+     diff_filecontext $*
+     exit $?
+@@ -241,8 +244,8 @@ then
  	TEMPFCFILE=`mktemp ${FC}.XXXXXXXXXX`
  	test -z "$TEMPFCFILE" && exit
  	/bin/cp -p ${FC} ${TEMPFCFILE} &>/dev/null || exit
@@ -509568,16 +509577,25 @@ index 6901e4d..9cfe355 100755
  	do
  		p="${p%/}"
  		p1="${p}(/.*)? -- <<none>>"
-@@ -253,7 +253,7 @@ FC=$TEMPFCFILE
+@@ -252,11 +255,15 @@ then
+ FC=$TEMPFCFILE
  fi
  if [  -n "${FILESYSTEMSRW}" ]; then
-     echo "Relabeling `echo ${FILESYSTEMSRW}`"
+-    echo "Relabeling `echo ${FILESYSTEMSRW}`"
 -    ${SETFILES} ${VERBOSE} -q ${FORCEFLAG} $* ${FC} ${FILESYSTEMSRW} 2>&1 | cat >> $LOGFILE
++    echo "${OPTION}ing `echo ${FILESYSTEMSRW}`"
 +    ${SETFILES} ${VERBOSE} $exclude_dirs -q ${FORCEFLAG} $* ${FC} ${FILESYSTEMSRW} 2>&1 | cat >> $LOGFILE
  else
      echo >&2 "fixfiles: No suitable file systems found"
  fi
-@@ -265,7 +265,7 @@ find /tmp \( -context "*:${UNLABELED}*" -o -context "*:${UNDEFINED}*" \) \( -typ
++if [ ${OPTION} .ne "Relabel" ]; then
++    return
++fi
++echo "Cleaning up labels on /tmp"
+ rm -rf /tmp/gconfd-* /tmp/pulse-* /tmp/orbit-* $TEMPFCFILE
+ 
+ UNDEFINED=`get_undefined_type` || exit $?
+@@ -265,7 +272,7 @@ find /tmp \( -context "*:${UNLABELED}*" -o -context "*:${UNDEFINED}*" \) \( -typ
  find /tmp \( -context "*:${UNLABELED}*" -o -context "*:${UNDEFINED}*" \) -exec chcon --reference /tmp {} \;
  find /var/tmp \( -context "*:${UNLABELED}*" -o -context "*:${UNDEFINED}*" \) -exec chcon --reference /var/tmp {} \;
  find /var/run \( -context "*:${UNLABELED}*" -o -context "*:${UNDEFINED}*" \) -exec chcon --reference /var/run {} \;
@@ -509586,16 +509604,22 @@ index 6901e4d..9cfe355 100755
  exit $?
  }
  
-@@ -278,7 +278,7 @@ fullrelabel() {
+@@ -273,12 +280,12 @@ fullrelabel() {
+     logit "Cleaning out /tmp"
+     find /tmp/ -mindepth 1 -delete
+     LogReadOnly
+-    restore
++    restore Relabel
+ }
  
  relabel() {
      if [ ! -z "$RPMFILES" ]; then
 -	restore 
-+	restore
++	restore Relabel
      fi
  
      if [ $fullFlag == 1  ]; then
-@@ -286,13 +286,13 @@ relabel() {
+@@ -286,16 +293,16 @@ relabel() {
      fi
  
      echo -n "
@@ -509612,8 +509636,25 @@ index 6901e4d..9cfe355 100755
 +    if [ "$answer" = y -o  "$answer" = Y ]; then
  	fullrelabel
      else
- 	restore
-@@ -322,14 +322,14 @@ case "$1" in
+-	restore
++	restore Relabel
+     fi
+ }
+ 
+@@ -304,9 +311,9 @@ process() {
+ # Make sure they specified one of the three valid commands
+ #
+ case "$1" in
+-    restore) restore;;
+-    check) restore -n -v;;
+-    verify) restore -n -o -;;
++    restore) restore Relabel;;
++    check) restore Check -n -v;;
++    verify) restore Verify -n -o -;;
+     relabel) relabel;;
+     onboot)
+ 	> /.autorelabel
+@@ -322,14 +329,14 @@ case "$1" in
  esac
  }
  usage() {
@@ -509633,7 +509674,7 @@ index 6901e4d..9cfe355 100755
  """
  }
  
-@@ -343,7 +343,6 @@ while getopts "N:BC:FfR:l:v" i; do
+@@ -343,7 +350,6 @@ while getopts "N:BC:FfR:l:v" i; do
      case "$i" in
  	B)
  		BOOTTIME=`/bin/who -b | awk '{print $3}'`
@@ -509641,7 +509682,7 @@ index 6901e4d..9cfe355 100755
  		;;
  	f)
  		fullFlag=1
-@@ -351,13 +350,13 @@ while getopts "N:BC:FfR:l:v" i; do
+@@ -351,13 +357,13 @@ while getopts "N:BC:FfR:l:v" i; do
  	v)
  		VERBOSE="-v"
  		;;
@@ -509658,7 +509699,7 @@ index 6901e4d..9cfe355 100755
  		PREFC=$OPTARG
  		;;
  	F)
-@@ -397,11 +396,11 @@ else
+@@ -397,11 +403,11 @@ else
      if [ -z "$1" ]; then
  	process $command
      else
@@ -509801,7 +509842,7 @@ index 6c30734..f6b4b9a 100644
  will try reading a context from stdin, if that is not a tty, otherwise 
  .B secon
 diff --git a/policycoreutils/semanage/Makefile b/policycoreutils/semanage/Makefile
-index 24d6a21..d3aff45 100644
+index 24d6a21..8fc8e0b 100644
 --- a/policycoreutils/semanage/Makefile
 +++ b/policycoreutils/semanage/Makefile
 @@ -5,7 +5,7 @@ SBINDIR ?= $(PREFIX)/sbin
@@ -509826,7 +509867,7 @@ index 24d6a21..d3aff45 100644
 +	install -m 644 $(BASHCOMPLETIONS) $(BASHCOMPLETIONDIR)/semanage
  
 +test:
-+	@python test-semanage.py -v
++	@python test-semanage.py -a
  clean:
  
  indent:
@@ -509975,7 +510016,7 @@ index 0000000..e2befdb
 +      packages=["policycoreutils"],
 +)
 diff --git a/policycoreutils/semanage/semanage b/policycoreutils/semanage/semanage
-index 6e33c85..2c1c855 100644
+index 6e33c85..c9a0060 100644
 --- a/policycoreutils/semanage/semanage
 +++ b/policycoreutils/semanage/semanage
 @@ -1,5 +1,7 @@
@@ -509987,7 +510028,7 @@ index 6e33c85..2c1c855 100644
  # see file 'COPYING' for use and warranty information
  #
  # semanage is a tool for managing SELinux configuration files
-@@ -19,564 +21,795 @@
+@@ -19,564 +21,813 @@
  #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA     
  #                                        02111-1307  USA
  #
@@ -510753,16 +510794,34 @@ index 6e33c85..2c1c855 100644
 +
 +    return commandParser
 +
-+def make_args(sys_args):
-+    args = []
-+    for i in sys_args[1:]:
-+        if i == '-o':
-+            args += [ "export", "-f" ]
++def make_io_args(args):
++    # import/export backward compability
++    args_origin = ["-S", "-o", "-i", "targeted", "minumum", "mls"]
++    args_file = []
++    args_ie = []
++    args_subcommand = []
++
++    for i in args:
++        if i == "-o":
++            args_subcommand = ["export"]
++            continue
++        if i == "-i":
++            args_subcommand = ["import"]
 +            continue
-+        if i == '-i':
-+            args += [ "import", "-f" ]
++        if i not in args_origin:
++            args_file = ["-f", i]
 +            continue
-+        args.append(i)
++        args_ie.append(i)
++
++    return args_subcommand+args_ie+args_file
++
++def make_args(sys_args):
++    args = []
++    if "-o" in sys_args[1:] or "-i" in sys_args[1:]:
++        args=make_io_args(sys_args[1:])
++    else:
++        args=sys_args[1:]
++
 +    return args
 +
 +def do_parser():
@@ -512452,7 +512511,7 @@ index 28a9022..90b142e 100644
 +usage: semanage [-h]
 +                
 diff --git a/policycoreutils/semanage/seobject.py b/policycoreutils/semanage/seobject.py
-index 85bc37f..f2981c0 100644
+index 85bc37f..8ef5558 100644
 --- a/policycoreutils/semanage/seobject.py
 +++ b/policycoreutils/semanage/seobject.py
 @@ -32,32 +32,47 @@ from IPy import IP
@@ -512589,7 +512648,20 @@ index 85bc37f..f2981c0 100644
  	except RuntimeError:
  		valid_types = []
  
-@@ -1751,9 +1776,15 @@ class fcontextRecords(semanageRecords):
+@@ -1696,6 +1721,12 @@ class fcontextRecords(semanageRecords):
+ 
+         def add_equal(self, target, substitute):
+                 self.begin()
++                if target != "/" and target[-1] == "/":
++                        raise ValueError(_("Target %s is not valid. Target is not allowed to end with '/'") % target )
++
++                if substitute[-1] == "/":
++                       raise ValueError(_("Substiture %s is not valid. Substitute is not allowed to end with '/'") % substitute )
++
+                 if target in self.equiv.keys():
+                        raise ValueError(_("Equivalence class for %s already exists") % target)
+                 self.validate(target)
+@@ -1751,9 +1782,15 @@ class fcontextRecords(semanageRecords):
  				       raise ValueError(_("File spec %s conflicts with equivalency rule '%s %s'; Try adding '%s' instead") % (target, i, fdict[i], t))
  
  
@@ -512606,7 +512678,7 @@ index 85bc37f..f2981c0 100644
  		if is_mls_enabled == 1:
                         serange = untranslate(serange)
  			
-@@ -1777,7 +1808,8 @@ class fcontextRecords(semanageRecords):
+@@ -1777,7 +1814,8 @@ class fcontextRecords(semanageRecords):
                                raise ValueError(_("Could not check if file context for %s is defined") % target)
  
                  if exists:
@@ -512616,7 +512688,7 @@ index 85bc37f..f2981c0 100644
  
  		(rc, fcontext) = semanage_fcontext_create(self.sh)
  		if rc < 0:
-@@ -1966,11 +1998,11 @@ class fcontextRecords(semanageRecords):
+@@ -1966,11 +2004,11 @@ class fcontextRecords(semanageRecords):
                 keys.sort()
                 for k in keys:
                        if fcon_dict[k]:
@@ -512630,7 +512702,7 @@ index 85bc37f..f2981c0 100644
                 return l
  
  	def list(self, heading = 1, locallist = 0 ):
-@@ -2156,7 +2188,7 @@ class booleanRecords(semanageRecords):
+@@ -2156,7 +2194,7 @@ class booleanRecords(semanageRecords):
                 keys.sort()
                 for k in keys:
                        if ddict[k]:
@@ -512641,14 +512713,16 @@ index 85bc37f..f2981c0 100644
  	def list(self, heading = True, locallist = False, use_file = False):
 diff --git a/policycoreutils/semanage/test-semanage.py b/policycoreutils/semanage/test-semanage.py
 new file mode 100644
-index 0000000..2aeffba
+index 0000000..6363398
 --- /dev/null
 +++ b/policycoreutils/semanage/test-semanage.py
-@@ -0,0 +1,189 @@
-+import unittest, os, shutil 
+@@ -0,0 +1,285 @@
++import unittest, os, shutil, sys
 +from tempfile import mkdtemp
 +from subprocess import Popen, PIPE
 +
++import argparse
++
 +object_list = [ 'login', 'user', 'port', 'module', 'interface', 'node', 'fcontext', 'boolean','permissive', "dontaudit"]
 +
 +class SemanageTests(unittest.TestCase):
@@ -512681,10 +512755,26 @@ index 0000000..2aeffba
 +        p = Popen(['semanage', "export", '-f', '/tmp/out'], stdout = PIPE)
 +        out, err = p.communicate()
 +        self.assertSuccess(p.returncode, err)
++        print("Verify semanage export -S targeted -f -")
++        p = Popen(["semanage","export","-S","targeted","-f","-"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
++        print("Verify semanage -S targeted -o -")
++        p = Popen(["semanage","-S","targeted","-o","-"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
 +        print("Verify semanage import -f /tmp/out")
 +        p = Popen(['semanage', "import", '-f', '/tmp/out'], stdout = PIPE)
 +        out, err = p.communicate()
 +        self.assertSuccess(p.returncode, err)
++        print("Verify semanage import -S targeted -f /tmp/out")
++        p = Popen(["semanage","import","-S","targeted","-f", "/tmp/out"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
++        print("Verify semanage -S targeted -i /tmp/out")
++        p = Popen(["semanage", "-S","targeted","-i", "/tmp/out"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
 +
 +    def test_list(self):
 +        for object in object_list:
@@ -512827,11 +512917,89 @@ index 0000000..2aeffba
 +            p = Popen(["semanage", "user", "-d", "testuser_u" ], stdout = PIPE)
 +            out, err = p.communicate()
 +            self.assertSuccess(p.returncode, err)
++   
++    def test_boolean(self):
++        import selinux
++        boolean_status={0:"--off",1:"--on"}
++        boolean_state=selinux.security_get_boolean_active("httpd_anon_write")
++        # Test
++        print("Verify semanage boolean -m %s httpd_anon_write" % boolean_status[not boolean_state])
++        p = Popen(["semanage","boolean","-m",boolean_status[(not boolean_state)],"httpd_anon_write"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
++        print("Verify semanage boolean -m %s httpd_anon_write" % boolean_status[boolean_state])
++        p = Popen(["semanage","boolean","-m",boolean_status[boolean_state],"httpd_anon_write"], stdout = PIPE)
++        out, err = p.communicate()
++        self.assertSuccess(p.returncode, err)
++
++def semanage_suite():
++    semanage_suite = unittest.TestSuite()
++    semanage_suite.addTest(unittest.makeSuite(SemanageTests))
++
++    return semanage_suite
++
++def semanage_custom_suite(test_list):
++    suiteSemanage=unittest.TestSuite()
++    for t in test_list:
++        suiteSemanage.addTest(SemanageTests(t))
++
++    return suiteSemanage
++
++def semanage_run_test(suite):
++    unittest.TextTestRunner(verbosity=2).run(suite)
++
++class CheckTest(argparse.Action):
++    def __call__(self, parser, namespace, values, option_string=None):
++        newval = getattr(namespace, self.dest)
++        if not newval:
++            newval = []
++        for v in values:
++            if v not in semanage_test_list:
++                raise ValueError("%s must be an unit test.\nValid tests: %s" % (v, ", ".join(semanage_test_list)))
++            newval.append(v)
++        setattr(namespace, self.dest, newval)
++
++def semanage_args(args):
++    if args.list:
++        print("You can run the following tests:")
++        for i in semanage_test_list:
++            print(i)
++    if args.all:
++        semanage_run_test(semanage_suite())
++    if args.test:
++        semanage_run_test(semanage_custom_suite(args.test))
++
++def gen_semanage_test_args(parser):
++    group = parser.add_mutually_exclusive_group(required=True)
++    group.add_argument('-a', "--all", dest="all", default=False,
++                        action="store_true",
++                        help=("Run all semanage unit tests"))
++    group.add_argument('-l', "--list", dest="list", default=False,
++                        action="store_true",
++                        help=("List all semanage unit tests"))
++    group.add_argument('-t', "--test", dest="test", default=[],
++                        action=CheckTest, nargs="*",
++                        help=("Run selected semanage unit test(s)"))
++    group.set_defaults(func=semanage_args)
 +
 +if __name__ == "__main__":
 +    import selinux
++    semanage_test_list=filter(lambda x: x.startswith("test_"), dir(SemanageTests))
 +    if selinux.security_getenforce() == 1:
-+        unittest.main()
++        parser = argparse.ArgumentParser(description='Semanage unit test script')
++        gen_semanage_test_args(parser)
++        try:
++            args = parser.parse_args()
++            args.func(args)
++            sys.exit(0)
++        except ValueError,e:
++            sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
++            sys.exit(1)
++        except IOError,e:
++            sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e)))
++            sys.exit(1)
++        except KeyboardInterrupt:
++            sys.exit(0)
 +    else:
 +        print("SELinux must be in enforcing mode for this test")
 diff --git a/policycoreutils/semodule/Makefile b/policycoreutils/semodule/Makefile
@@ -513321,10 +513489,10 @@ index 4eca22d..2a9e1c7 100644
  init_info(m);
 diff --git a/policycoreutils/sepolicy/selinux_server.py b/policycoreutils/sepolicy/selinux_server.py
 new file mode 100644
-index 0000000..2870634
+index 0000000..dfefb65
 --- /dev/null
 +++ b/policycoreutils/sepolicy/selinux_server.py
-@@ -0,0 +1,65 @@
+@@ -0,0 +1,115 @@
 +#!/usr/bin/python
 +
 +import dbus
@@ -513382,6 +513550,56 @@ index 0000000..2870634
 +    def setenforce(self, value):
 +        selinux.security_setenforce(value)
 +
++    #
++    # The setenforce method turns off the current enforcement of SELinux
++    #
++    @dbus.service.method("org.selinux", in_signature='i')
++    def relabel_on_boot(self, value):
++        if value == 1:
++            fd = open("/.autorelabel","w")
++            fd.close()
++        else:
++            os.unlink("/.autorelabel")
++
++    def write_selinux_config(self, enforcing=None, policy=None):
++        path = selinux.selinux_path() + "config" 
++        backup_path = path + ".bck"
++        fd = open(path)
++        lines = fd.readlines()
++        fd.close()
++        fd = open(backup_path, "w")
++        for l in lines:
++            if enforcing and l.startswith("SELINUX="):
++                fd.write("SELINUX=%s\n" % enforcing)
++                continue
++            if policy and l.startswith("SELINUXTYPE="):
++                fd.write("SELINUXTYPE=%s\n" % policy)
++                continue
++            fd.write(l)
++        fd.close()
++        os.rename(backup_path, path)
++
++    #
++    # The change_default_enforcement modifies the current enforcement mode 
++    #
++    @dbus.service.method("org.selinux", in_signature='s')
++    def change_default_mode(self, value):
++        values = [ "enforcing", "permissive", "disabled" ]
++        if value not in values:
++            raise ValueError("Enforcement mode must be %s" % ", ".join(values))
++        self.write_selinux_config(enforcing=value)
++        
++
++    #
++    # The change_default_policy method modifies the policy type
++    #
++    @dbus.service.method("org.selinux", in_signature='s')
++    def change_default_policy(self, value):
++        path = selinux.selinux_path() + value
++        if os.path.isdir(path):
++            return self.write_selinux_config(policy=value)
++        raise ValueError("%s does not exist" % path)
++        
 +if __name__ == "__main__":
 +        mainloop = gobject.MainLoop()
 +        dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
@@ -513602,10 +513820,10 @@ index fb84af6..9408c5e 100644
  .br
 diff --git a/policycoreutils/sepolicy/sepolicy-gui.8 b/policycoreutils/sepolicy/sepolicy-gui.8
 new file mode 100644
-index 0000000..49ea4b4
+index 0000000..6f4bee0
 --- /dev/null
 +++ b/policycoreutils/sepolicy/sepolicy-gui.8
-@@ -0,0 +1,26 @@
+@@ -0,0 +1,29 @@
 +.TH "sepolicy-gui" "8" "20121005" "" ""
 +.SH "NAME"
 +sepolicy-gui \- Graphical User Interface for SELinux policy.
@@ -513614,7 +513832,7 @@ index 0000000..49ea4b4
 +
 +Common options
 +
-+.B sepolicy gui [\-h ] 
++.B sepolicy gui [\-h ] [ \-d DOMAIN ]
 +
 +.br
 +
@@ -513626,6 +513844,9 @@ index 0000000..49ea4b4
 +.TP
 +.I                \-h, \-\-help
 +Display help message
++.TP
++.I                \-d, \-\-domain     
++Initialize gui to the selected domain.
 +
 +.SH "AUTHOR"
 +This man page was written by Daniel Walsh <dwalsh at redhat.com>
@@ -513796,7 +514017,7 @@ index 0748ca9..6348287 100644
 -selinux(8), sepolicy-booleans(8), sepolicy-communicate(8), sepolicy-generate(8), sepolicy-interface(8),  sepolicy-network(8), sepolicy-manpage(8), sepolicy-transition(8)
 +selinux(8), sepolicy-booleans(8), sepolicy-communicate(8), sepolicy-generate(8),sepolicy-gui(8), sepolicy-interface(8),  sepolicy-network(8), sepolicy-manpage(8), sepolicy-transition(8)
 diff --git a/policycoreutils/sepolicy/sepolicy.py b/policycoreutils/sepolicy/sepolicy.py
-index b25d3b2..9afb149 100755
+index b25d3b2..cc3c3e6 100755
 --- a/policycoreutils/sepolicy/sepolicy.py
 +++ b/policycoreutils/sepolicy/sepolicy.py
 @@ -22,6 +22,8 @@
@@ -513876,7 +514097,7 @@ index b25d3b2..9afb149 100755
          newval = getattr(namespace, self.dest)
          if not newval:
              newval = []
-@@ -140,102 +165,168 @@ class CheckPolicyType(argparse.Action):
+@@ -140,102 +165,171 @@ class CheckPolicyType(argparse.Action):
  
  class CheckUser(argparse.Action):
      def __call__(self, parser, namespace, value, option_string=None):
@@ -514027,7 +514248,7 @@ index b25d3b2..9afb149 100755
 +def gui_run(args):
 +    try:
 +        import sepolicy.gui
-+        sepolicy.gui.SELinuxGui()
++        sepolicy.gui.SELinuxGui(args.domain)
 +        pass 
 +    except ImportError:
 +        raise ValueError(_("You need to install policycoreutils-gui package to use the gui option"))
@@ -514035,6 +514256,9 @@ index b25d3b2..9afb149 100755
 +def gen_gui_args(parser):
 +    gui = parser.add_parser("gui",
 +                            help=_('Graphical User Interface for SELinux Policy'))
++    gui.add_argument("-d", "--domain", default=None,
++                       action=CheckDomain,
++                       help=_("Domain name(s) of man pages to be created"))
 +    gui.set_defaults(func=gui_run)
  
  def manpage(args):
@@ -514102,7 +514326,7 @@ index b25d3b2..9afb149 100755
  
  def gen_network_args(parser):
          net = parser.add_parser("network",
-@@ -245,15 +336,18 @@ def gen_network_args(parser):
+@@ -245,15 +339,18 @@ def gen_network_args(parser):
          group.add_argument("-l", "--list", dest="list_ports",
                             action="store_true",
                              help=_("list all SELinux port types"))
@@ -514124,7 +514348,7 @@ index b25d3b2..9afb149 100755
          net.set_defaults(func=network)
  
  def communicate(args):
-@@ -283,7 +377,6 @@ def gen_communicate_args(parser):
+@@ -283,7 +380,6 @@ def gen_communicate_args(parser):
      comm.set_defaults(func=communicate)
  
  def booleans(args):
@@ -514132,7 +514356,7 @@ index b25d3b2..9afb149 100755
      from sepolicy import boolean_desc
      if args.all:
          rc, args.booleans = selinux.security_get_boolean_names()
-@@ -300,6 +393,7 @@ def gen_booleans_args(parser):
+@@ -300,6 +396,7 @@ def gen_booleans_args(parser):
                         action="store_true",
                         help=_("get all booleans descriptions"))
      group.add_argument("-b", "--boolean", dest="booleans", nargs="+",
@@ -514140,7 +514364,7 @@ index b25d3b2..9afb149 100755
                         help=_("boolean to get description"))
      bools.set_defaults(func=booleans)
  
-@@ -319,22 +413,49 @@ def gen_transition_args(parser):
+@@ -319,22 +416,49 @@ def gen_transition_args(parser):
                         help=_("target process domain"))
      trans.set_defaults(func=transition)
  
@@ -514199,7 +514423,7 @@ index b25d3b2..9afb149 100755
          if not args.command:
              raise ValueError(_("Command required for this type of policy"))
          cmd = os.path.realpath(args.command)
-@@ -346,8 +467,22 @@ def generate(args):
+@@ -346,8 +470,22 @@ def generate(args):
          mypolicy.set_program(cmd)
  
      if args.types:
@@ -514222,7 +514446,7 @@ index b25d3b2..9afb149 100755
      for p in args.writepaths:
          if os.path.isdir(p):
              mypolicy.add_dir(p)
-@@ -355,6 +490,7 @@ def generate(args):
+@@ -355,6 +493,7 @@ def generate(args):
              mypolicy.add_file(p)
  
      mypolicy.set_transition_users(args.user)
@@ -514230,7 +514454,7 @@ index b25d3b2..9afb149 100755
      mypolicy.set_admin_domains(args.admin_domain)
      mypolicy.set_existing_domains(args.domain)
  
-@@ -366,20 +502,34 @@ def generate(args):
+@@ -366,20 +505,34 @@ def generate(args):
  def gen_interface_args(parser):
      itf = parser.add_parser("interface",
                              help=_('List SELinux Policy interfaces'))
@@ -514268,7 +514492,7 @@ index b25d3b2..9afb149 100755
                              help=_('Generate SELinux Policy module template'))
      pol.add_argument("-d", "--domain", dest="domain", default=[],
                       action=CheckDomain, nargs="*",
-@@ -387,9 +537,12 @@ def gen_generate_args(parser):
+@@ -387,9 +540,12 @@ def gen_generate_args(parser):
      pol.add_argument("-u", "--user", dest="user", default=[],
                       action=CheckUser, 
                       help=_("Enter SELinux user(s) which will transition to this domain"))
@@ -514282,7 +514506,7 @@ index b25d3b2..9afb149 100755
      pol.add_argument("-n", "--name", dest="name",
                       default=None,
                       help=_("name of policy to generate"))
-@@ -397,53 +550,57 @@ def gen_generate_args(parser):
+@@ -397,53 +553,57 @@ def gen_generate_args(parser):
                       help=argparse.SUPPRESS)
      pol.add_argument("-t", "--type", dest="types", default=[], nargs="*",
                       action=CheckType, 
@@ -514366,7 +514590,7 @@ index b25d3b2..9afb149 100755
      pol.set_defaults(func=generate)
  
  if __name__ == '__main__':
-@@ -455,17 +612,25 @@ if __name__ == '__main__':
+@@ -455,17 +615,25 @@ if __name__ == '__main__':
      gen_booleans_args(subparsers)
      gen_communicate_args(subparsers)
      gen_generate_args(subparsers)
@@ -514394,7 +514618,7 @@ index b25d3b2..9afb149 100755
          sys.exit(0)
 +
 diff --git a/policycoreutils/sepolicy/sepolicy/__init__.py b/policycoreutils/sepolicy/sepolicy/__init__.py
-index 5e7415c..74d2220 100644
+index 5e7415c..587773f 100644
 --- a/policycoreutils/sepolicy/sepolicy/__init__.py
 +++ b/policycoreutils/sepolicy/sepolicy/__init__.py
 @@ -1,12 +1,15 @@
@@ -514532,7 +514756,8 @@ index 5e7415c..74d2220 100644
 +        print "try failed got an IndexError"
 +        pass
 +
-+    try:
+     try:
+-        path = selinux.selinux_binary_policy_path()
 +        pat = re.compile(r"%s$" % reg)
 +        return filter(pat.match, map(lambda x: path + x, os.listdir(path)))
 +    except:
@@ -514691,8 +514916,7 @@ index 5e7415c..74d2220 100644
 +    return mpaths
 +
 +def get_installed_policy(root = "/"):
-     try:
--        path = selinux.selinux_binary_policy_path()
++    try:
 +        path = root + selinux.selinux_binary_policy_path()
          policies = glob.glob ("%s.*" % path )
          policies.sort()
@@ -514840,7 +515064,7 @@ index 5e7415c..74d2220 100644
          roles = map(lambda x: x['name'], info(ROLE))
          roles.remove("object_r")
          roles.sort()
-@@ -104,115 +450,259 @@ def get_all_users():
+@@ -104,115 +450,276 @@ def get_all_users():
      if users:
          return users
      users = map(lambda x: x['name'], info(USER))
@@ -514894,6 +515118,23 @@ index 5e7415c..74d2220 100644
 +def markup(f):
 +    return f
 +
++# Autofill for adding files *************************
++DEFAULT_DIRS = {}
++DEFAULT_DIRS["/etc"] = "etc_t"
++DEFAULT_DIRS["/tmp"] = "tmp_t"
++DEFAULT_DIRS["/usr/lib/systemd/system"] = "unit_file_t"
++DEFAULT_DIRS["/lib/systemd/system"] = "unit_file_t"
++DEFAULT_DIRS["/etc/systemd/system"] = "unit_file_t"
++DEFAULT_DIRS["/var/cache"] = "var_cache_t"
++DEFAULT_DIRS["/var/lib"] = "var_lib_t"
++DEFAULT_DIRS["/var/log"] = "log_t"
++DEFAULT_DIRS["/var/run"] = "var_run_t"
++DEFAULT_DIRS["/run"] = "var_run_t"
++DEFAULT_DIRS["/run/lock"] = "var_lock_t"
++DEFAULT_DIRS["/var/run/lock"] = "var_lock_t"
++DEFAULT_DIRS["/var/spool"] = "var_spool_t"
++DEFAULT_DIRS["/var/www"] = "content_t"
++
 +def get_description(f, markup=markup):
 +
 +    txt = "Set files with the %s type, if you want to " % markup(f)
@@ -515172,7 +515413,7 @@ index 5e7415c..74d2220 100644
  
  def boolean_category(boolean):
      booleans_dict = gen_bool_dict()
-@@ -233,18 +723,54 @@ def get_os_version():
+@@ -233,18 +740,54 @@ def get_os_version():
      os_version = ""
      pkg_name = "selinux-policy"
      try:
@@ -515527,10 +515768,10 @@ index 26f8390..ba959ae 100644
              return out
 diff --git a/policycoreutils/sepolicy/sepolicy/gui.py b/policycoreutils/sepolicy/sepolicy/gui.py
 new file mode 100644
-index 0000000..cbdf9aa
+index 0000000..a8b3628
 --- /dev/null
 +++ b/policycoreutils/sepolicy/sepolicy/gui.py
-@@ -0,0 +1,2526 @@
+@@ -0,0 +1,2746 @@
 +#!/usr/bin/python -Es
 +#
 +# Copyright (C) 2013 Red Hat
@@ -515554,15 +515795,17 @@ index 0000000..cbdf9aa
 +#                                        02111-1307  USA
 +#
 +#    author: Ryan Hallisey rhallisey at redhat.com
++#    author: Dan Walsh dwalsh at redhat.com
 +#
 +#
 +
++from gi.repository import Gtk
++from gi.repository import Gdk
++from gi.repository import GLib
 +from sepolicy.sedbus import SELinuxDBus
 +import sys
-+import gobject
 +import sepolicy
 +import selinux
-+import pygtk
 +import sepolicy.network
 +import sepolicy.manpage
 +import dbus
@@ -515570,6 +515813,7 @@ index 0000000..cbdf9aa
 +import os
 +import gettext
 +import unicodedata
++import signal
 +
 +PROGNAME="policycoreutils"
 +gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
@@ -515592,18 +515836,8 @@ index 0000000..cbdf9aa
 +def compare(a, b):
 +    return cmp(a.lower(),b.lower())
 +
-+try:
-+    import pygtk
-+    pygtk.require("2.0")
-+except:
-+    pass
-+try:
-+    import gtk
-+except:
-+    print(_("GTK Not Available"))
-+    sys.exit(1)
-+
 +import distutils.sysconfig
++ADVANCED_LABEL = ( _("Advanced >>"), _("Advanced <<") )
 +
 +class SELinuxGui():
 +    EXE_PAGE = 0
@@ -515612,30 +515846,44 @@ index 0000000..cbdf9aa
 +    OUTBOUND = 0
 +    INBOUND = 1
 +
-+    def __init__( self, applicaton=None):
-+
++    def __init__( self , app = None):
 +        self.dbus = SELinuxDBus()
-+        self.customized = self.dbus.customized()
++        #Dan
++        #customized = ""
++        try:
++            customized = self.dbus.customized()
++        except dbus.exceptions.DBusException, e:
++            print e
++            self.quit()
++  
++        sepolicy_domains = sepolicy.get_all_domains()
++        sepolicy_domains.sort(compare)
++        if app and app not in sepolicy_domains:
++            self.error(_("%s is not a valid domain" % app))
++            self.quit()
++
++        self.application = app
 +        self.filter_txt = ""
-+        self.builder = gtk.Builder()                                        # BUILDER OBJ
-+        #glade_file = "/home/rhallisey/Desktop/sepolicy.glade"
-+        glade_file = distutils.sysconfig.get_python_lib(plat_specific = True) + "/sepolicy/sepolicy.glade"
-+        self.builder.add_from_file(glade_file)
-+        self.outer_notebook = self.builder.get_object("outer_notebook")       # The notebook obj
-+        self.window = self.builder.get_object("SELinux_window")             # Get window so we can show the window
-+        self.main_selection_window = self.builder.get_object("Main_selection_menu")
-+        self.main_advanced_label = self.builder.get_object("main_advanced_label")
++        builder = Gtk.Builder() # BUILDER OBJ
++        self.code_path = distutils.sysconfig.get_python_lib(plat_specific = True) + "/sepolicy/"
++        glade_file = self.code_path + "sepolicy.glade"
++        builder.add_from_file(glade_file)
++        self.outer_notebook = builder.get_object("outer_notebook")
++        self.window = builder.get_object("SELinux_window")
++        self.main_selection_window = builder.get_object("Main_selection_menu")
++        self.main_advanced_label = builder.get_object("main_advanced_label")
 +        self.popup = 0
-+        self.applications_button_selection = self.builder.get_object("applications_selection_button")
-+        self.revert_button = self.builder.get_object("Revert_button")
-+        self.application = None
-+        self.file_dialog = self.builder.get_object("add_path_dialog")
-+        self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
-+        self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
++        self.applications_button_selection = builder.get_object("applications_selection_button")
++        self.revert_button = builder.get_object("Revert_button")
++        self.busy_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
++        self.ready_cursor = Gdk.Cursor(Gdk.CursorType.LEFT_PTR)
++        self.initialtype = selinux.selinux_getpolicytype()[1]
 +        self.current_popup = None
 +        self.import_export = None
 +        self.clear_entry = True
-+        self.confirmation_dialog_close = self.builder.get_object("confirmation_dialog_close")
++        self.update_buffer = ''
++        self.files_add = False
++        self.network_add = False
 +
 +        # Data store dictionaries
 +        self.booldict = {}
@@ -515644,320 +515892,276 @@ index 0000000..cbdf9aa
 +        self.all_list = []
 +        self.installed_list = []
 +        self.previously_modified = {}
-+        # Data store dictionaries
 +
++        # file dialog
++        self.file_dialog = builder.get_object("add_path_dialog")
 +        # Error check ***************************************
-+        self.error_check_window = self.builder.get_object("error_check_window")
-+        self.error_check_label = self.builder.get_object("error_check_label")
++        self.error_check_window = builder.get_object("error_check_window")
++        self.error_check_label = builder.get_object("error_check_label")
 +        self.invalid_entry = False
-+        # Error check ***************************************
-+
-+        # Autofill for adding files *************************
-+        self.DEFAULT_DIRS = {}
-+        self.DEFAULT_DIRS["/etc"] = "etc_t"
-+        self.DEFAULT_DIRS["/tmp"] = "tmp_t"
-+        self.DEFAULT_DIRS["/usr/lib/systemd/system"] = "unit_file_t"
-+        self.DEFAULT_DIRS["/lib/systemd/system"] = "unit_file_t"
-+        self.DEFAULT_DIRS["/etc/systemd/system"] = "unit_file_t"
-+        self.DEFAULT_DIRS["/var/cache"] = "var_cache_t"
-+        self.DEFAULT_DIRS["/var/lib"] = "var_lib_t"
-+        self.DEFAULT_DIRS["/var/log"] = "log_t"
-+        self.DEFAULT_DIRS["/var/run"] = "var_run_t"
-+        self.DEFAULT_DIRS["/run"] = "var_run_t"
-+        self.DEFAULT_DIRS["/run/lock"] = "var_lock_t"
-+        self.DEFAULT_DIRS["/var/run/lock"] = "var_lock_t"
-+        self.DEFAULT_DIRS["/var/spool"] = "var_spool_t"
-+        self.DEFAULT_DIRS["/var/www"] = "content_t"
-+        # Autofilee for adding file *************************
-+
 +        # Advanced search window ****************************
-+        self.advanced_search_window = self.builder.get_object("advanced_search_window")
-+        self.advanced_search_liststore = self.builder.get_object("Advanced_search_liststore")
-+        self.advanced_search_treemodel_filter = self.builder.get_object("advanced_treemodel_filter")
-+        self.advanced_search_treemodel_sort = self.builder.get_object("advanced_treemodel_sort")
-+        self.advanced_filter_entry = self.builder.get_object("advanced_filter_entry")
-+        self.advanced_search_treeview = self.builder.get_object("advanced_search_treeview")
++        self.advanced_search_window = builder.get_object("advanced_search_window")
++        self.advanced_search_liststore = builder.get_object("Advanced_search_liststore")
++        self.advanced_search_treemodel_filter = builder.get_object("advanced_treemodel_filter")
++        self.advanced_search_treemodel_sort = builder.get_object("advanced_treemodel_sort")
++        self.advanced_filter_entry = builder.get_object("advanced_filter_entry")
++        self.advanced_search_treeview = builder.get_object("advanced_search_treeview")
 +        self.advanced_search = False
-+        # Advanced search window ****************************
-+
 +        # System Items **************************************
-+        self.app_system_button = self.builder.get_object("app_system_button")
-+        self.system_button = self.builder.get_object("System_button")
-+        self.systems_box = self.builder.get_object("Systems_box")
-+        self.relabel_button = self.builder.get_object("Relabel_button")
-+        self.relabel_button.set_active(os.path.exists('/.autorelabel'))
-+        self.advanced_system = self.builder.get_object("advanced_system")
-+        self.outer_notebook_frame = self.builder.get_object("outer_notebook_frame")
-+        self.system_policy_label = self.builder.get_object("system_policy_type_label")
-+        # System Items **************************************
-+
++        self.app_system_button = builder.get_object("app_system_button")
++        self.system_button = builder.get_object("System_button")
++        self.systems_box = builder.get_object("Systems_box")
++        self.relabel_button = builder.get_object("Relabel_button")
++        self.relabel_button_no = builder.get_object("Relabel_button_no")
++        self.advanced_system = builder.get_object("advanced_system")
++        self.outer_notebook_frame = builder.get_object("outer_notebook_frame")
++        self.system_policy_label = builder.get_object("system_policy_type_label")
 +        # Browse Items **************************************
-+        self.select_button_browse = self.builder.get_object("select_button_browse")
-+        self.cancel_button_browse = self.builder.get_object("cancel_button_browse")
-+        # Browse Items **************************************
-+
++        self.select_button_browse = builder.get_object("select_button_browse")
++        self.cancel_button_browse = builder.get_object("cancel_button_browse")
 +        # More types window items ***************************
-+        self.moreTypes_window_files = self.builder.get_object("moreTypes_window_files")
-+        self.more_types_files_liststore = self.builder.get_object("more_types_file_liststore")
-+        self.moreTypes_treeview = self.builder.get_object("moreTypes_treeview_files")
-+        # More types window items ***************************
-+
++        self.moreTypes_window_files = builder.get_object("moreTypes_window_files")
++        self.more_types_files_liststore = builder.get_object("more_types_file_liststore")
++        self.moreTypes_treeview = builder.get_object("moreTypes_treeview_files")
 +        # System policy type ********************************
-+        self.system_policy_type_liststore = self.builder.get_object("system_policy_type_liststore")
-+        self.system_policy_type_combobox = self.builder.get_object("system_policy_type_combobox")
++        self.system_policy_type_liststore = builder.get_object("system_policy_type_liststore")
++        self.system_policy_type_combobox = builder.get_object("system_policy_type_combobox")
 +        self.policy_list = []
 +        self.populate_system_policy()
-+        self.enforcing_button_default = self.builder.get_object("Enforcing_button_default")
-+        self.permissive_button_default = self.builder.get_object("Permissive_button_default")
-+        self.disabled_button_default = self.builder.get_object("Disabled_button_default")
++        self.enforcing_button_default = builder.get_object("Enforcing_button_default")
++        self.permissive_button_default = builder.get_object("Permissive_button_default")
++        self.disabled_button_default = builder.get_object("Disabled_button_default")
 +        self.initialize_system_default_mode()
-+        # System policy type ********************************
 +
++        # Help Window *********************************
++        self.help_window = builder.get_object("help_window")
++        self.help_text = builder.get_object("help_text")
++        self.help_image = builder.get_object("help_image")
++        self.forward_button = builder.get_object("forward_button")
++        self.back_button = builder.get_object("back_button")
 +        # Update menu items *********************************
-+        self.update_window = self.builder.get_object("update_window")
-+        self.update_treeview = self.builder.get_object("update_treeview")
-+        self.update_treestore = self.builder.get_object("Update_treestore")
-+        self.apply_button = self.builder.get_object("apply_button")
-+        self.update_button = self.builder.get_object("Update_button")
-+        # Update menu items *********************************
-+
++        self.update_window = builder.get_object("update_window")
++        self.update_treeview = builder.get_object("update_treeview")
++        self.update_treestore = builder.get_object("Update_treestore")
++        self.apply_button = builder.get_object("apply_button")
++        self.update_button = builder.get_object("Update_button")
 +        # Add button objects ********************************
-+        self.add_button_files = self.builder.get_object("Add_button_files")
-+        self.delete_button_files = self.builder.get_object("Delete_button_files")
-+        self.add_button_network = self.builder.get_object("Add_button_network")
-+        self.delete_button_network = self.builder.get_object("Delete_button_network")
-+
-+        self.files_add = False
-+        self.network_add = False
-+        self.files_path_entry = self.builder.get_object("files_path_entry")
-+        self.network_ports_entry = self.builder.get_object("network_ports_entry")
-+        self.popup_window_files = self.builder.get_object("popup_window_files")
-+        self.popup_window_network = self.builder.get_object("popup_window_network")
-+
-+        self.popup_network_label = self.builder.get_object("Network_label")
-+        self.popup_files_label = self.builder.get_object("Files_label")
-+
-+        self.recursive_path_toggle = self.builder.get_object("make_path_recursive")
-+        self.files_type_combolist = self.builder.get_object("files_type_combo_store")
-+        self.files_class_combolist = self.builder.get_object("files_class_combo_store")
-+        self.files_mls_combolist = self.builder.get_object("files_mls_combo_store")
-+        self.files_type_combobox = self.builder.get_object("files_type_combobox")
-+        self.files_class_combobox = self.builder.get_object("files_class_combobox")
-+        self.mls_label_files = self.builder.get_object("mls_label_files")
-+        self.files_mls_combobox = self.builder.get_object("files_mls_combobox")
-+        self.advanced_text_files = self.builder.get_object("Advanced_text_files")
-+        self.files_cancel_button = self.builder.get_object("cancel_delete_files")
-+
-+        self.network_protocol_combolist = self.builder.get_object("network_protocol_combo_store")
-+        self.network_tcp_button = self.builder.get_object("tcp_button")
-+        self.network_udp_button = self.builder.get_object("udp_button")
-+        self.network_port_type_combolist = self.builder.get_object("network_type_combo_store")
-+        self.network_port_type_combobox = self.builder.get_object("network_type_combobox")
-+        self.network_mls_combolist = self.builder.get_object("network_mls_combo_store")
-+        self.network_mls_combobox = self.builder.get_object("network_mls_combobox")
-+        self.mls_label_network = self.builder.get_object("mls_label_network")
-+        self.advanced_text_network = self.builder.get_object("Advanced_text_network")
-+        self.network_cancel_button = self.builder.get_object("cancel_delete_network")
++        self.add_button_files = builder.get_object("Add_button_files")
++        self.delete_button_files = builder.get_object("Delete_button_files")
++        self.add_button_network = builder.get_object("Add_button_network")
++        self.delete_button_network = builder.get_object("Delete_button_network")
++
++        self.files_path_entry = builder.get_object("files_path_entry")
++        self.network_ports_entry = builder.get_object("network_ports_entry")
++        self.popup_window_files = builder.get_object("popup_window_files")
++        self.popup_window_network = builder.get_object("popup_window_network")
++
++        self.popup_network_label = builder.get_object("Network_label")
++        self.popup_files_label = builder.get_object("Files_label")
++
++        self.recursive_path_toggle = builder.get_object("make_path_recursive")
++        self.files_type_combolist = builder.get_object("files_type_combo_store")
++        self.files_class_combolist = builder.get_object("files_class_combo_store")
++        self.files_mls_combolist = builder.get_object("files_mls_combo_store")
++        self.files_type_combobox = builder.get_object("files_type_combobox")
++        self.files_class_combobox = builder.get_object("files_class_combobox")
++        self.mls_label_files = builder.get_object("mls_label_files")
++        self.files_mls_combobox = builder.get_object("files_mls_combobox")
++        self.advanced_text_files = builder.get_object("Advanced_text_files")
++        self.files_cancel_button = builder.get_object("cancel_delete_files")
++
++        self.network_protocol_combolist = builder.get_object("network_protocol_combo_store")
++        self.network_tcp_button = builder.get_object("tcp_button")
++        self.network_udp_button = builder.get_object("udp_button")
++        self.network_port_type_combolist = builder.get_object("network_type_combo_store")
++        self.network_port_type_combobox = builder.get_object("network_type_combobox")
++        self.network_mls_combolist = builder.get_object("network_mls_combo_store")
++        self.network_mls_combobox = builder.get_object("network_mls_combobox")
++        self.mls_label_network = builder.get_object("mls_label_network")
++        self.advanced_text_network = builder.get_object("Advanced_text_network")
++        self.network_cancel_button = builder.get_object("cancel_delete_network")
 +
 +        for mls in range(1,11):
 +            iter = self.files_mls_combolist.append()
-+            self.files_mls_combolist.set_value(iter, 0, mls)
++            self.files_mls_combolist.set_value(iter, 0, str(mls))
 +            iter = self.network_mls_combolist.append()
-+            self.network_mls_combolist.set_value(iter, 0, mls)
++            self.network_mls_combolist.set_value(iter, 0, str(mls))
 +        # Add button objects ********************************
 +
 +        # Modify items **************************************
 +        self.modify_mode = False
-+        self.show_mislabeled_files_only = self.builder.get_object("Show_mislabeled_files")
-+        self.mislabeled_files_label = self.builder.get_object("mislabeled_files_label")
-+        self.warning_files = self.builder.get_object("warning_files")
-+        self.modify_button_file = self.builder.get_object("Modify_button_files")
++        self.show_mislabeled_files_only = builder.get_object("Show_mislabeled_files")
++        self.mislabeled_files_label = builder.get_object("mislabeled_files_label")
++        self.warning_files = builder.get_object("warning_files")
++        self.modify_button_file = builder.get_object("Modify_button_files")
 +        self.modify_button_file.set_sensitive(False)
-+        self.modify_button_network = self.builder.get_object("Modify_button_network")
++        self.modify_button_network = builder.get_object("Modify_button_network")
 +        self.modify_button_network.set_sensitive(False)
 +        # Modify items **************************************
 +
 +        # Fix label *****************************************
-+        self.fix_label_window = self.builder.get_object("Fix_label_window")
-+        self.fixlabel_label = self.builder.get_object("Fixlabel_label")
-+        self.fix_label_cancel = self.builder.get_object("Fix_label_cancel")
++        self.fix_label_window = builder.get_object("Fix_label_window")
++        self.fixlabel_label = builder.get_object("Fixlabel_label")
++        self.fix_label_cancel = builder.get_object("Fix_label_cancel")
 +        # Fix label *****************************************
 +
 +        # Delete items **************************************
-+        self.delete_window_files = self.builder.get_object("delete_window_files")
-+        self.delete_files_treeview = self.builder.get_object("delete_files_treeview")
-+        self.delete_files_liststore = self.builder.get_object("delete_files_liststore")
-+        self.delete_window_network = self.builder.get_object("delete_window_network")
-+        self.delete_network_treeview = self.builder.get_object("delete_network_treeview")
-+        self.delete_network_liststore =self.builder.get_object("delete_network_liststore")
++        self.delete_window_files = builder.get_object("delete_window_files")
++        self.delete_files_treeview = builder.get_object("delete_files_treeview")
++        self.delete_files_liststore = builder.get_object("delete_files_liststore")
++        self.delete_window_network = builder.get_object("delete_window_network")
++        self.delete_network_treeview = builder.get_object("delete_network_treeview")
++        self.delete_network_liststore =builder.get_object("delete_network_liststore")
 +        # Delete items **************************************
 +
 +        # Progress bar **************************************
-+        self.progress_bar = self.builder.get_object("progress_bar")
++        self.progress_bar = builder.get_object("progress_bar")
 +        # Progress bar **************************************
 +
 +        # executable_files items ****************************
-+        self.executable_files_treeview = self.builder.get_object("Executable_files_treeview")                  # Get the executable files tree view
-+        self.executable_files_filter_model = self.builder.get_object("executable_files_treemodelfilter")       # Contains the tree with File Path, SELinux File Label, Class
-+        self.executable_files_tab = self.builder.get_object("Executable_files_tab")
++        self.executable_files_treeview = builder.get_object("Executable_files_treeview")                  # Get the executable files tree view
++        self.executable_files_filter_model = builder.get_object("executable_files_treemodelfilter")       # Contains the tree with File Path, SELinux File Label, Class
++        self.executable_files_tab = builder.get_object("Executable_files_tab")
 +        self.executable_files_tab_tooltip_txt = self.executable_files_tab.get_tooltip_text()
-+        self.executable_files_treestore = self.builder.get_object("executable_files_treestore")
-+        self.files_radio_button = self.builder.get_object("Files_button")
++        self.executable_files_treestore = builder.get_object("executable_files_treestore")
++        self.files_radio_button = builder.get_object("Files_button")
 +        self.files_button_tooltip_txt = self.files_radio_button.get_tooltip_text()
-+        self.executable_files_treemodel_sort = self.builder.get_object("executable_files_treemodelsort")
-+        self.executable_files_treestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
++        self.executable_files_treemodel_sort = builder.get_object("executable_files_treemodelsort")
++        self.executable_files_treestore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
 +        # executable_files items ****************************
 +
 +        # writable files items ******************************
-+        self.writable_files_treeview = self.builder.get_object("Writable_files_treeview")           # Get the Writable files tree view
-+        self.writable_files_treestore = self.builder.get_object("writable_files_treestore")         # Contains the tree with File Path, SELinux File Label, Class
-+        self.writable_files__filter_model = self.builder.get_object("writable_files_treemodelfilter")
-+        self.writable_files_tab = self.builder.get_object("Writable_files_tab")
++        self.writable_files_treeview = builder.get_object("Writable_files_treeview")           # Get the Writable files tree view
++        self.writable_files_treestore = builder.get_object("writable_files_treestore")         # Contains the tree with File Path, SELinux File Label, Class
++        self.writable_files__filter_model = builder.get_object("writable_files_treemodelfilter")
++        self.writable_files_tab = builder.get_object("Writable_files_tab")
 +        self.writable_files_tab_tooltip_txt = self.writable_files_tab.get_tooltip_text()
-+        self.writable_files_treemodel_sort = self.builder.get_object("writable_files_treemodelsort")
-+        #self.writable_files_tree_data_set = self.builder.get_object("writable_files_liststore")
-+        #self.writable_files_tree_data_set.set_sort_column_id(0, gtk.SORT_ASCENDING)
++        self.writable_files_treemodel_sort = builder.get_object("writable_files_treemodelsort")
++        #self.writable_files_tree_data_set = builder.get_object("writable_files_liststore")
++        #self.writable_files_tree_data_set.set_sort_column_id(0, Gtk.SortType.ASCENDING)
 +        # writable files items ******************************
 +
 +        # Application File Types ****************************
-+        self.application_files_treeview = self.builder.get_object("Application_file_types_treeview")                    # Get the Application files tree view
-+        self.application_files_filter_model = self.builder.get_object("application_filetypes_treemodelfilter")         # Contains the tree with File Path, Description, Class
-+        self.application_files_tab = self.builder.get_object("Application_file_types_tab")
++        self.application_files_treeview = builder.get_object("Application_file_types_treeview")                    # Get the Application files tree view
++        self.application_files_filter_model = builder.get_object("application_filetypes_treemodelfilter")         # Contains the tree with File Path, Description, Class
++        self.application_files_tab = builder.get_object("Application_file_types_tab")
 +        self.application_files_tab_tooltip_txt = self.writable_files_tab.get_tooltip_text()
-+        self.application_files_treestore = self.builder.get_object("application_filetypes_treestore")
-+        self.application_files_tab = self.builder.get_object("Application_file_types_tab")
++        self.application_files_treestore = builder.get_object("application_filetypes_treestore")
++        self.application_files_tab = builder.get_object("Application_file_types_tab")
 +        self.application_files_tab_tooltip_txt = self.application_files_tab.get_tooltip_text()
-+        self.application_files_treemodel_sort = self.builder.get_object("application_filetypes_treemodelsort")
-+        #self.application_files_tree_data_set = self.builder.get_object("application_filetypes_liststore")
-+        self.application_files_treestore.set_sort_column_id(0, gtk.SORT_ASCENDING)
++        self.application_files_treemodel_sort = builder.get_object("application_filetypes_treemodelsort")
++        #self.application_files_tree_data_set = builder.get_object("application_filetypes_liststore")
++        self.application_files_treestore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
 +        # Application File Type *****************************
 +
 +        # network items *************************************
-+        self.out_network_treeview = self.builder.get_object("outbound_treeview")
-+        self.out_network_tree_data_set = self.builder.get_object("out_network_liststore")       # Contains the tree with Ports, Protocol, Modified, SELinux Port Type
-+        self.out_network_filter_model =  self.builder.get_object("out_network_treemodelfilter")
-+        self.out_network_tree_data_set.set_sort_column_id(0, gtk.SORT_ASCENDING)
-+        self.out_network_tab = self.builder.get_object("Outbound_tab")
++        self.out_network_treeview = builder.get_object("outbound_treeview")
++        self.out_network_tree_data_set = builder.get_object("out_network_liststore")       # Contains the tree with Ports, Protocol, Modified, SELinux Port Type
++        self.out_network_filter_model =  builder.get_object("out_network_treemodelfilter")
++        self.out_network_tree_data_set.set_sort_column_id(0, Gtk.SortType.ASCENDING)
++        self.out_network_tab = builder.get_object("Outbound_tab")
 +        self.out_network_tab_tooltip_txt = self.out_network_tab.get_tooltip_text()
-+        self.out_network_treemodel_sort = self.builder.get_object("out_network_treemodelsort")
++        self.out_network_treemodel_sort = builder.get_object("out_network_treemodelsort")
 +
-+        self.network_radio_button = self.builder.get_object("Network_button")
++        self.network_radio_button = builder.get_object("Network_button")
 +        self.network_button_tooltip_txt = self.network_radio_button.get_tooltip_text()
 +
-+        self.in_network_treemodel_sort = self.builder.get_object("in_network_treemodelsort")
-+        self.in_network_tab = self.builder.get_object("Inbound_tab")
++        self.in_network_treemodel_sort = builder.get_object("in_network_treemodelsort")
++        self.in_network_tab = builder.get_object("Inbound_tab")
 +        self.in_network_tab_tooltip_txt = self.in_network_tab.get_tooltip_text()
-+        self.in_network_treeview = self.builder.get_object("inbound_treeview")
-+        self.in_network_tree_data_set = self.builder.get_object("in_network_liststore")     # Contains the tree with Ports, Protocol, Modified, SELinux Port Type
-+        self.in_network_filter_model =  self.builder.get_object("in_network_treemodelfilter")
-+        self.in_network_tree_data_set.set_sort_column_id(0, gtk.SORT_ASCENDING)
++        self.in_network_treeview = builder.get_object("inbound_treeview")
++        self.in_network_tree_data_set = builder.get_object("in_network_liststore")     # Contains the tree with Ports, Protocol, Modified, SELinux Port Type
++        self.in_network_filter_model =  builder.get_object("in_network_treemodelfilter")
++        self.in_network_tree_data_set.set_sort_column_id(0, Gtk.SortType.ASCENDING)
 +        # network items *************************************
 +
 +        # boolean items ************************************
-+        self.booleans_tab = self.builder.get_object("Booleans_tab")
-+        self.boolean_treeview = self.builder.get_object("Boolean_treeview")                 # Get the booleans tree list
-+        self.boolean_tree_data_set = self.builder.get_object("boolean_liststore")           # Contains the tree with process type + desc (child of filter_data_set)
-+        self.boolean_model = self.builder.get_object("boolean_treemodelfilter")                         # Get_model() attaches the list to the boolean model
-+        self.boolean_tree_data_set.set_sort_column_id(2, gtk.SORT_ASCENDING)
-+        self.booleans_more_detail_window = self.builder.get_object("booleans_more_detail_window")
-+        self.booleans_more_detail_treeview = self.builder.get_object("booleans_more_detail_treeview")
-+        self.booleans_more_detail_tree_data_set = self.builder.get_object("booleans_more_detail_liststore")
-+        self.booleans_radio_button = self.builder.get_object("Booleans_button")
++        self.booleans_tab = builder.get_object("Booleans_tab")
++        self.boolean_treeview = builder.get_object("Boolean_treeview")                 # Get the booleans tree list
++        self.boolean_tree_data_set = builder.get_object("boolean_liststore")           # Contains the tree with process type + desc (child of filter_data_set)
++        self.boolean_model = builder.get_object("boolean_treemodelfilter")                         # Get_model() attaches the list to the boolean model
++        self.boolean_tree_data_set.set_sort_column_id(2, Gtk.SortType.ASCENDING)
++        self.booleans_more_detail_window = builder.get_object("booleans_more_detail_window")
++        self.booleans_more_detail_treeview = builder.get_object("booleans_more_detail_treeview")
++        self.booleans_more_detail_tree_data_set = builder.get_object("booleans_more_detail_liststore")
++        self.booleans_radio_button = builder.get_object("Booleans_button")
 +        self.booleans_button_tooltip_txt = self.booleans_radio_button.get_tooltip_text()
-+        self.booleans_treemodel_sort = self.builder.get_object("boolean_treemodelsort")
++        self.booleans_treemodel_sort = builder.get_object("boolean_treemodelsort")
 +        # boolean items ************************************
 +
 +        # transitions items ************************************
-+        self.transitions_into_x_treeview = self.builder.get_object("transitions_into_x_treeview")         # Get the transitions tree list Enabled, source, Executable File
-+        self.transitions_into_x_tree_data_set = self.builder.get_object("transitions_into_x_liststore")   # Contains the tree with
-+        self.transitions_into_x_filter_model = self.builder.get_object("transitions_into_x_treemodelfilter")
-+        self.transitions_into_x_tab = self.builder.get_object("Transitions_into_x_tab")
++        self.transitions_into_x_treeview = builder.get_object("transitions_into_x_treeview")         # Get the transitions tree list Enabled, source, Executable File
++        self.transitions_into_x_tree_data_set = builder.get_object("transitions_into_x_liststore")   # Contains the tree with
++        self.transitions_into_x_filter_model = builder.get_object("transitions_into_x_treemodelfilter")
++        self.transitions_into_x_tab = builder.get_object("Transitions_into_x_tab")
 +        self.transitions_into_x_tab_tooltip_txt = self.transitions_into_x_tab.get_tooltip_text()
-+        self.transitions_into_x_tree_data_set.set_sort_column_id(1, gtk.SORT_ASCENDING)
++        self.transitions_into_x_tree_data_set.set_sort_column_id(1, Gtk.SortType.ASCENDING)
 +
-+        self.transitions_radio_button = self.builder.get_object("Transitions_button")
++        self.transitions_radio_button = builder.get_object("Transitions_button")
 +        self.transitions_button_tooltip_txt = self.transitions_radio_button.get_tooltip_text()
 +
-+        self.transitions_from_x_treemodelsort = self.builder.get_object("transitions_from_x_treemodelsort")
-+        self.transitions_from_x_treeview = self.builder.get_object("transitions_from_x_treeview")         # Get the transitions tree list
-+        self.transitions_from_x_treestore = self.builder.get_object("transitions_from_x_treestore")       # Contains the tree with Enabled, Executable File Type, Transtype
-+        self.transitions_from_x_filter_model = self.builder.get_object("transitions_from_x_treemodelfilter")
-+        self.transitions_from_x_tab = self.builder.get_object("Transitions_from_x_tab")
++        self.transitions_from_x_treemodelsort = builder.get_object("transitions_from_x_treemodelsort")
++        self.transitions_from_x_treeview = builder.get_object("transitions_from_x_treeview")         # Get the transitions tree list
++        self.transitions_from_x_treestore = builder.get_object("transitions_from_x_treestore")       # Contains the tree with Enabled, Executable File Type, Transtype
++        self.transitions_from_x_filter_model = builder.get_object("transitions_from_x_treemodelfilter")
++        self.transitions_from_x_tab = builder.get_object("Transitions_from_x_tab")
 +        self.transitions_from_x_tab_tooltip_txt = self.transitions_from_x_tab.get_tooltip_text()
-+        self.transitions_from_x_treestore.set_sort_column_id(2, gtk.SORT_ASCENDING)
++        self.transitions_from_x_treestore.set_sort_column_id(2, Gtk.SortType.ASCENDING)
 +
-+        self.transitions_file_treemodelsort = self.builder.get_object("File_transitions_treemodel_sort")
-+        self.transitions_file_treeview = self.builder.get_object("file_transitions_treeview")         # Get the transitions tree list
-+        self.transitions_file_liststore = self.builder.get_object("File_transitions_liststore")       # Contains the tree with Enabled, Executable File Type, Transtype
-+        self.transitions_file_filter_model = self.builder.get_object("File_transitions_treemodel_filter")
-+        self.transitions_file_tab = self.builder.get_object("file_transitions")
++        self.transitions_file_treemodelsort = builder.get_object("File_transitions_treemodel_sort")
++        self.transitions_file_treeview = builder.get_object("file_transitions_treeview")         # Get the transitions tree list
++        self.transitions_file_liststore = builder.get_object("File_transitions_liststore")       # Contains the tree with Enabled, Executable File Type, Transtype
++        self.transitions_file_filter_model = builder.get_object("File_transitions_treemodel_filter")
++        self.transitions_file_tab = builder.get_object("file_transitions")
 +        self.transitions_file_tab_tooltip_txt = self.transitions_from_x_tab.get_tooltip_text()
-+        self.transitions_file_liststore.set_sort_column_id(0, gtk.SORT_ASCENDING)
++        self.transitions_file_liststore.set_sort_column_id(0, Gtk.SortType.ASCENDING)
 +        # transitions items ************************************
 +
 +        # Combobox and Entry items **************************
-+        self.combobox_menu = self.builder.get_object("combobox_org")                    # This is the combobox box object, aka the arrow next to the entry text bar
-+        self.combobox_menu_model = self.builder.get_object("application_liststore")
-+        self.completion_entry = self.builder.get_object("completion_entry")        #self.combobox_menu.get_child()
-+        self.completion_entry_model = self.builder.get_object("application_liststore")
-+        self.entrycompletion_obj = self.builder.get_object("entrycompletion_obj")
-+        #self.entrycompletion_obj = gtk.EntryCompletion()
++        self.combobox_menu = builder.get_object("combobox_org")                    # This is the combobox box object, aka the arrow next to the entry text bar
++        self.combobox_menu_model = builder.get_object("application_liststore")
++        self.completion_entry = builder.get_object("completion_entry")        #self.combobox_menu.get_child()
++        self.completion_entry_model = builder.get_object("application_liststore")
++        self.entrycompletion_obj = builder.get_object("entrycompletion_obj")
++        #self.entrycompletion_obj = Gtk.EntryCompletion()
 +        self.entrycompletion_obj.set_model(self.completion_entry_model)
 +        self.entrycompletion_obj.set_minimum_key_length(0)
 +        self.entrycompletion_obj.set_text_column(0)
 +        self.entrycompletion_obj.set_match_func(self.match_func, None)
 +        self.completion_entry.set_completion(self.entrycompletion_obj)
-+        self.completion_entry.set_icon_from_stock(0, gtk.STOCK_FIND)
++        self.completion_entry.set_icon_from_stock(0, Gtk.STOCK_FIND)
 +        # Combobox and Entry items **************************
 +
 +        # Modify buttons ************************************
-+        self.show_modified_only_booleans = self.builder.get_object("Show_modified_only_toggle_booleans")
-+        self.show_modified_only_files = self.builder.get_object("Show_modified_only_toggle_files")
-+        self.show_modified_only_network = self.builder.get_object("Show_modified_only_toggle_network")
-+        self.show_modified_only_transitions = self.builder.get_object("Show_modified_only_toggle_transitions")
++        self.show_modified_only_booleans = builder.get_object("Show_modified_only_toggle_booleans")
++        self.show_modified_only_files = builder.get_object("Show_modified_only_toggle_files")
++        self.show_modified_only_network = builder.get_object("Show_modified_only_toggle_network")
++        self.show_modified_only_transitions = builder.get_object("Show_modified_only_toggle_transitions")
 +        # Modify button *************************************
 +
 +        # status bar *****************************************
-+        self.current_status_enforcing = self.builder.get_object("Enforcing_button")
-+        self.current_status_permissive = self.builder.get_object("Permissive_button")
-+        self.status_bar = self.builder.get_object("status_bar")
-+        status = selinux.security_getenforce()
++        self.current_status_enforcing = builder.get_object("Enforcing_button")
++        self.current_status_permissive = builder.get_object("Permissive_button")
++        self.status_bar = builder.get_object("status_bar")
 +        self.context_id = self.status_bar.get_context_id("SELinux status")
 +
-+        if status == -1 :
-+            self.current_status_enforcing.set_sensitive(False)
-+            self.current_status_permissive.set_sensitive(False)
-+            self.status_bar.push(self.context_id,  _("System Status: Disabled"))
-+        else:
-+            self.set_enforce_text(status)
-+        fd = open('/etc/selinux/config', 'r')
-+        for l in fd.readlines():
-+            if l.startswith('SELINUXTYPE='):
-+                l = l.split("SELINUXTYPE=")[1]
-+        fd.close()
-+        if l == 'disabled':
-+            self.system_interface(self.app_system_button)
-+            self.enforcing_button.set_sensitive(False)
-+            self.permissive_button.set_sensitive(False)
-+        # status bar  *****************************************
-+
 +        # filters *********************************************
-+        self.booleans_filter = self.builder.get_object("booleans_filter")           # Get filter text bar (Filter is specific to which either Booleans, Files, or Network tab you are in)
++        self.booleans_filter = builder.get_object("booleans_filter")           # Get filter text bar (Filter is specific to which either Booleans, Files, or Network tab you are in)
 +        self.booleans_filter_data_set = self.boolean_model                          # Get_model() sets the tree model filter to be the parent of the tree model (tree model has all the data in it)
 +        self.booleans_filter_data_set.set_visible_func(self.filter_the_data)        # Set only some of the data to be visible based on what returns from the filter
-+        self.files_filter = self.builder.get_object("files_filter")
++        self.files_filter = builder.get_object("files_filter")
 +        self.exe_files_filter_data_set = self.executable_files_filter_model                         # Get_model() sets the tree model filter to be the parent of the tree model (tree model has all the data in it)
 +        self.exe_files_filter_data_set.set_visible_func(self.filter_the_data)           # Set only some of the data to be visible based on what returns from the filter
 +        self.writable_files_filter_data_set = self.writable_files__filter_model
 +        self.writable_files_filter_data_set.set_visible_func(self.filter_the_data)               # Get_model() sets the tree model filter to be the parent of the tree model (tree model has all the data in it)
 +        self.application_files_filter_data_set = self.application_files_filter_model
 +        self.application_files_filter_data_set.set_visible_func(self.filter_the_data)
-+        self.network_filter = self.builder.get_object("network_filter")
++        self.network_filter = builder.get_object("network_filter")
 +        self.out_network_filter_data_set = self.out_network_filter_model
 +        self.out_network_filter_data_set.set_visible_func(self.filter_the_data)
 +        self.in_network_filter_data_set = self.in_network_filter_model
 +        self.in_network_filter_data_set.set_visible_func(self.filter_the_data)
-+        self.transitions_filter = self.builder.get_object("transitions_filter")
++        self.transitions_filter = builder.get_object("transitions_filter")
 +        self.transitions_from_x_filter_data_set = self.transitions_from_x_filter_model
 +        self.transitions_from_x_filter_data_set.set_visible_func(self.filter_the_data)
 +        self.transitions_into_x_filter_data_set = self.transitions_into_x_filter_model
@@ -515970,55 +516174,62 @@ index 0000000..cbdf9aa
 +        # filters **********************************************
 +
 +        # Toggle button ****************************************
-+        self.cell = self.builder.get_object("activate")
-+        self.cell.connect("toggled", self.on_toggle, self.boolean_tree_data_set)    # Need to connect button on code because the tree view model is a treeviewsort
-+        self.del_cell_files = self.builder.get_object("toggle_delete_files")
++        self.cell = builder.get_object("activate")
++        self.del_cell_files = builder.get_object("toggle_delete_files")
 +        self.del_cell_files.connect("toggled", self.on_toggle_update, self.delete_files_liststore)
-+        self.del_cell_network = self.builder.get_object("toggle_delete_network")
++        self.del_cell_network = builder.get_object("toggle_delete_network")
 +        self.del_cell_network.connect("toggled", self.on_toggle_update, self.delete_network_liststore)
-+        self.update_cell = self.builder.get_object("toggle_update")
-+        self.update_cell.connect("toggled", self.on_toggle_update, self.update_treestore)
-+        # Toggle button ****************************************
-+
-+        # Notebook items ***************************************
-+        self.outer_notebook = self.builder.get_object("outer_notebook")
-+        self.inner_notebook_files = self.builder.get_object("files_inner_notebook")
-+        self.inner_notebook_network = self.builder.get_object("network_inner_notebook")
-+        self.inner_notebook_transitions = self.builder.get_object("transitions_inner_notebook")
++        self.update_cell = builder.get_object("toggle_update")
 +        # Notebook items ***************************************
++        self.outer_notebook = builder.get_object("outer_notebook")
++        self.inner_notebook_files = builder.get_object("files_inner_notebook")
++        self.inner_notebook_network = builder.get_object("network_inner_notebook")
++        self.inner_notebook_transitions = builder.get_object("transitions_inner_notebook")
++        # logind gui ***************************************
++        loading_gui = builder.get_object("loading_gui")
 +
++        self.update_cell.connect("toggled", self.on_toggle_update, self.update_treestore)
 +        self.all_entries = []
-+        sepolicy_domains = sepolicy.get_all_domains()                                  # Items will be read in from the given data set
-+        sepolicy_domains.sort(compare)                                                 # Fix abc order with the compare call
-+        self.list_length = len(sepolicy_domains)
++
++        # Need to connect button on code because the tree view model is a treeviewsort
++        self.cell.connect("toggled", self.on_toggle, self.boolean_tree_data_set)
++
++        length = len(sepolicy_domains)
 +        self.loading = 1
-+        self.loading_gui = self.builder.get_object("loading_gui")
-+        self.loading_gui.show()
++        loading_gui.show()
 +        path = None
++        #        Dan 
++        #for domain in [ "httpd_t", "abrt_t" ]:
 +        for domain in sepolicy_domains:
-+            self.combo_box_initialize(domain, None)                                  # After the user selects a path in the drop down menu call get_init_entrypoint_target(entrypoint) to get the transtype which will give you the application
++            # After the user selects a path in the drop down menu call
++            # get_init_entrypoint_target(entrypoint) to get the transtype
++            # which will give you the application
++            self.combo_box_initialize(domain, None)
 +            self.advanced_search_initialize(domain)
 +            self.all_list.append(domain)
-+            self.percentage = float(float(self.loading)/float(self.list_length))
++            self.percentage = float(float(self.loading)/float(length))
 +            self.progress_bar.set_fraction(self.percentage)
 +            self.progress_bar.set_pulse_step(self.percentage)
 +            self.idle_func()
 +
 +            entrypoint = sepolicy.get_init_entrypoint(domain)
-+            if entrypoint:
++            if entrypoint: 
 +                path = sepolicy.find_entrypoint_path(entrypoint)
 +                if path:
-+                    self.combo_box_initialize(path, None)        # Adds all files entrypoint paths that exists on disc into the combobox
++                    self.combo_box_initialize(path, None)
++                    # Adds all files entrypoint paths that exists on disc
++                    # into the combobox
 +                    self.advanced_search_initialize(path)
 +                    self.installed_list.append(path)
 +
 +            self.loading += 1
-+#        self.customized = self.dbus.customized()
++        loading_gui.hide()
++
 +        dic = {
 +               "on_combo_button_clicked" : self.open_combo_menu,
 +               "on_SELinux_window_configure_event" : self.hide_combo_menu,
 +               "on_entrycompletion_obj_match_selected" : self.set_application_label,
-+               "on_booleans_filter_changed" : self.get_boolean_filter_data,                  # Get the data inputed by the user into the filter
++               "on_booleans_filter_changed" : self.get_boolean_filter_data,
 +               "on_files_filter_changed" : self.get_file_filter_data,
 +               "on_network_filter_changed" : self.get_network_filter_data,
 +               "on_transitions_filter_changed" : self.get_transitions_filter_data,
@@ -516026,6 +516237,7 @@ index 0000000..cbdf9aa
 +               "on_save_changes_network_clicked" : self.update_to_network,
 +               "on_Advanced_text_files_button_press_event" : self.reveal_advanced,
 +               "on_Modify_button_files_clicked" : self.modify_button_files_clicked,
++               "item_in_tree_selected" : self.fuzzin_modify,
 +               "on_Modify_button_network_clicked" : self.modify_button_network_clicked,
 +               "on_Application_file_types_treeview_configure_event" : self.resize_wrap,
 +               "on_save_delete_files_clicked" : self.delete_items_from_list_files,
@@ -516037,23 +516249,24 @@ index 0000000..cbdf9aa
 +               "on_files_path_entry_button_press_event" : self.highlight_entry_text,
 +               "on_files_path_entry_changed" : self.autofill_add_files_entry,
 +               "on_select_type_files_clicked" : self.select_type_more,
-+               "on_select_button_browse_clicked" : self.on_browse_select,
++               "on_choose_file" : self.on_browse_select,
 +               "on_Enforcing_button_toggled" : self.set_enforce,
 +               "on_confirmation_close" : self.confirmation_close,
++               "on_column_clicked" : self.column_clicked,
++               "on_tab_switch" : self.clear_filters,
 +
 +               "on_app/system_button_clicked" : self.system_interface,
 +               "on_main_advanced_label_button_press_event": self.advanced_label_main,
-+               "on_fix_label_exe_toggled" : self.fix_mislabeled,
++
 +               "on_Show_mislabeled_files_toggled" : self.show_mislabeled_files,
 +               "on_Browse_button_files_clicked" : self.browse_for_files,
-+               "item_in_tree_selected" : self.fuzzin_modify,
 +               "on_cancel_delete_network_clicked" : self.close_network_popup,
 +               "on_cancel_network_clicked" : self.close_add_network_popup,
 +               "on_cancel_files_clicked" : self.close_add_files_popup,
 +               "on_cancel_delete_files_clicked" : self.close_files_popup,
 +               "on_cancel_update_clicked" : self.close_update_popup,
 +               "on_Fix_label_cancel_clicked" : self.close_fix_label_popup,
-+               "on_cancel_button_browse_clicked" : self.close_browse_popup,
++               "on_cancel_button_browse_clicked" : self.close_config_window,
 +               "on_apply_button_clicked" : self.apply_changes_button_press,
 +               "on_Revert_button_clicked" : self.update_or_revert_changes,
 +               "on_Update_button_clicked" : self.update_or_revert_changes,
@@ -516063,11 +516276,12 @@ index 0000000..cbdf9aa
 +               "on_Select_advanced_search_clicked" : self.advanced_item_button_push,
 +               "on_All_advanced_button_toggled" : self.advanced_radio_select,
 +               "on_Installed_advanced_button_toggled" : self.advanced_radio_select,
-+
++               "on_info_button_button_press_event" : self.on_help_button,
++               "on_back_button_clicked" : self.on_help_back_clicked,
++               "on_forward_button_clicked" : self.on_help_forward_clicked,
 +               "on_Boolean_treeview_columns_changed" : self.resize_columns,
 +               "on_completion_entry_activate" : self.clear_completion_entry,
-+               "on_completion_entry_changed" : self.completion_entry_selected,
-+               "on_combobox_org_changed" : self.combo_box_item_clicked,
++               "on_completion_entry_changed" : self.application_selected,
 +               "on_Add_button_files_clicked" : self.add_button_files_clicked,
 +               "on_Add_button_network_clicked" : self.add_button_network_clicked,
 +               "on_Delete_button_files_clicked" : self.delete_from_files,
@@ -516076,37 +516290,97 @@ index 0000000..cbdf9aa
 +               "on_Show_modified_only_toggle_files_toggled" : self.files_show_modified_only,
 +               "on_Show_modified_only_toggle_network_toggled" : self.network_show_modified_only,
 +               "on_cancel_button_config_clicked" : self.close_config_window,
-+               "on_select_button_config_clicked" : self.import_or_export,
 +               "on_Import_button_clicked" : self.import_config_show,
 +               "on_Export_button_clicked" : self.export_config_show,
-+               "on_system_policy_type_combobox_changed" : self.change_system_policy,
++               "on_system_policy_type_combobox_changed" : self.change_default_policy,
 +               "on_Enforcing_button_default_toggled" : self.change_default_mode,
 +               "on_Permissive_button_default_toggled" : self.change_default_mode,
 +               "on_Disabled_button_default_toggled" : self.change_default_mode,
-+               "on_Relabel_button_toggled" : self.relabel_on_reboot,
-+               "on_advanced_system_button_press_event" : self.reveal_advanced_system,
 +
++               "on_Relabel_button_toggled_cb": self.relabel_on_reboot,
++               "on_advanced_system_button_press_event" : self.reveal_advanced_system,
 +               "on_files_type_combobox_changed" : self.show_more_types,
-+               "on_treemodelfilter_row_changed" : self.filter_the_data,                             # When a row is changed in the tree model filter
++               "on_treemodelfilter_row_changed" : self.filter_the_data,
 +               "on_Booleans_button_toggled" : self.booleans_tab_change,
 +               "on_Files_button_toggled" : self.files_tab_change,
 +               "on_Network_button_toggled" : self.network_tab_change,
 +               "on_Transitions_button_toggled" : self.transitions_tab_change,
-+               "on_return_to_booleans_toggled" : self.return_to_booleans_clicked,
-+               "on_more_detail_toggled" : self.display_more_detail,
++
 +               "on_booleans_popup_window_delete_event" : self.closewindow,
 +               "gtk_widget_hide": self.closewindow,
 +               "gtk_main_quit": self.closewindow
 +               }
 +
-+        self.loading_gui.hide()
-+        self.builder.connect_signals(dic)
-+        self.window.show()   # Show the gui to the screen
-+        gtk.main()
++        builder.connect_signals(dic)
++        self.window.show()                # Show the gui to the screen
++        if self.application:
++            self.completion_entry.set_text(self.application)
++
++        GLib.timeout_add_seconds(5,self.selinux_status)
++        self.selinux_status()
++        Gtk.main()
++
++    def selinux_status(self):
++        status = selinux.security_getenforce()
++        if status == -1 :
++            self.current_status_enforcing.set_sensitive(False)
++            self.current_status_permissive.set_sensitive(False)
++            self.status_bar.push(self.context_id,  _("System Status: Disabled"))
++            self.system_interface(self.app_system_button)
++        else:
++            self.set_enforce_text(status)
++        if os.path.exists('/.autorelabel'):
++            self.relabel_button.set_active(True)
++        else:
++            self.relabel_button_no.set_active(True)
++            
++        policytype = selinux.selinux_getpolicytype()[1] 
++
++        mode = selinux.selinux_getenforcemode()[1]
++        if mode == 1:
++            self.enforcing_button_default.set_active(True)
++        if mode == 0:
++            self.permissive_button_default.set_active(True)
++        if mode == -1:
++            self.disabled_button_default.set_active(True)
++
++        return True
++
++    def column_clicked(self, treeview, treepath, treecol, *args):
++        self.fuzzin_modify(treeview)
++        if treeview.get_model() == self.booleans_treemodel_sort:
++            if treecol.get_title() == '':
++                self.display_more_detail(self.window, treepath)
++
++        if treeview.get_model() == self.executable_files_treemodel_sort or treeview.get_model() == self.writable_files_treemodel_sort or treeview.get_model() == self.application_files_treemodel_sort:
++            ipage = self.inner_notebook_files.get_current_page()
++            if ipage == self.EXE_PAGE:
++                p = self.executable_files_treemodel_sort.convert_path_to_child_path(treepath)
++                iter = self.exe_files_filter_data_set.get_iter(p)
++                iter = self.exe_files_filter_data_set.convert_iter_to_child_iter(iter)
++                visible = self.executable_files_treestore.get_value(iter, 3)
++            elif ipage == self.WRITABLE_PAGE:
++                p = self.writable_files_treemodel_sort.convert_path_to_child_path(treepath)
++                iter = self.writable_files_filter_data_set.get_iter(p)
++                iter = self.writable_files_filter_data_set.convert_iter_to_child_iter(iter)
++                visible = self.writable_files_treestore.get_value(iter, 3)
++
++            elif ipage == self.APP_PAGE:
++                p = self.application_files_treemodel_sort.convert_path_to_child_path(treepath)
++                iter = self.application_files_filter_data_set.get_iter(p)
++                iter = self.application_files_filter_data_set.convert_iter_to_child_iter(iter)
++                visible = self.application_files_treestore.get_value(iter, 3)
++
++            # If visible is true then fix mislabeled will be visible
++            if treecol.get_title() == '' and visible:
++                self.fix_mislabeled(None, treepath)
++
++        if treeview.get_model() == self.transitions_from_x_treemodelsort:
++            self.return_to_booleans_clicked(treeview.get_model(), treepath)
 +
 +    def idle_func(self):
-+        while gtk.events_pending():
-+            gtk.main_iteration()
++        while Gtk.events_pending():
++            Gtk.main_iteration()
 +
 +    def match_func(self, completion, key_string, iter, func_data):
 +        try:
@@ -516116,6 +516390,69 @@ index 0000000..cbdf9aa
 +        except AttributeError:
 +            pass
 +
++    def help_show_page(self):
++        self.back_button.set_sensitive(self.help_page != 0)
++        self.forward_button.set_sensitive(self.help_page < (len(self.help_list) - 1))
++        try:
++            fd = open("%shelp/%s.txt" % (self.code_path, self.help_list[self.help_page]), "r")
++            buf = fd.read()
++            fd.close()
++        except IOError:
++            buf = ""
++        self.help_text.set_label(buf)
++        self.help_image.set_from_file("%shelp/%s.png" % (self.code_path, self.help_list[self.help_page]))
++        self.help_window.show()
++
++    def on_help_back_clicked(self, *args):
++        self.help_page -= 1
++        self.help_show_page()
++
++    def on_help_forward_clicked(self, *args):
++        self.help_page += 1
++        self.help_show_page()
++        
++    def on_help_button(self, *args):
++        self.help_page = 0
++        self.help_list = []
++        if self.system_button.get_visible():
++            self.help_list = [ "system"]
++            return self.help_show_page()
++        opage = self.outer_notebook.get_current_page()
++        if opage == 0:
++            self.help_list = [ "booleans", "booleans_toggled", "booleans_more", "booleans_more_show"]
++            return self.help_show_page()
++
++        elif opage == 1:
++            ipage = self.inner_notebook_files.get_current_page()
++            if ipage == 0:
++                self.help_list = [ "files_exec" ]
++                return self.help_show_page()
++            if ipage == 1:
++                self.help_list = [ "files_write" ]
++                return self.help_show_page()
++            if ipage == 2:
++                self.help_list = [ "files_app" ]
++                return self.help_show_page()
++        elif opage == 2:
++            ipage = self.inner_notebook_network.get_current_page()
++            if ipage == 0:
++                self.help_list = [ "ports_outbound" ]
++                return self.help_show_page()
++            if ipage == 1:
++                self.help_list = [ "ports_inbound" ]
++                return self.help_show_page()
++        elif opage == 3:
++            ipage = self.inner_notebook_transitions.get_current_page()
++            if ipage == 0:
++                self.help_list = [ "transition_from" ]
++                return self.help_show_page()
++            if ipage == 1:
++                self.help_list = [ "transition_to" ]
++                return self.help_show_page()
++            if ipage == 2:
++                self.help_list = [ "transition_file" ]
++                return self.help_show_page()
++
 +    def open_combo_menu(self, *args):
 +        if self.popup == 0:
 +            self.popup = 1
@@ -516127,7 +516464,6 @@ index 0000000..cbdf9aa
 +            self.popup = 0
 +
 +    def hide_combo_menu(self, *args):
-+        #print args
 +        self.main_selection_window.hide()
 +        self.popup = 0
 +
@@ -516138,44 +516474,29 @@ index 0000000..cbdf9aa
 +        print args
 +
 +    def initialize_system_default_mode(self):
-+        fd = open('/etc/selinux/config', 'r')
-+        for l in fd.readlines():
-+            if l.startswith('SELINUX='):
-+                l = l.split('SELINUX=')[1]
-+                break
-+        fd.close()
-+        if l.startswith('enforcing'):
-+            self.enforcing_button_default.set_active(True)
-+        elif l.startswith('permissive'):
-+            self.permissive_button_default.set_active(True)
-+        else:
-+            self.disabled_button_default.set_active(True)
-+
-+
-+    def read_directory(self, a, dir, files):
-+        try:
-+            dir = dir.split("/etc/selinux/")[1]
-+        except IndexError:
-+            pass
-+        if not '/' in dir and dir != None:
-+            self.policy_list.append(dir)
++        self.enforce_mode = selinux.selinux_getenforcemode()[1]
++        if self.enforce_mode == 1:
++            self.enforce_button = self.enforcing_button_default
++        if self.enforce_mode == 0:
++            self.enforce_button = self.permissive_button_default
++        if self.enforce_mode == -1:
++            self.enforce_button = self.disabled_button_default
 +
 +    def populate_system_policy(self):
-+        os.path.walk('/etc/selinux', self.read_directory, None)
-+        for items in self.policy_list:
++        types = map(lambda x: x[1], filter(lambda x: x[0]=="/etc/selinux", os.walk("/etc/selinux")))[0]
++        types.sort()
++        ctr = 0
++        for item in types:
 +            iter = self.system_policy_type_liststore.append()
-+            self.system_policy_type_liststore.set_value(iter, 0, items)
-+        fd = open('/etc/selinux/config', 'r')
-+        for l in fd.readlines():
-+            if l.startswith('SELINUXTYPE='):
-+                l = l.split("SELINUXTYPE=")[1]
-+        fd.close()
-+        self.system_policy_type_combobox.set_active(self.map_selected_items_into_combobox(self.system_policy_type_liststore, l))
-+
-+    def filter_the_data(self, list, iter):
++            self.system_policy_type_liststore.set_value(iter, 0, item)
++            if item == self.initialtype:
++                self.system_policy_type_combobox.set_active(ctr)
++                self.typeHistory = ctr
++            ctr += 1
++    def filter_the_data(self, list, iter, *args):
 +        if self.filter_txt == "":                                       # When there is no txt in the box show all items in the tree
 +            return True
-+        if isinstance(list, gtk.TreeStore) and list.iter_depth(iter) > 0:
++        if isinstance(list, Gtk.TreeStore) and list.iter_depth(iter) > 0:
 +            return True
 +        try:
 +            val = list.get_value(iter, 0)
@@ -516184,13 +516505,13 @@ index 0000000..cbdf9aa
 +            elif(val.find(self.filter_txt) != -1 or val.find(self.filter_txt.upper()) != -1) :                   # Returns true if filter_txt exists within the val
 +                return True
 +            for x in range(1,10):
-+                try:                        # Remove first item in list and place it into val
++                try:
 +                    val = list.get_value(iter, x)
 +                    if(val.find(self.filter_txt) != -1 or val.find(self.filter_txt.upper()) != -1) :                   # Returns true if filter_txt exists within the val
 +                        return True
-+                except AttributeError:
++                except AttributeError, TypeError:
 +                    pass
-+        except ValueError:
++        except: #ValueError:
 +            pass
 +        return False
 +
@@ -516229,13 +516550,15 @@ index 0000000..cbdf9aa
 +        try:
 +            for port, protocol in self.portdict[application, 0, "Add"]:
 +                type = self.portdict[application, 0, "Add"][port, protocol]["type"]
-+                self.network_initial_data_insert(0, port, type, protocol)
++                if not  self.portdict[application, 0, "Add"][port, protocol]["old"]:
++                    self.network_initial_data_insert(0, port, type, protocol)
 +        except KeyError:
 +            pass
 +        try:
 +            for port, protocol in self.portdict[application, 1, "Add"]:
 +                type = self.portdict[application, 1, "Add"][port, protocol]["type"]
-+                self.network_initial_data_insert(1, port, type, protocol)
++                if not  self.portdict[application, 1, "Add"][port, protocol]["old"]:
++                    self.network_initial_data_insert(1, port, type, protocol)
 +        except KeyError:
 +            pass
 +        try:
@@ -516266,19 +516589,11 @@ index 0000000..cbdf9aa
 +            self.in_network_tree_data_set.set_value(in_iter, 1, protocol)
 +            self.in_network_tree_data_set.set_value(in_iter, 2, portType)
 +
-+    def combo_box_item_clicked(self, widget):
-+        self.executable_files_treestore.clear()
-+        self.in_network_tree_data_set.clear()
-+        self.out_network_tree_data_set.clear()
-+        self.boolean_tree_data_set.clear()
-+        self.transitions_into_x_tree_data_set.clear()
-+        self.transitions_from_x_treestore.clear()
-+        self.writable_files_treestore.clear()
-+        self.application_files_treestore.clear()
-+        application = self.combobox_menu.get_active_text()
-+        self.completion_entry.set_text(application)
-+        self.idle_func()
-+        # Setting the text will cause the on_completion_test_changed signal to trigger calling completion_entry_selected
++    def combo_get_active_text(self, combobox):
++        liststore = combobox.get_model()
++        index = combobox.get_active()
++        iter = liststore.get_iter(index)
++        return liststore.get_value(iter, 0)
 +
 +    def combo_box_initialize(self, val, desc):
 +        if val == None:
@@ -516289,7 +516604,6 @@ index 0000000..cbdf9aa
 +
 +    def clear_completion_entry(self):
 +        self.completion_entry.set_text("")
-+        #print "clear..."
 +
 +    def select_type_more(self, *args):
 +        app = self.moreTypes_treeview.get_selection()
@@ -516304,7 +516618,7 @@ index 0000000..cbdf9aa
 +    def advanced_item_button_push(self, *args):
 +        app = self.advanced_search_treeview.get_selection()
 +        iter = app.get_selected()
-+        iter = self.advanced_search_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++        iter = self.advanced_search_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +        iter = self.advanced_search_filter_data_set.convert_iter_to_child_iter(iter)
 +        app = self.advanced_search_liststore.get_value(iter, 1)
 +        if app == None:
@@ -516313,7 +516627,7 @@ index 0000000..cbdf9aa
 +        self.advanced_search_window.hide()
 +        self.reveal_advanced(self.main_advanced_label)
 +        self.completion_entry.set_text(app)
-+        self.completion_entry_selected()
++        self.application_selected()
 +
 +    def advanced_item_selected(self, treeview, path, *args):
 +        path = self.advanced_search_treemodel_sort.convert_path_to_child_path(path[0])
@@ -516324,7 +516638,7 @@ index 0000000..cbdf9aa
 +        self.advanced_search_window.hide()
 +        self.reveal_advanced(self.main_advanced_label)
 +        self.completion_entry.set_text(app)
-+        self.completion_entry_selected()
++        self.application_selected()
 +
 +    def find_application(self, app):
 +        for items in self.combobox_menu_model:
@@ -516332,7 +516646,7 @@ index 0000000..cbdf9aa
 +                return True
 +        return False
 +
-+    def completion_entry_selected(self, *args):
++    def application_selected(self, *args):
 +        self.show_mislabeled_files_only.set_visible(False)
 +        self.mislabeled_files_label.set_visible(False)
 +        self.warning_files.set_visible(False)
@@ -516405,6 +516719,7 @@ index 0000000..cbdf9aa
 +            self.transitions_file_tab.set_tooltip_text(self.transitions_file_tab_tooltip_txt)
 +            self.transitions_radio_button.set_tooltip_text(self.transitions_radio_button_tooltip_txt)
 +
++        self.previously_modified_initialize(customized)
 +        try:
 +            if self.set_application_label:
 +                self.applications_button_selection.set_label(self.application)
@@ -516428,21 +516743,11 @@ index 0000000..cbdf9aa
 +            pass
 +        except TypeError:
 +            pass
-+        self.previously_modified_initialize()
 +        self.ready_mouse()
 +
-+    def previously_modified_initialize(self):
-+        items = ""
-+        ctr = 0
-+        for char in self.customized:
-+            if char == '\n':
-+                try:
-+                    #items = items.split()[1]
-+                    self.organize_dict(items.split('\n')[1])
-+                except IndexError:
-+                    self.organize_dict(items)
-+                items = ""
-+            items += char
++    def previously_modified_initialize(self, cusomized):
++        for items in customized.split("\n"):
++            self.organize_dict(items[:-1])
 +
 +    def executable_files_initialize(self, application):                         #KeyError with abrt_watch_log_t
 +        sepolicy.reinit()
@@ -516462,7 +516767,8 @@ index 0000000..cbdf9aa
 +
 +            for path, file_class in self.filedict[application, 0, "Add"]:
 +                exe = self.filedict[application, 0, "Add"][path, file_class]["type"]
-+                self.executable_files_initial_data_insert(path, exe, file_class)
++                if not self.filedict[(application, 0, "Add")][(path, file_class)]["old"]:
++                    self.executable_files_initial_data_insert(path, exe, file_class)
 +        except KeyError:
 +            pass
 +        try:
@@ -516525,7 +516831,8 @@ index 0000000..cbdf9aa
 +        try:
 +            for path, file_class in self.filedict[application, 1, "Add"]:
 +                write = self.filedict[application, 1, "Add"][path, file_class]["type"]
-+                self.writable_files_initial_data_insert(path, write, file_class)
++                if not self.filedict[(application, 1, "Add")][(path, file_class)]["old"]:
++                    self.writable_files_initial_data_insert(path, write, file_class)
 +        except KeyError:
 +            pass
 +        try:
@@ -516571,15 +516878,16 @@ index 0000000..cbdf9aa
 +
 +        try:
 +            for path, file_class in self.filedict[application, 2, "Add"]:
-+                exe = self.filedict[application, 2, "Add"][path, file_class]["type"]
-+                self.application_file_types_initial_data_insert(path, exe, file_class)
++                ftype = self.filedict[application, 2, "Add"][path, file_class]["type"]
++                if not self.filedict[(application, 2, "Add")][(path, file_class)]["old"]:
++                    self.application_file_types_initial_data_insert(path, ftype, file_class)
 +        except KeyError:
 +            pass
 +        try:
 +            for path, file_class in self.filedict[application, 2, "Modify"]:
 +                if not self.filedict[application, 2, "Modify"][path, file_class]["changed"]:
-+                    exe = self.filedict[application, 2, "Modify"][path, file_class]["type"]
-+                    self.application_file_types_initial_data_insert(path, exe, file_class)
++                    ftype = self.filedict[application, 2, "Modify"][path, file_class]["type"]
++                    self.application_file_types_initial_data_insert(path, ftype, file_class)
 +        except KeyError:
 +            pass
 +
@@ -516607,6 +516915,7 @@ index 0000000..cbdf9aa
 +        self.boolean_tree_data_set.set_value(iter, 0, active)
 +        self.boolean_tree_data_set.set_value(iter, 1, desc)                # Inserts into application list (list is on left side of gui)
 +        self.boolean_tree_data_set.set_value(iter, 2, val)
++        self.boolean_tree_data_set.set_value(iter, 3, 'More...')
 +
 +    def transitions_into_x_initialize(self, application):
 +        for x in sepolicy.get_transitions_into(application):
@@ -516688,22 +516997,35 @@ index 0000000..cbdf9aa
 +
 +    def booleans_tab_change(self, *args):
 +        self.outer_notebook.set_current_page(0)
++        self.clear_filters()
++        self.fuzzin_modify(self.boolean_treeview)
 +
 +    def files_tab_change(self, *args):
 +        self.outer_notebook.set_current_page(1)
++        self.clear_filters()
++        ipage = self.inner_notebook_files.get_current_page()
++        if ipage == 0:
++            self.fuzzin_modify(self.executable_files_treeview)
++        elif ipage == 1:
++            self.fuzzin_modify(self.writable_files_treeview)
++        elif ipage == 2:
++            self.fuzzin_modify(self.application_files_treeview)
 +
 +    def network_tab_change(self, *args):
 +        self.outer_notebook.set_current_page(2)
++        self.clear_filters()
++        ipage = self.inner_notebook_network.get_current_page()
++        if ipage == 0:
++            self.fuzzin_modify(self.out_network_treeview)
++        elif ipage == 1:
++            self.fuzzin_modify(self.in_network_treeview)
 +
 +    def transitions_tab_change(self, *args):
 +        self.outer_notebook.set_current_page(3)
++        self.clear_filters()
 +
 +    def return_to_booleans_clicked(self, model, path):
-+        #event = gtk.gdk.Event(gtk.gdk.on_Transitions_button_toggled)
-+        #event.window = entry.get_window()  # the gtk.gdk.Window of the widget
-+        #event.send_event = True  # this means you sent the event explicitly
-+        self.booleans_tab_change()
-+
++        self.booleans_radio_button.clicked()
 +        path =  self.transitions_from_x_treemodelsort.convert_path_to_child_path(path)
 +        it = self.transitions_from_x_filter_data_set.get_iter(path)
 +        it = self.transitions_from_x_filter_data_set.convert_iter_to_child_iter(it)
@@ -516763,7 +517085,7 @@ index 0000000..cbdf9aa
 +            iter = row.get_selected()                                   # iter[0] is tree model iter[1] is the iter
 +            if self.error_check_iter(iter[1]):
 +                return
-+            iter = self.executable_files_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++            iter = self.executable_files_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +            iter = self.exe_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            self.delete_old_item = iter
 +            path = self.executable_files_treestore.get_value(iter, 0)
@@ -516781,7 +517103,7 @@ index 0000000..cbdf9aa
 +            iter = row.get_selected()                 # iter[0] is tree model iter[1] is the iter
 +            if self.error_check_iter(iter[1]):
 +                return
-+            iter = self.writable_files_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++            iter = self.writable_files_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +            iter = self.writable_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            self.delete_old_item = iter
 +            path = self.writable_files_treestore.get_value(iter, 0)
@@ -516799,7 +517121,7 @@ index 0000000..cbdf9aa
 +            iter = row.get_selected()                                   # iter[0] is tree model iter[1] is the iter
 +            if self.error_check_iter(iter[1]):
 +                return
-+            iter = self.application_files_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++            iter = self.application_files_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +            iter = self.application_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            self.delete_old_item = iter
 +            path = self.application_files_treestore.get_value(iter, 0)
@@ -516907,7 +517229,7 @@ index 0000000..cbdf9aa
 +        self.files_type_combobox.set_active(0)
 +        self.files_mls_combobox.set_active(0)
 +        iter = self.files_type_combolist.append()
-+        self.files_type_combolist.set_value(iter, 0, 'More..')
++        self.files_type_combolist.set_value(iter, 0, 'More...')
 +    def add_button_network_clicked(self, *args):
 +        if self.application != None:
 +            self.popup_network_label.set_text((_("Add Network Port for %s.  Ports will be created when update is applied."))% self.application)
@@ -516932,7 +517254,7 @@ index 0000000..cbdf9aa
 +            iter = row.get_selected()                                   # iter[0] is tree model iter[1] is the iter
 +            if self.error_check_iter(iter[1]):
 +                return
-+            iter = self.out_network_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++            iter = self.out_network_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +            iter = self.out_network_filter_data_set.convert_iter_to_child_iter(iter)
 +            self.delete_old_item = iter
 +            port = self.out_network_tree_data_set.get_value(iter, 0)
@@ -516952,7 +517274,7 @@ index 0000000..cbdf9aa
 +            iter = row.get_selected()                                   # iter[0] is tree model iter[1] is the iter
 +            if self.error_check_iter(iter[1]):
 +                return
-+            iter = self.in_network_treemodel_sort.convert_iter_to_child_iter(None, iter[1])
++            iter = self.in_network_treemodel_sort.convert_iter_to_child_iter(iter[1])
 +            iter = self.in_network_filter_data_set.convert_iter_to_child_iter(iter)
 +            self.delete_old_item = iter
 +            port = self.in_network_tree_data_set.get_value(iter, 0)
@@ -517031,70 +517353,131 @@ index 0000000..cbdf9aa
 +                self.boolean_tree_data_set.set_value(iter, 0, self.booldict[i]['active'])
 +                self.boolean_tree_data_set.set_value(iter, 1, sepolicy.boolean_desc(i))
 +                self.boolean_tree_data_set.set_value(iter, 2, i)
++                self.boolean_tree_data_set.set_value(iter, 3, 'More...')
 +        elif self.application != None:
 +            self.boolean_tree_data_set.clear()
 +            self.bool_initialize(self.application)
 +
++    def init_modified_files_treestore(self, tree, app, ipage, operation, path, fclass, ftype):
++        iter = tree.append(None)
++        tree.set_value(iter, 0, path)
++        tree.set_value(iter, 1, ftype)
++        tree.set_value(iter, 2, fclass)
++
 +    def files_show_modified_only(self, checkbutton):
 +        ipage = self.inner_notebook_files.get_current_page()
 +        if checkbutton.get_active() == True:
++            modlist = {}
 +            if ipage == self.EXE_PAGE:
++                removedict = {}
++                for i in self.executable_files_treestore:
++                    modlist[i] = {'path': i[0], 'type': i[1], 'class': i[2]}
 +                self.executable_files_treestore.clear()
 +                try:
-+                    for exe, tclass in self.filedict[self.application, ipage, "Add"]:
-+                        iter = self.executable_files_treestore.append(None)
-+                        self.executable_files_treestore.set_value(iter, 0, exe)
-+                        self.executable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Add")][(exe, tclass)]["type"])
-+                        self.executable_files_treestore.set_value(iter, 2, tclass)
++                    for exe, fclass in self.filedict[self.application, ipage, "Add"]:
++                        ftype = self.filedict[self.application, ipage, "Add"][exe, fclass]["type"]
++                        if self.filedict[(self.application, ipage, "Add")][(exe, fclass)]["old"]:
++                            miss = True
++                            for i in modlist:
++                                if exe == modlist[i]['path'] and fclass == modlist[i]['class'] and ftype == modlist[i]['type']:
++
++                                    self.init_modified_files_treestore(self.executable_files_treestore, self.application, ipage, "Add", exe, fclass, ftype)
++                                    miss = False
++                            if miss:
++                                if (self.application, ipage, "Add") not in removedict:
++                                    removedict[self.application, ipage, "Add"] = {}
++                                removedict[self.application, ipage, "Add"][exe, fclass] = {"type": ftype}
++
++                        else:
++                            self.init_modified_files_treestore(self.executable_files_treestore, self.application, ipage, "Add", exe, fclass, ftype)
++
++                    for r in removedict:
++                        for b in removedict[r]:
++                            self.filedict[r].pop(b)
++
 +                except KeyError:
 +                    pass
 +                try:
-+                    for exe, tclass in self.filedict[self.application, ipage, "Modify"]:
++                    for exe, fclass in self.filedict[self.application, ipage, "Modify"]:
 +                        iter = self.executable_files_treestore.append(None)
-+                        if not self.filedict[(self.application, ipage, "Modify")][(exe, tclass)]["changed"]:
++                        if not self.filedict[(self.application, ipage, "Modify")][(exe, fclass)]["changed"]:
 +                            self.executable_files_treestore.set_value(iter, 0, exe)
-+                            self.executable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Modify")][(exe, tclass)]["type"])
-+                            self.executable_files_treestore.set_value(iter, 2, tclass)
++                            self.executable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Modify")][(exe, fclass)]["type"])
++                            self.executable_files_treestore.set_value(iter, 2, fclass)
 +                except KeyError:
 +                    pass
 +            elif ipage == self.WRITABLE_PAGE:
++                removedict = {}
++                for i in self.writable_files_treestore:
++                    modlist[i] = {'path': i[0], 'type': i[1], 'class': i[2]}
 +                self.writable_files_treestore.clear()
 +                try:
-+                    for write, tclass in self.filedict[self.application, ipage, "Add"]:
-+                        iter = self.writable_files_treestore.append(None)
-+                        self.writable_files_treestore.set_value(iter, 0, write)
-+                        self.writable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Add")][(write, tclass)]["type"])
-+                        self.writable_files_treestore.set_value(iter, 2, tclass)
++                    for write, fclass in self.filedict[self.application, ipage, "Add"]:
++                        ftype = self.filedict[self.application, ipage, "Add"][write, fclass]["type"]
++                        if self.filedict[(self.application, ipage, "Add")][(write, fclass)]["old"]:
++                            miss = True
++                            for i in modlist:
++                                if write == modlist[i]['path'] and fclass == modlist[i]['class'] and ftype == modlist[i]['type']:
++                                    self.init_modified_files_treestore(self.writable_files_treestore, self.application, ipage, "Add", write, fclass, ftype)
++                                    miss = False
++                            if miss:
++                                if (self.application, ipage, "Add") not in removedict:
++                                    removedict[self.application, ipage, "Add"] = {}
++                                removedict[self.application, ipage, "Add"][write, fclass] = {"type": ftype}
++                        else:
++                            self.init_modified_files_treestore(self.writable_files_treestore, self.application, ipage, "Add", write, fclass, ftype)
++
++                    for r in removedict:
++                        for b in removedict[r]:
++                            self.filedict[r].pop(b)
++
 +                except KeyError:
 +                    pass
 +                try:
-+                    for write, tclass in self.filedict[self.application, ipage, "Modify"]:
++                    for write, fclass in self.filedict[self.application, ipage, "Modify"]:
 +                        iter = self.writable_files_treestore.append(None)
-+                        if not self.filedict[(self.application, ipage, "Modify")][(write, tclass)]["changed"]:
++                        if not self.filedict[(self.application, ipage, "Modify")][(write, fclass)]["changed"]:
 +                            self.writable_files_treestore.set_value(iter, 0, write)
-+                            self.writable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Modify")][(write, tclass)]["type"])
-+                            self.writable_files_treestore.set_value(iter, 2, tclass)
++                            self.writable_files_treestore.set_value(iter, 1, self.filedict[(self.application, ipage, "Modify")][(write, fclass)]["type"])
++                            self.writable_files_treestore.set_value(iter, 2, fclass)
 +                except KeyError:
 +                    pass
 +            elif ipage == self.APP_PAGE:
++                removedict = {}
++                for i in self.application_files_treestore:
++                    modlist[i] = {'path': i[0], 'type': i[1], 'class': i[2]}
 +                self.application_files_treestore.clear()
 +                try:
-+                    for app, tclass in self.filedict[self.application, ipage, "Add"]:
-+                        markup = self.markup(self.filedict[(self.application, ipage, "Add")][(app, tclass)]["type"])
-+                        iter = self.application_files_treestore.append(None)
-+                        self.application_files_treestore.set_value(iter, 0, app)
-+                        self.application_files_treestore.set_value(iter, 1, markup)
-+                        self.application_files_treestore.set_value(iter, 2, tclass)
++                    for app, fclass in self.filedict[self.application, ipage, "Add"]:
++                        ftype = self.filedict[self.application, ipage, "Add"][app, fclass]["type"]
++                        if self.filedict[(self.application, ipage, "Add")][(app, fclass)]["old"]:
++                            miss = True
++                            for i in modlist:
++                                if app == modlist[i]['path'] and fclass == modlist[i]['class'] and ftype == modlist[i]['type']:
++                                    self.init_modified_files_treestore(self.application_files_treestore, self.application, ipage, "Add", app, fclass, ftype)
++                                    miss = False
++                            if miss:
++                                if (self.application, ipage, "Add") not in removedict:
++                                    removedict[self.application, ipage, "Add"] = {}
++                                removedict[self.application, ipage, "Add"][app, fclass] = {"type": ftype}
++                        else:
++                            markup = self.markup(ftype)
++                            self.init_modified_files_treestore(self.application_files_treestore, self.application, ipage, "Add", app, fclass, markup)
++
++                    for r in removedict:
++                        for b in removedict[r]:
++                            self.filedict[r].pop(b)
++
 +                except KeyError:
 +                    pass
 +                try:
-+                    for app, tclass in self.filedict[self.application, ipage, "Modify"]:
-+                        markup = self.markup(self.filedict[(self.application, ipage, "Modify")][(app, tclass)]["type"])
++                    for app, fclass in self.filedict[self.application, ipage, "Modify"]:
++                        markup = self.markup(self.filedict[(self.application, ipage, "Modify")][(app, fclass)]["type"])
 +                        iter = self.application_files_treestore.append(None)
-+                        if not self.filedict[(self.application, ipage, "Modify")][(app, tclass)]["changed"]:
++                        if not self.filedict[(self.application, ipage, "Modify")][(app, fclass)]["changed"]:
 +                            self.application_files_treestore.set_value(iter, 0, app)
 +                            self.application_files_treestore.set_value(iter, 1, markup)
-+                            self.application_files_treestore.set_value(iter, 2, tclass)
++                            self.application_files_treestore.set_value(iter, 2, fclass)
 +                except KeyError:
 +                    pass
 +
@@ -517112,15 +517495,30 @@ index 0000000..cbdf9aa
 +    def network_show_modified_only(self, checkbutton):
 +        ipage = self.inner_notebook_network.get_current_page()
 +        if checkbutton.get_active() == True:
++            outlist = {}
++            inlist = {}
++            for i in self.out_network_tree_data_set:
++                outlist[i] = {'port': i[0], 'protocol': i[1], 'type': i[2]}
++            for j in self.in_network_tree_data_set:
++                inlist[j] = {'port': j[0], 'protocol': j[1], 'type': j[2]}
++            self.out_network_tree_data_set.clear()
++            self.in_network_tree_data_set.clear()
 +            if ipage == self.OUTBOUND:
-+                self.out_network_tree_data_set.clear()
 +                try:
 +                    for port, protocol in self.portdict[self.application, ipage, "Add"]:
-+                        iter = self.out_network_tree_data_set.append()
 +                        type = self.portdict[(self.application, ipage, "Add")][(port, protocol)]["type"]
-+                        self.out_network_tree_data_set.set_value(iter, 0, port)
-+                        self.out_network_tree_data_set.set_value(iter, 1, protocol)
-+                        self.out_network_tree_data_set.set_value(iter, 2, type)
++                        if self.portdict[(self.application, ipage, "Add")][(port, protocol)]["old"]:
++                            for i in outlist:
++                                if port in outlist[i]['port'].split(',') and protocol == outlist[i]['protocol'] and type == outlist[i]['type']:
++                                    iter = self.out_network_tree_data_set.append()
++                                    self.out_network_tree_data_set.set_value(iter, 0, port)
++                                    self.out_network_tree_data_set.set_value(iter, 1, protocol)
++                                    self.out_network_tree_data_set.set_value(iter, 2, type)
++                        else:
++                            iter = self.out_network_tree_data_set.append()
++                            self.out_network_tree_data_set.set_value(iter, 0, port)
++                            self.out_network_tree_data_set.set_value(iter, 1, protocol)
++                            self.out_network_tree_data_set.set_value(iter, 2, type)
 +                except KeyError:
 +                    pass
 +                try:
@@ -517134,15 +517532,22 @@ index 0000000..cbdf9aa
 +                except KeyError:
 +                    pass
 +            elif ipage == self.INBOUND:
-+                self.in_network_tree_data_set.clear()
 +                try:
 +                    for port, protocol in self.portdict[self.application, ipage, "Add"]:
-+                        iter = self.in_network_tree_data_set.append()
 +                        type = self.portdict[(self.application, ipage, "Add")][(port, protocol)]["type"]
-+                        self.in_network_tree_data_set.set_value(iter, 0, port)
-+                        self.in_network_tree_data_set.set_value(iter, 1, protocol)
-+                        self.in_network_tree_data_set.set_value(iter, 2, type)
-+                except KeyError:
++                        if self.portdict[(self.application, ipage, "Add")][(port, protocol)]["old"]:
++                            for i in inlist:
++                                if port in inlist[i]['port'] and protocol == inlist[i]['protocol'] and type == inlist[i]['type']:
++                                    iter = self.in_network_tree_data_set.append()
++                                    self.in_network_tree_data_set.set_value(iter, 0, port)
++                                    self.in_network_tree_data_set.set_value(iter, 1, protocol)
++                                    self.in_network_tree_data_set.set_value(iter, 2, type)
++                        else:
++                            iter = self.in_network_tree_data_set.append()
++                            self.in_network_tree_data_set.set_value(iter, 0, port)
++                            self.in_network_tree_data_set.set_value(iter, 1, protocol)
++                            self.in_network_tree_data_set.set_value(iter, 2, type)
++                except IndexError:
 +                    pass
 +                try:
 +                    for port, protocol in self.portdict[self.application, ipage, "Modify"]:
@@ -517193,7 +517598,7 @@ index 0000000..cbdf9aa
 +        return False
 +
 +    def show_more_types(self, *args):
-+        if self.files_type_combobox.get_active_text() == 'More..':
++        if self.combo_get_active_text(self.files_type_combobox) == 'More...':
 +            self.popup_window_files.hide()
 +            self.moreTypes_window_files.show()
 +
@@ -517203,9 +517608,10 @@ index 0000000..cbdf9aa
 +        insert_txt = self.files_path_entry.get_text()
 +        if self.error_check_files(insert_txt):
 +            return
-+        type = self.files_type_combobox.get_active_text()
-+        mls = self.files_mls_combobox.get_active_text()
-+        tclass = self.files_class_combobox.get_active_text()
++        type = self.combo_get_active_text(self.files_type_combobox)
++        mls = self.combo_get_active_text(self.files_mls_combobox)
++        tclass = self.combo_get_active_text(self.files_class_combobox)
++
 +        self.files_path_entry.set_text("")
 +        if self.modify_mode:
 +            operation = "Modify"
@@ -517241,6 +517647,7 @@ index 0000000..cbdf9aa
 +        self.recursive_path_toggle.set_active(False)
 +        self.popup_window_files.hide()
 +        self.window.set_sensitive(True)
++        self.new_updates()
 +
 +    def update_to_network(self, *args):
 +        self.network_add = True
@@ -517251,9 +517658,9 @@ index 0000000..cbdf9aa
 +            protocol = "tcp"
 +        elif self.network_udp_button.get_active():
 +            protocol = "udp"
-+        #protocol = self.network_protocol_combobox.get_active_text()
-+        port_type = self.network_port_type_combobox.get_active_text()
-+        mls = self.network_mls_combobox.get_active_text()
++        protocol = self.combo_get_active_text(self.network_protocol_combobox)
++        port_type = self.combo_get_active_text(self.network_port_type_combobox)
++        mls = self.combo_get_active_text(self.network_mls_combobox)
 +        self.network_ports_entry.set_text("")
 +        if self.modify_mode:
 +            operation = "Modify"
@@ -517280,6 +517687,7 @@ index 0000000..cbdf9aa
 +        self.network_add = False
 +        self.popup_window_network.hide()
 +        self.window.set_sensitive(True)
++        self.new_updates()
 +
 +    def delete_from_network(self, *args):
 +        self.delete_window_network.show()
@@ -517309,8 +517717,10 @@ index 0000000..cbdf9aa
 +                    self.ipage_delete(self.out_network_tree_data_set, (delete[1], delete[2]))
 +                elif ipage == 1:
 +                    self.ipage_delete(self.in_network_tree_data_set, (delete[1], delete[2]))
++                break
 +        self.window.set_sensitive(True)
 +        self.delete_window_network.hide()
++        self.new_updates()
 +
 +    def delete_from_files(self, *args):
 +        self.delete_window_files.show()
@@ -517334,17 +517744,32 @@ index 0000000..cbdf9aa
 +    def delete_items_from_list_files(self, *args):
 +        operation = "Add"
 +        ipage = self.inner_notebook_files.get_current_page()
++        del_list = []
 +        for delete in self.delete_files_liststore:
-+            if delete[0]:
-+                self.filedict[(self.application, ipage, operation)].pop((delete[1], delete[3]))
-+                if ipage == 0:
-+                    self.ipage_delete(self.executable_files_treestore, (delete[1], delete[3]))
-+                elif ipage == 1:
-+                    self.ipage_delete(self.writable_files_treestore, (delete[1], delete[3]))
-+                elif ipage == 2:
-+                    self.ipage_delete(self.application_files_treestore, (delete[1], delete[3]))
++            print delete[0], delete[1], delete[2],
++            for path, fclass in self.filedict[self.application, ipage, operation]:
++                if delete[0] and not self.filedict[self.application, ipage, operation][path, fclass]['old']:
++                    self.filedict[(self.application, ipage, operation)].pop((delete[1], delete[3]))
++                    if ipage == 0:
++                        self.ipage_delete(self.executable_files_treestore, (delete[1], delete[3]))
++                    elif ipage == 1:
++                        self.ipage_delete(self.writable_files_treestore, (delete[1], delete[3]))
++                    elif ipage == 2:
++                        self.ipage_delete(self.application_files_treestore, (delete[1], delete[3]))
++                    break
++                elif delete[0] and self.filedict[self.application, ipage, operation][path, fclass]["old"]:
++                    print delete[0], path
++                    type = self.filedict[self.application, ipage, operation][path, fclass]["type"]
++                    mls = self.filedict[self.application, ipage, operation][path, fclass]["mls"]
++                    if (self.application, ipage, 'Delete') not in self.filedict:
++                        self.filedict[(self.application, ipage, 'Delete')] = {}
++                    if (path, fclass) not in self.filedict[(self.application, ipage, 'Delete')]:
++                        self.filedict[(self.application, ipage, 'Delete')][path, fclass] = {}
++                    self.filedict[self.application, ipage, 'Delete'][path, fclass] = {'type': type, 'mls': mls , 'changed': False , 'old': True}
++
 +        self.window.set_sensitive(True)
 +        self.delete_window_files.hide()
++        self.new_updates()
 +
 +    def on_toggle_update(self, cell, path, model):
 +        model[path][0] = not model[path][0]
@@ -517360,11 +517785,14 @@ index 0000000..cbdf9aa
 +
 +    def on_toggle(self, cell, path, model):
 +        if path is not None:
-+            path =  self.booleans_treemodel_sort.convert_path_to_child_path(path)
++            p = self.booleans_treemodel_sort.get_iter(path)
++            p = self.booleans_treemodel_sort.get_path(p)
++            path =  self.booleans_treemodel_sort.convert_path_to_child_path(p)
 +            it = self.booleans_filter_data_set.get_iter(path)
 +            it = self.booleans_filter_data_set.convert_iter_to_child_iter(it)
 +            model.set_value(it, 0, not model.get_value(it, 0))
 +        self.populate_booldict(model, it)
++        self.new_updates()
 +
 +    def get_boolean_filter_data(self, windows, *args):
 +        #search for desired item
@@ -517413,11 +517841,22 @@ index 0000000..cbdf9aa
 +    def populate_booldict(self, model, iter):
 +        name = model.get_value(iter, 2)
 +        enabled = model.get_value(iter, 0)
-+        if self.booldict.has_key(name) and not self.booldict[name]['old']:
-+            self.booldict.pop(name)
++        #if name not in self.booldict:
++        #    self.booldict[name] = {'active': enabled, 'old': False, 'oldvar': False}
++        if self.booldict.has_key(name):
++            #split up if fixes keyerror
++            if not self.booldict[name]['old']:
++            # The case where an old bool is changed then changed back, keeps the old variables old
++                if not self.booldict[name]['oldvar']:
++                    self.booldict.pop(name)
++                else:
++                    self.booldict[name]['active'] = enabled
++                    self.booldict[name]['old']  = True
++            else:
++                self.booldict[name]['active'] = enabled
++                self.booldict[name]['old']  = False
 +        else:
-+            self.booldict[name]['active'] = enabled
-+            self.booldict[name]['old'] = False
++            self.booldict[name] = {'active': enabled, 'old': False, 'oldvar': False}
 +
 +    def update_gui(self, *args):
 +        self.update_or_revert = "update"
@@ -517438,7 +517877,7 @@ index 0000000..cbdf9aa
 +
 +        for app, ipage, operation in self.filedict:
 +            for path, tclass in self.filedict[app, ipage, operation]:
-+                if not self.filedict[(app, ipage, operation)][(path, tclass)]["changed"] and not self.filedict[(app, ipage, operation)][(path, tclass)]["old"]:
++                if not self.filedict[(app, ipage, operation)][(path, tclass)]["changed"] and (not self.filedict[(app, ipage, operation)][(path, tclass)]["old"] or operation == 'Delete'):
 +                    iter = self.update_treestore.append(None)
 +                    self.update_treestore.set_value(iter, 0, True)
 +                    self.update_treestore.set_value(iter, 2, filetabs[ipage])
@@ -517446,8 +517885,8 @@ index 0000000..cbdf9aa
 +                    self.update_treestore.set_value(iter, 0, True)
 +                    if operation == "Add":
 +                        self.update_treestore.set_value(iter, 1, (_("Add file labeling for %s"))% self.application)
-+                    #elif operation == "delete":
-+                        #self.update_treestore.set_value(iter, 1, (_("Delete file labeling for %s"))% self.application)
++                    elif operation == "Delete":
++                        self.update_treestore.set_value(iter, 1, (_("Delete file labeling for %s"))% self.application)
 +                    elif operation == "Modify":
 +                        self.update_treestore.set_value(iter, 1, (_("Modify file labeling for %s"))% self.application)
 +
@@ -517471,8 +517910,8 @@ index 0000000..cbdf9aa
 +                    self.update_treestore.set_value(iter, 0, True)
 +                    if operation == "Add":
 +                        self.update_treestore.set_value(iter, 1, (_("Add ports for %s"))% app)
-+                #elif operation == "delete":
-+                    #self.update_treestore.set_value(iter, 1, (_("Delete ports for %s"))% app)
++                    elif operation == "delete":
++                        self.update_treestore.set_value(iter, 1, (_("Delete ports for %s"))% app)
 +                    elif operation == "Modify":
 +                        self.update_treestore.set_value(iter, 1, (_("Modify ports for %s"))% app)
 +
@@ -517519,13 +517958,15 @@ index 0000000..cbdf9aa
 +            self.window.set_resizable(True)
 +
 +    def show_mislabeled_files(self, checkbutton, *args):
-+        ctr = 0
 +        iterlist = []
++        ctr = 0
 +        ipage = self.inner_notebook_files.get_current_page()
 +        if checkbutton.get_active() == True:
 +            if ipage == 0:
 +                for items in self.executable_files_treestore:
-+                    path = self.executable_files_treemodel_sort.convert_path_to_child_path(ctr)
++                    p = self.executable_files_treemodel_sort.get_iter(ctr)
++                    p = self.executable_files_treemodel_sort.get_path(p)
++                    path = self.executable_files_treemodel_sort.convert_path_to_child_path(p)
 +                    if path != None:
 +                        iter = self.exe_files_filter_data_set.get_iter(path)
 +                        iter = self.exe_files_filter_data_set.convert_iter_to_child_iter(iter)
@@ -517534,9 +517975,12 @@ index 0000000..cbdf9aa
 +                    ctr +=1
 +                for iters in iterlist:
 +                    self.executable_files_treestore.remove(iters)
-+            elif ipage == 1:
++
++            if ipage == 1:
 +                for items in self.writable_files_treestore:
-+                    path = self.writable_files_treemodel_sort.convert_path_to_child_path(ctr)
++                    p = self.writable_files_treemodel_sort.get_iter(ctr)
++                    p = self.writable_files_treemodel_sort.get_path(p)
++                    path = self.writable_files_treemodel_sort.convert_path_to_child_path(p)
 +                    if path != None:
 +                        iter = self.writable_files_filter_data_set.get_iter(path)
 +                        iter = self.writable_files_filter_data_set.convert_iter_to_child_iter(iter)
@@ -517545,9 +517989,12 @@ index 0000000..cbdf9aa
 +                    ctr +=1
 +                for iters in iterlist:
 +                    self.writable_files_treestore.remove(iters)
-+            elif ipage == 2:
++
++            if ipage == 2:
 +                for items in self.application_files_treestore:
-+                    path = self.application_files_treemodel_sort.convert_path_to_child_path(ctr)
++                    p = self.application_files_treemodel_sort.get_iter(ctr)
++                    p = self.application_files_treemodel_sort.get_path(p)
++                    path = self.application_files_treemodel_sort.convert_path_to_child_path(p)
 +                    if path != None:
 +                        iter = self.application_files_filter_data_set.get_iter(path)
 +                        iter = self.application_files_filter_data_set.convert_iter_to_child_iter(iter)
@@ -517572,7 +518019,7 @@ index 0000000..cbdf9aa
 +        self.con = ''
 +        ipage = self.inner_notebook_files.get_current_page()
 +        if ipage == self.EXE_PAGE:
-+            loc = self.executable_files_treemodel_sort.convert_path_to_child_path(loc[0])
++            loc = self.executable_files_treemodel_sort.convert_path_to_child_path(loc)
 +            iter = self.exe_files_filter_data_set.get_iter(loc)
 +            iter = self.exe_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            path = self.executable_files_treestore.get_value(iter, 0)
@@ -517580,7 +518027,7 @@ index 0000000..cbdf9aa
 +            con = self.executable_files_treestore.get_value(iter, 6)
 +
 +        elif ipage == self.WRITABLE_PAGE:
-+            loc = self.writable_files_treemodel_sort.convert_path_to_child_path(loc[0])
++            loc = self.writable_files_treemodel_sort.convert_path_to_child_path(loc)
 +            iter = self.writable_files_filter_data_set.get_iter(loc)
 +            iter = self.writable_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            path = self.writable_files_treestore.get_value(iter, 0)
@@ -517588,7 +518035,7 @@ index 0000000..cbdf9aa
 +            con = self.writable_files_treestore.get_value(iter, 6)
 +
 +        elif ipage == self.APP_PAGE:
-+            loc = self.application_files_treemodel_sort.convert_path_to_child_path(loc[0])
++            loc = self.application_files_treemodel_sort.convert_path_to_child_path(loc)
 +            iter = self.application_files_filter_data_set.get_iter(loc)
 +            iter = self.application_files_filter_data_set.convert_iter_to_child_iter(iter)
 +            path = self.application_files_treestore.get_value(iter, 0)
@@ -517598,6 +518045,17 @@ index 0000000..cbdf9aa
 +        self.restorecon_path = path
 +        self.fix_label_window.show()
 +
++    def new_updates(self, *args):
++        self.update_button.clicked()
++        self.update_window.hide()
++        self.window.set_sensitive(True)
++        if len(self.update_treestore) == 0:
++            self.update_button.set_sensitive(False)
++            self.revert_button.set_sensitive(False)
++        else:
++            self.update_button.set_sensitive(True)
++            self.revert_button.set_sensitive(True)
++
 +    def update_or_revert_changes(self, button, *args):
 +        self.update_gui()
 +        if button.get_label() == "Update":
@@ -517610,17 +518068,24 @@ index 0000000..cbdf9aa
 +            self.update_the_system()
 +        elif self.update_or_revert == "Revert":
 +            self.revert_to_previous_save(False)
++            self.clear_filters()
++            self.application_selected()
++        self.new_updates()
 +
 +    def update_the_system(self, *args):
 +        self.wait_mouse()
 +        self.update_window.hide()
 +        self.window.set_sensitive(True)
 +        try:
-+            print self.send_over_dbus()
++            self.update_buffer = ''
++            self.revert_to_previous_save(True)
++            print self.dbus.semanage(self.update_buffer)
 +        except dbus.exceptions.DBusException, e:
 +            print e
-+        self.completion_entry_selected()
-+        self.customized = self.dbus.customized()
++        self.application_selected()
++        self.previously_modified_initialize(self.dbus.customized())
++        self.clear_filters()
++        self.application_selected()
 +        self.ready_mouse()
 +
 +    def ipage_value_lookup(self, lookup):
@@ -517649,7 +518114,7 @@ index 0000000..cbdf9aa
 +                    self.bool_revert = self.get_attributes_update(self.update_treestore[ctr, 0][1])
 +                    fclass_or_protocol = self.get_attributes_update(self.update_treestore[ctr,1][1])
 +                    ftype = self.get_attributes_update(self.update_treestore[ctr,2][1])
-+                except IndexError:
++                except:
 +                    pass
 +                popbools = []
 +                if ipage == "Booleans":
@@ -517663,8 +518128,7 @@ index 0000000..cbdf9aa
 +                    for ports in self.portdict:
 +                        if self.portdict[self.application, ipage, operation][path_or_port, fclass_or_protocol]["type"] == ftype:
 +                            porttype = self.portdict[self.application, ipage, operation][(path_or_port, fclass_or_protocol)]["type"]
-+                            buf_operation = self.translate_operation(operation)
-+                            self.update_buffer += "port -%s -t %s -p %s %s\n" % (buf_operation, porttype, fclass_or_protocol, path_or_port)
++                            self.update_buffer += "port -%s -t %s -p %s %s\n" % (operation[0].tolower(), porttype, fclass_or_protocol, path_or_port)
 +                            self.portdict[self.application, ipage, operation].pop((path_or_port, fclass_or_protocol))
 +                            break
 +                else:
@@ -517672,43 +518136,41 @@ index 0000000..cbdf9aa
 +                        if self.filedict[self.application, ipage, operation][path_or_port, fclass_or_protocol]["type"] == ftype:
 +
 +
-+                            buf_operation = self.translate_operation(operation)
-+                            self.update_buffer += "fcontext -%s -f %s -t %s %s\n" % (buf_operation, reverse_file_type_str[fclass_or_protocol], ftype, path_or_port)
-+                            print (self.update_buffer)
++                            self.update_buffer += "fcontext -%s -f %s -t %s %s\n" % (operation[0].tolower(), reverse_file_type_str[fclass_or_protocol], ftype, path_or_port)
 +                            self.filedict[self.application, ipage, operation].pop((path_or_port, fclass_or_protocol))
 +                            break
 +
 +            ctr += 1
 +        if update == False:
 +            self.update_window.hide()
-+            self.window.hide()
-+            self.completion_entry_selected()
++            #self.window.hide()
++            #self.application_selected()
 +            self.window.set_sensitive(True)
-+            self.window.show()
++            #self.window.show()
 +
 +    def reveal_advanced_system(self, label, *args):
-+        if label.get_text() == "Advanced >>":
-+            label.set_text("Advanced <<")
++        if label.get_text() == ADVANCED_LABEL[0]:
++            label.set_text(ADVANCED_LABEL[1])
 +            self.system_policy_label.set_visible(True)
 +            self.system_policy_type_combobox.set_visible(True)
-+        elif label.get_text() == "Advanced <<":
-+            label.set_text("Advanced >>")
++        elif label.get_text() == ADVANCED_LABEL[1]:
++            label.set_text(ADVANCED_LABEL[0])
 +            self.system_policy_label.set_visible(False)
 +            self.system_policy_type_combobox.set_visible(False)
 +
 +    def reveal_advanced(self, label, *args):
-+        if label.get_text() == "Advanced >>":
++        if label.get_text() == ADVANCED_LABEL[0]:
++            label.set_text(ADVANCED_LABEL[1])
 +            self.mls_label_files.set_visible(True)
 +            self.files_mls_combobox.set_visible(True)
 +            self.mls_label_network.set_visible(True)
 +            self.network_mls_combobox.set_visible(True)
-+            label.set_text("Advanced <<")
 +        else:
++            label.set_text(ADVANCED_LABEL[0])
 +            self.mls_label_files.set_visible(False)
 +            self.files_mls_combobox.set_visible(False)
 +            self.mls_label_network.set_visible(False)
 +            self.network_mls_combobox.set_visible(False)
-+            label.set_text("Advanced >>")
 +
 +    def advanced_search_initialize(self, domain):
 +        iter = self.advanced_search_liststore.append()
@@ -517735,12 +518197,12 @@ index 0000000..cbdf9aa
 +                    self.advanced_search_liststore.set_value(iter, 0, path)
 +
 +    def advanced_label_main(self, label, *args):
-+        if label.get_text() == "Advanced >>":
-+            label.set_text("Advanced <<")
-+            self.advanced_search_window.show()
-+        elif label.get_text() == "Addanced <<":
-+            label.set_text("Advanced <<")
++        if label.get_text() == ADVANCED_LABEL[1]:
++            label.set_text(ADVANCED_LABEL[0])
 +            self.advanced_search_window.hide()
++        else:
++            label.set_text(ADVANCED_LABEL[1])
++            self.advanced_search_window.show()
 +
 +    def advanced_radio_select(self, button):
 +        label = ""
@@ -517780,6 +518242,10 @@ index 0000000..cbdf9aa
 +        self.clear_entry = False
 +        self.file_dialog.hide()
 +        self.files_path_entry.set_text(filename)
++        if self.import_export == 'Import':
++            self.import_config(filename)
++        elif self.import_export == 'Export':
++            self.export_config(filename)
 +
 +    def recursive_path(self, *args):
 +        path = self.files_path_entry.get_text()
@@ -517792,6 +518258,9 @@ index 0000000..cbdf9aa
 +
 +    def fuzzin_modify(self, tree, *args):
 +        row = tree.get_selection()
++        if row == None:
++            self.modify_button_file.set_sensitive(True)
++            self.modify_button_network.set_sensitive(True)
 +        iter = row.get_selected()                                   # iter[0] is tree model iter[1] is the iter
 +        if not self.error_check_iter(iter[1]):                         # Returns True if there is an error
 +            self.modify_button_file.set_sensitive(True)
@@ -517809,10 +518278,10 @@ index 0000000..cbdf9aa
 +            return
 +        if text.endswith("(/.*)?"):
 +            self.recursive_path_toggle.set_active(True)
-+        for d in self.DEFAULT_DIRS:
++        for d in sepolicy.DEFAULT_DIRS:
 +            if text.startswith(d):
 +                for t in self.files_type_combolist:
-+                    if t[0].endswith(self.DEFAULT_DIRS[d]):
++                    if t[0].endswith(sepolicy.DEFAULT_DIRS[d]):
 +                        self.files_type_combobox.set_active(self.map_selected_items_into_combobox(self.files_type_combolist, t[0]))
 +
 +    def resize_columns(self, *args):
@@ -517823,68 +518292,54 @@ index 0000000..cbdf9aa
 +    def browse_for_files(self, *args):
 +        self.file_dialog.show()
 +
-+    def close_browse_popup(self, *args):
-+        self.file_dialog.hide()
-+
 +    def close_config_window(self, *args):
 +        self.file_dialog.hide()
 +
-+    def change_system_policy(self, *args):
-+        self.dbus.change_policy_type(self.system_policy_type_combobox.get_active_text())
++    def change_default_policy(self, *args):
++        if self.typeHistory == self.system_policy_type_combobox.get_active():
++            return
++
++        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:
++            self.system_policy_type_combobox.set_active(self.typeHistory)
++            return None
++
++        self.dbus.change_default_policy(self.combo_get_active_text(self.system_policy_type_combobox))
++        self.dbus.relabel_on_boot(True)
++        self.typeHistory = self.system_policy_type_combobox.get_active()
 +
 +    def change_default_mode(self, button):
 +        self.enabled_changed(button)
 +        if button.get_active():
-+            self.dbus.change_default_policy(button.get_label().lower())
++            self.dbus.change_default_mode(button.get_label().lower())
 +
 +    def import_config_show(self, *args):
-+        self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
++        self.file_dialog.set_action(Gtk.FileChooserAction.OPEN)
 +        self.file_dialog.set_title("Import Configuration")
 +        self.file_dialog.show()
 +        #self.file_dialog.set_uri('/tmp')
 +        self.import_export = 'Import'
 +
 +    def export_config_show(self, *args):
-+        self.file_dialog.set_action(gtk.FILE_CHOOSER_ACTION_SAVE)
++        self.file_dialog.set_action(Gtk.FileChooserAction.SAVE)
 +        self.file_dialog.set_title("Export Configuration")
 +        self.file_dialog.show()
-+        #self.file_dialog.set_filter('/tmp')
 +        self.import_export = 'Export'
 +
-+    def import_or_export(self, button, *args):
-+        self.file_dialog.show()
-+        if self.import_export == 'Import':
-+            self.import_config()
-+        elif self.import_export == 'Export':
-+            self.export_config()
-+
-+    def export_config(self, *args):
-+        self.file_dialog.hide()
-+        filename = self.file_dialog.get_filename()
-+        if filename == None:
-+            return
-+        if os.path.exists(filename):
-+            print "Error"
++    def export_config(self, filename):
 +        self.wait_mouse()
 +        buf = self.dbus.customized()
 +        fd = open(filename, 'w')
 +        fd.write(buf)
 +        fd.close()
 +        self.ready_mouse()
-+        #self.exportwindow.set_action
 +
-+    def import_config(self, *args):
-+        self.file_dialog.hide()
-+        filename = self.file_dialog.get_filename()
-+        if filename == None:
-+            return
-+        self.file_dialog.hide()
++    def import_config(self, filename):
 +        fd = open(filename, "r")
 +        buf = fd.read()
 +        fd.close()
 +        self.wait_mouse()
 +        try:
-+            print self.dbus.semanage(buf)
++            self.dbus.semanage(buf)
 +        except OSError:
 +            pass
 +        self.ready_mouse()
@@ -517900,25 +518355,26 @@ index 0000000..cbdf9aa
 +        if d.startswith('boolean') and d != 'boolean -D':
 +            boolname = self.convert_unicode(d.split()[3])
 +            value = d.split()[2]
-+            self.booldict[boolname] = {'active': self.translate_bool(value), 'old': True}
++            self.booldict[boolname] = {'active': self.translate_bool(value), 'old': True, 'oldvar': True}
 +
 +        elif d.startswith('port') and d != 'port -D':
 +            port = self.convert_unicode(d.split()[-1])
 +            protocol = self.convert_unicode(d.split()[5])
 +            ptype = self.convert_unicode(d.split()[3])
++
 +            for ipage in [0,1]:
 +                self.init_dictionary(self.portdict, self.application, ipage, 'Add', port, protocol, ptype, 0, False, True)
-+                self.portdict[self.application, ipage, 'Add'][port, protocol] = {'type': ptype, 'mls': 0, 'changed': False, 'old': True}
++                self.portdict[self.application, ipage, 'Add'][port, protocol] = {'type': ptype, 'mls': 1, 'changed': False, 'old': True}
 +
 +        elif d.startswith('fcontext') and d != 'fcontext -D':
 +            path = self.convert_unicode(d.split()[-1]).strip("'")
-+            label = self.convert_unicode(d.split()[6])
++            label = self.convert_unicode(d.split()[5])
 +            fclass = self.convert_unicode(d.split()[3])
-+            if fclass == "'all":
-+                fclass = "all files"
-+            for ipage in [0,2]:
++            fclass = sepolicy.file_type_str[fclass]
++
++            for ipage in range(0,3):
 +                self.init_dictionary(self.filedict, self.application, ipage, 'Add', path, fclass, label, 0, False, True)
-+                self.filedict[self.application, ipage, 'Add'][path, fclass] = {'type': label, 'mls': 0, 'changed': False, 'old': True}
++                self.filedict[self.application, ipage, 'Add'][path, fclass] = {'type': label, 'mls': 1, 'changed': False, 'old': True}
 +
 +    def translate_bool(self, b):
 +        b = b.split('-')[1]
@@ -517927,8 +518383,18 @@ index 0000000..cbdf9aa
 +        if b == '1':
 +            return True
 +
-+    def relabel_on_reboot(self, widget, *args):
-+        self.dbus.relabel_on_boot(widget.get_active())
++    def relabel_on_reboot(self, *args):
++        active = self.relabel_button.get_active()
++        exists = os.path.exists("/.autorelabel")
++
++        if active and exists:
++            return
++        if not active and not exists:
++            return
++        try:
++            self.dbus.relabel_on_boots(active)
++        except dbus.exceptions.DBusException, e:
++            self.error(e)
 +
 +    def closewindow(self, window, *args):
 +        window.hide()
@@ -517936,7 +518402,7 @@ index 0000000..cbdf9aa
 +        self.window.set_sensitive(True)
 +        if self.moreTypes_window_files == window:
 +            self.popup_window_files.show()
-+            if self.files_type_combobox.get_active_text() == 'More...':
++            if self.combo_get_active_text(self.files_type_combobox) =='More...':
 +                self.files_type_combobox.set_active(0)
 +        if self.error_check_window == window:
 +            self.window.set_sensitive(False)
@@ -517955,8 +518421,8 @@ index 0000000..cbdf9aa
 +            self.advanced_text_network.set_visible(True)
 +            self.mls_label_network.set_visible(False)
 +            self.network_mls_combobox.set_visible(False)
-+        if self.main_advanced_label.get_text() == "Advanced <<":
-+            self.main_advanced_label.set_text("Advanced >>")
++        if self.main_advanced_label.get_text() == ADVANCED_LABEL[1]:
++            self.main_advanced_label.set_text(ADVANCED_LABEL[0])
 +        return True
 +
 +    def close_fix_label_popup(self, *args):
@@ -517981,82 +518447,117 @@ index 0000000..cbdf9aa
 +        self.window.set_sensitive(True)
 +
 +    def wait_mouse(self):
-+        self.window.window.set_cursor(self.busy_cursor)
++        self.window.get_window().set_cursor(self.busy_cursor)
 +        self.idle_func()
 +
 +    def ready_mouse(self):
-+        self.window.window.set_cursor(self.ready_cursor)
++        self.window.get_window().set_cursor(self.ready_cursor)
 +        self.idle_func()
 +
++    def tab_change_init(self, *args):
++        self.show_mislabeled_files_only.set_visible(True)
++        self.mislabeled_files_label.set_visible(True)
++        self.warning_files.set_visible(True)
++
 +    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.MessageType.ERROR,
++                                Gtk.ButtonsType.CLOSE,
++                                message)
++        dlg.set_position(Gtk.WindowPosition.MOUSE)
++        dlg.show_all()
++        dlg.run()
++        dlg.destroy()
++
 +    def enabled_changed(self, radio):
-+        disabled = None
-+        enabled = None
 +        if not radio.get_active():
-+            disabled = radio.get_label()
-+        else:
-+            enabled = radio.get_label()
-+
-+        if enabled == 'Disabled' and disabled != '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:
-+                self.relabel_button.set_active(False)
-+                self.relabel_on_reboot(self.relabel_button)
-+                self.relabel_button.set_sensitive(True)
-+
-+        elif enabled != 'Disabled' and disabled == 'Disabled':
-+            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:
-+                self.relabel_button.set_active(True)
-+                self.relabel_on_reboot(self.relabel_button)
-+                self.relabel_button.set_sensitive(False)
++            return
++        label = radio.get_label()
++        if label == 'Disabled' and self.enforce_mode != -1:
++            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:
++                self.enforce_button.set_active(True)
++            
++        if label != 'Disabled' and self.enforce_mode == -1:
++            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:
++                self.enforce_button.set_active(True)
++        self.enforce_button = radio
++
++    def clear_filters(self, *args):
++        self.booleans_filter.set_text('')
++        self.show_modified_only_booleans.set_active(False)
++        self.files_filter.set_text('')
++        self.show_modified_only_files.set_active(False)
++        self.show_mislabeled_files_only.set_active(False)
++        self.network_filter.set_text('')
++        self.show_modified_only_network.set_active(False)
++        self.transitions_filter.set_text('')
 +
 +    def confirmation_close(self, button, *args):
 +        if len(self.update_treestore) > 0:
-+            if self.verify(_("You have not pushed your update.\n Are you sure you want to quit?"), _("Loss of data Dialog")) == gtk.RESPONSE_NO:
++            if self.verify(_("You are attempting to close the application without applying your changes.\n    *    To apply changes you have made during this session, click No and click Update.\n    *    To leave the application without applying your changes, click Yes.  All changes that you have made during this session will be lost."), _("Loss of data Dialog")) == Gtk.ResponseType.NO:
 +                return True
-+        self.quit(self.window)
++        self.quit()
 +
-+    def quit(self, widget):
++    def quit(self, *args):
 +        sys.exit(0)
 +
 +    def restorecon(self, *args):
 +        self.dbus.restorecon(self.restorecon_path)
-+        self.completion_entry_selected()
++        self.application_selected()
 +        self.fix_label_window.hide()
 +
-+    def translate_operation(self, operation):
-+        if operation == 'Add':
-+            return 'a'
-+        elif operation == 'Modify':
-+            return 'm'
-+
-+    def send_over_dbus(self, *args):
-+        self.update_buffer = ''
-+        self.revert_to_previous_save(True)
-+        return self.dbus.semanage(self.update_buffer)
-+
 +if __name__ == '__main__':
 +    start = SELinuxGui()
-+
-+#self.filedict[(self.application, ipage, operation)][(path, type)] = {"type": tclass, "mls": mls, "changed": True}
-+#self.portdict[(self.application, ipage, operation)][(port, protocol)] = {"type": type, "mls": mls, "changed": True}
-+
-+#semanage boolean -E
-+#boolean -1 httpd_anon_write
-+#boolean -0 httpd_enable_cgi
-+#fcontext -a -t etc_t PATH
-+#fcontext fcontext -a -t etc_t PATH
-+#fcontext -a -f 'all files' -t etc_t '/dan'
-+# port -a -t ssh_port_t -p tcp 56
+diff --git a/policycoreutils/sepolicy/sepolicy/help/booleans.png b/policycoreutils/sepolicy/sepolicy/help/booleans.png
+new file mode 100644
+index 0000000..a7b4206
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/booleans.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/files_apps.png b/policycoreutils/sepolicy/sepolicy/help/files_apps.png
+new file mode 100644
+index 0000000..2c42632
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/files_apps.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/files_exec.png b/policycoreutils/sepolicy/sepolicy/help/files_exec.png
+new file mode 100644
+index 0000000..67d7805
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/files_exec.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/files_write.png b/policycoreutils/sepolicy/sepolicy/help/files_write.png
+new file mode 100644
+index 0000000..38b27fc
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/files_write.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/ports_inbound.png b/policycoreutils/sepolicy/sepolicy/help/ports_inbound.png
+new file mode 100644
+index 0000000..5021022
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/ports_inbound.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/ports_outbound.png b/policycoreutils/sepolicy/sepolicy/help/ports_outbound.png
+new file mode 100644
+index 0000000..a0bf7da
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/ports_outbound.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/system.png b/policycoreutils/sepolicy/sepolicy/help/system.png
+new file mode 100644
+index 0000000..864696e
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/system.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/transition_file.png b/policycoreutils/sepolicy/sepolicy/help/transition_file.png
+new file mode 100644
+index 0000000..45f19ca
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/transition_file.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/transition_from.png b/policycoreutils/sepolicy/sepolicy/help/transition_from.png
+new file mode 100644
+index 0000000..d49178f
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/transition_from.png differ
+diff --git a/policycoreutils/sepolicy/sepolicy/help/transition_to.png b/policycoreutils/sepolicy/sepolicy/help/transition_to.png
+new file mode 100644
+index 0000000..b474da7
+Binary files /dev/null and b/policycoreutils/sepolicy/sepolicy/help/transition_to.png differ
 diff --git a/policycoreutils/sepolicy/sepolicy/interface.py b/policycoreutils/sepolicy/sepolicy/interface.py
 index 8b063ca..c7dac62 100644
 --- a/policycoreutils/sepolicy/sepolicy/interface.py
@@ -518828,15 +519329,14 @@ index 66efe26..970f4c8 100755
      return d
 diff --git a/policycoreutils/sepolicy/sepolicy/sedbus.py b/policycoreutils/sepolicy/sepolicy/sedbus.py
 new file mode 100644
-index 0000000..0a30450
+index 0000000..7ad2af7
 --- /dev/null
 +++ b/policycoreutils/sepolicy/sepolicy/sedbus.py
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,55 @@
 +import sys
 +import dbus
 +import dbus.service
 +import dbus.mainloop.glib
-+import gobject
 +import slip.dbus.service
 +from slip.dbus import polkit
 +import os
@@ -518866,6 +519366,21 @@ index 0000000..0a30450
 +        ret = self.dbus_object.customized(dbus_interface = "org.selinux")
 +        return ret
 +
++    @polkit.enable_proxy
++    def relabel_on_boot(self, value):
++        ret = self.dbus_object.relabel_on_boot(value, dbus_interface = "org.selinux")
++        return ret
++
++    @polkit.enable_proxy
++    def change_default_mode(self, value):
++        ret = self.dbus_object.change_default_mode(value, dbus_interface = "org.selinux")
++        return ret
++
++    @polkit.enable_proxy
++    def change_default_policy(self, value):
++        ret = self.dbus_object.change_default_policy(value, dbus_interface = "org.selinux")
++        return ret
++
 +if __name__ == "__main__":
 +    try:
 +        dbus_proxy = SELinuxDBus()
@@ -518875,12 +519390,12 @@ index 0000000..0a30450
 +        print e
 diff --git a/policycoreutils/sepolicy/sepolicy/sepolicy.glade b/policycoreutils/sepolicy/sepolicy/sepolicy.glade
 new file mode 100644
-index 0000000..3ea562c
+index 0000000..ab14d7e
 --- /dev/null
 +++ b/policycoreutils/sepolicy/sepolicy/sepolicy.glade
-@@ -0,0 +1,3904 @@
+@@ -0,0 +1,4114 @@
 +<?xml version="1.0" encoding="UTF-8"?>
-+<!-- Generated with glade 3.15.2 on Wed Aug 14 16:19:58 2013 -->
++<!-- Generated with glade 3.15.2 on Fri Aug 30 15:18:54 2013 -->
 +<interface>
 +  <!-- interface-requires gtk+ 3.8 -->
 +  <object class="GtkListStore" id="Advanced_search_liststore">
@@ -519080,9 +519595,12 @@ index 0000000..3ea562c
 +    <property name="modal">True</property>
 +    <property name="type_hint">normal</property>
 +    <property name="action">save</property>
++    <signal name="delete-event" handler="gtk_widget_hide" swapped="no"/>
 +    <child internal-child="vbox">
 +      <object class="GtkBox" id="filechooserdialog-vbox1">
 +        <property name="can_focus">False</property>
++        <property name="orientation">vertical</property>
++        <signal name="button-press-event" handler="on_choose_file" swapped="no"/>
 +        <child internal-child="action_area">
 +          <object class="GtkButtonBox" id="filechooserdialog-action_area1">
 +            <property name="can_focus">False</property>
@@ -519094,111 +519612,17 @@ index 0000000..3ea562c
 +            <property name="position">0</property>
 +          </packing>
 +        </child>
-+      </object>
-+    </child>
-+  </object>
-+  <object class="GtkTreeModelFilter" id="advanced_treemodel_filter">
-+    <property name="child_model">Advanced_search_liststore</property>
-+  </object>
-+  <object class="GtkTreeModelSort" id="advanced_treemodel_sort">
-+    <property name="model">advanced_treemodel_filter</property>
-+  </object>
-+  <object class="GtkTreeStore" id="application_filetypes_treestore">
-+    <columns>
-+      <!-- column-name File -->
-+      <column type="gchararray"/>
-+      <!-- column-name Description -->
-+      <column type="gchararray"/>
-+      <!-- column-name gchararray1 -->
-+      <column type="gchararray"/>
-+      <!-- column-name Label -->
-+      <column type="gboolean"/>
-+      <!-- column-name Mislabled -->
-+      <column type="gboolean"/>
-+      <!-- column-name Cur -->
-+      <column type="gchararray"/>
-+      <!-- column-name Con -->
-+      <column type="gchararray"/>
-+    </columns>
-+  </object>
-+  <object class="GtkTreeModelFilter" id="application_filetypes_treemodelfilter">
-+    <property name="child_model">application_filetypes_treestore</property>
-+  </object>
-+  <object class="GtkTreeModelSort" id="application_filetypes_treemodelsort">
-+    <property name="model">application_filetypes_treemodelfilter</property>
-+  </object>
-+  <object class="GtkListStore" id="application_liststore">
-+    <columns>
-+      <!-- column-name Application -->
-+      <column type="gchararray"/>
-+    </columns>
-+  </object>
-+  <object class="GtkListStore" id="application_tree_list">
-+    <columns>
-+      <!-- column-name Process -->
-+      <column type="gchararray"/>
-+    </columns>
-+  </object>
-+  <object class="GtkTreeModelFilter" id="application_treemodelfilter">
-+    <property name="child_model">application_liststore</property>
-+  </object>
-+  <object class="GtkListStore" id="boolean_liststore">
-+    <columns>
-+      <!-- column-name Active -->
-+      <column type="gboolean"/>
-+      <!-- column-name Description -->
-+      <column type="gchararray"/>
-+      <!-- column-name Name -->
-+      <column type="gchararray"/>
-+    </columns>
-+  </object>
-+  <object class="GtkTreeModelFilter" id="boolean_treemodelfilter">
-+    <property name="child_model">boolean_liststore</property>
-+  </object>
-+  <object class="GtkTreeModelSort" id="boolean_treemodelsort">
-+    <property name="model">boolean_treemodelfilter</property>
-+  </object>
-+  <object class="GtkListStore" id="booleans_more_detail_liststore">
-+    <columns>
-+      <!-- column-name Detail -->
-+      <column type="gchararray"/>
-+    </columns>
-+  </object>
-+  <object class="GtkWindow" id="confirmation_dialog_close">
-+    <property name="can_focus">False</property>
-+    <property name="type">popup</property>
-+    <property name="modal">True</property>
-+    <property name="window_position">center-on-parent</property>
-+    <property name="default_width">440</property>
-+    <property name="default_height">250</property>
-+    <property name="transient_for">SELinux_window</property>
-+    <child>
-+      <object class="GtkVBox" id="box5">
-+        <property name="visible">True</property>
-+        <property name="can_focus">False</property>
-+        <child>
-+          <object class="GtkLabel" id="label15">
-+            <property name="visible">True</property>
-+            <property name="can_focus">False</property>
-+            <property name="label" translatable="yes">All previous changes will be lost.  Save you changes to keep them.</property>
-+          </object>
-+          <packing>
-+            <property name="expand">True</property>
-+            <property name="fill">True</property>
-+            <property name="position">0</property>
-+          </packing>
-+        </child>
 +        <child>
-+          <object class="GtkHBox" id="box9">
++          <object class="GtkBox" id="box3">
 +            <property name="visible">True</property>
 +            <property name="can_focus">False</property>
 +            <child>
-+              <object class="GtkButton" id="ok_button_close">
-+                <property name="label" translatable="yes">OK</property>
++              <object class="GtkButton" id="select_button_filechooser">
++                <property name="label" translatable="yes">Select</property>
 +                <property name="visible">True</property>
 +                <property name="can_focus">True</property>
 +                <property name="receives_default">True</property>
-+                <signal name="clicked" handler="gtk_main_quit" swapped="no"/>
++                <signal name="clicked" handler="on_choose_file" swapped="no"/>
 +              </object>
 +              <packing>
 +                <property name="expand">False</property>
@@ -519208,12 +519632,12 @@ index 0000000..3ea562c
 +              </packing>
 +            </child>
 +            <child>
-+              <object class="GtkButton" id="cancel_button_close">
++              <object class="GtkButton" id="cancel_button_filechooser">
 +                <property name="label" translatable="yes">Cancel</property>
 +                <property name="visible">True</property>
 +                <property name="can_focus">True</property>
 +                <property name="receives_default">True</property>
-+                <signal name="clicked" handler="on_confirmation_close" swapped="no"/>
++                <signal name="clicked" handler="gtk_widget_hide" swapped="no"/>
 +              </object>
 +              <packing>
 +                <property name="expand">False</property>
@@ -519226,12 +519650,81 @@ index 0000000..3ea562c
 +          <packing>
 +            <property name="expand">False</property>
 +            <property name="fill">True</property>
-+            <property name="position">1</property>
++            <property name="position">2</property>
 +          </packing>
 +        </child>
 +      </object>
 +    </child>
 +  </object>
++  <object class="GtkTreeModelFilter" id="advanced_treemodel_filter">
++    <property name="child_model">Advanced_search_liststore</property>
++  </object>
++  <object class="GtkTreeModelSort" id="advanced_treemodel_sort">
++    <property name="model">advanced_treemodel_filter</property>
++  </object>
++  <object class="GtkTreeStore" id="application_filetypes_treestore">
++    <columns>
++      <!-- column-name File -->
++      <column type="gchararray"/>
++      <!-- column-name Description -->
++      <column type="gchararray"/>
++      <!-- column-name gchararray1 -->
++      <column type="gchararray"/>
++      <!-- column-name Label -->
++      <column type="gboolean"/>
++      <!-- column-name Mislabled -->
++      <column type="gboolean"/>
++      <!-- column-name Cur -->
++      <column type="gchararray"/>
++      <!-- column-name Con -->
++      <column type="gchararray"/>
++    </columns>
++  </object>
++  <object class="GtkTreeModelFilter" id="application_filetypes_treemodelfilter">
++    <property name="child_model">application_filetypes_treestore</property>
++  </object>
++  <object class="GtkTreeModelSort" id="application_filetypes_treemodelsort">
++    <property name="model">application_filetypes_treemodelfilter</property>
++  </object>
++  <object class="GtkListStore" id="application_liststore">
++    <columns>
++      <!-- column-name Application -->
++      <column type="gchararray"/>
++    </columns>
++  </object>
++  <object class="GtkListStore" id="application_tree_list">
++    <columns>
++      <!-- column-name Process -->
++      <column type="gchararray"/>
++    </columns>
++  </object>
++  <object class="GtkTreeModelFilter" id="application_treemodelfilter">
++    <property name="child_model">application_liststore</property>
++  </object>
++  <object class="GtkListStore" id="boolean_liststore">
++    <columns>
++      <!-- column-name Active -->
++      <column type="gboolean"/>
++      <!-- column-name Description -->
++      <column type="gchararray"/>
++      <!-- column-name Name -->
++      <column type="gchararray"/>
++      <!-- column-name More.. -->
++      <column type="gchararray"/>
++    </columns>
++  </object>
++  <object class="GtkTreeModelFilter" id="boolean_treemodelfilter">
++    <property name="child_model">boolean_liststore</property>
++  </object>
++  <object class="GtkTreeModelSort" id="boolean_treemodelsort">
++    <property name="model">boolean_treemodelfilter</property>
++  </object>
++  <object class="GtkListStore" id="booleans_more_detail_liststore">
++    <columns>
++      <!-- column-name Detail -->
++      <column type="gchararray"/>
++    </columns>
++  </object>
 +  <object class="GtkListStore" id="delete_files_liststore">
 +    <columns>
 +      <!-- column-name Select -->
@@ -519379,6 +519872,126 @@ index 0000000..3ea562c
 +      <column type="gchararray"/>
 +    </columns>
 +  </object>
++  <object class="GtkDialog" id="help_window">
++    <property name="can_focus">False</property>
++    <property name="resizable">False</property>
++    <property name="default_width">200</property>
++    <property name="default_height">500</property>
++    <property name="type_hint">normal</property>
++    <signal name="delete-event" handler="gtk_widget_hide" swapped="no"/>
++    <child internal-child="vbox">
++      <object class="GtkBox" id="dialog-vbox1">
++        <property name="can_focus">False</property>
++        <property name="orientation">vertical</property>
++        <property name="spacing">2</property>
++        <child internal-child="action_area">
++          <object class="GtkButtonBox" id="dialog-action_area1">
++            <property name="can_focus">False</property>
++            <property name="layout_style">end</property>
++            <child>
++              <object class="GtkButton" id="back_button">
++                <property name="visible">True</property>
++                <property name="can_focus">True</property>
++                <property name="receives_default">True</property>
++                <signal name="clicked" handler="on_back_button_clicked" swapped="no"/>
++                <child>
++                  <object class="GtkArrow" id="arrow2">
++                    <property name="visible">True</property>
++                    <property name="can_focus">False</property>
++                    <property name="arrow_type">left</property>
++                  </object>
++                </child>
++              </object>
++              <packing>
++                <property name="expand">False</property>
++                <property name="fill">True</property>
++                <property name="position">0</property>
++              </packing>
++            </child>
++            <child>
++              <object class="GtkButton" id="forward_button">
++                <property name="visible">True</property>
++                <property name="can_focus">True</property>
++                <property name="receives_default">True</property>
++                <signal name="clicked" handler="on_forward_button_clicked" swapped="no"/>
++                <child>
++                  <object class="GtkArrow" id="arrow3">
++                    <property name="visible">True</property>
++                    <property name="can_focus">False</property>
++                  </object>
++                </child>
++              </object>
++              <packing>
++                <property name="expand">False</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="box9">
++            <property name="visible">True</property>
++            <property name="can_focus">False</property>
++            <property name="orientation">vertical</property>
++            <child>
++              <object class="GtkScrolledWindow" id="scrolledwindow14">
++                <property name="visible">True</property>
++                <property name="can_focus">True</property>
++                <property name="shadow_type">in</property>
++		<property name="height_request">200</property>
++		<child>
++		  <object class="GtkLabel" id="help_text">
++		    <property name="visible">True</property>
++		    <property name="can_focus">False</property>
++		    <property name="xalign">0</property>
++		    <property name="xpad">10</property>
++		    <property name="label" translatable="yes">&lt;operation&gt; File Labeling for &lt;selected domain&gt;. File labels will be created when update is applied.</property>
++		    <property name="justify">fill</property>
++		    <property name="wrap">True</property>
++		  </object>
++		  <packing>
++		    <property name="expand">True</property>
++		    <property name="fill">True</property>
++		    <property name="position">0</property>
++		  </packing>
++		</child>
++              </object>
++
++              <packing>
++                <property name="expand">False</property>
++                <property name="fill">True</property>
++                <property name="position">0</property>
++              </packing>
++            </child>
++            <child>
++              <object class="GtkImage" id="help_image">
++                <property name="visible">True</property>
++                <property name="can_focus">False</property>
++                <property name="pixbuf">images/booleans.png</property>
++              </object>
++              <packing>
++                <property name="expand">False</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="position">1</property>
++          </packing>
++        </child>
++      </object>
++    </child>
++  </object>
 +  <object class="GtkListStore" id="in_network_liststore">
 +    <columns>
 +      <!-- column-name Port -->
@@ -519472,7 +520085,8 @@ index 0000000..3ea562c
 +    <property name="title" translatable="yes">Add a File</property>
 +    <property name="resizable">False</property>
 +    <property name="modal">True</property>
-+    <property name="window_position">center-always</property>
++    <property name="window_position">center-on-parent</property>
++    <property name="transient_for">SELinux_window</property>
 +    <signal name="delete-event" handler="gtk_widget_hide" swapped="no"/>
 +    <child>
 +      <object class="GtkVBox" id="vbox20">
@@ -519799,7 +520413,8 @@ index 0000000..3ea562c
 +    <property name="title" translatable="yes">Network Port Definitions</property>
 +    <property name="resizable">False</property>
 +    <property name="modal">True</property>
-+    <property name="window_position">center-always</property>
++    <property name="window_position">center-on-parent</property>
++    <property name="transient_for">SELinux_window</property>
 +    <signal name="delete-event" handler="gtk_widget_hide" swapped="no"/>
 +    <child>
 +      <object class="GtkVBox" id="vbox23">
@@ -520012,7 +520627,6 @@ index 0000000..3ea562c
 +                    <property name="xalign">0.5</property>
 +                    <property name="active">True</property>
 +                    <property name="draw_indicator">True</property>
-+                    <property name="group">udp_button</property>
 +                  </object>
 +                  <packing>
 +                    <property name="expand">True</property>
@@ -520177,12 +520791,18 @@ index 0000000..3ea562c
 +                            </child>
 +                            <child>
 +                              <object class="GtkButton" id="button1">
-+                                <property name="label" translatable="yes">↓</property>
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
 +                                <property name="receives_default">True</property>
 +                                <property name="relief">none</property>
 +                                <signal name="clicked" handler="on_combo_button_clicked" swapped="no"/>
++                                <child>
++                                  <object class="GtkArrow" id="arrow1">
++                                    <property name="visible">True</property>
++                                    <property name="can_focus">False</property>
++                                    <property name="arrow_type">down</property>
++                                  </object>
++                                </child>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">True</property>
@@ -520209,7 +520829,6 @@ index 0000000..3ea562c
 +                        <property name="xalign">0.5</property>
 +                        <property name="active">True</property>
 +                        <property name="draw_indicator">False</property>
-+                        <property name="group">Files_button</property>
 +                        <signal name="toggled" handler="on_Booleans_button_toggled" swapped="no"/>
 +                      </object>
 +                      <packing>
@@ -520287,6 +520906,27 @@ index 0000000..3ea562c
 +                        <property name="position">5</property>
 +                      </packing>
 +                    </child>
++                    <child>
++                      <object class="GtkEventBox" id="eventbox1">
++                        <property name="visible">True</property>
++                        <property name="can_focus">False</property>
++                        <signal name="button-press-event" handler="on_info_button_button_press_event" swapped="no"/>
++                        <child>
++                          <object class="GtkImage" id="info_button">
++                            <property name="visible">True</property>
++                            <property name="can_focus">False</property>
++                            <property name="xpad">10</property>
++                            <property name="stock">gtk-help</property>
++                          </object>
++                        </child>
++                      </object>
++                      <packing>
++                        <property name="expand">False</property>
++                        <property name="fill">False</property>
++                        <property name="pack_type">end</property>
++                        <property name="position">6</property>
++                      </packing>
++                    </child>
 +                  </object>
 +                  <packing>
 +                    <property name="expand">False</property>
@@ -520312,6 +520952,7 @@ index 0000000..3ea562c
 +                              <object class="GtkHBox" id="hbox2">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
++                                <property name="border_width">3</property>
 +                                <child>
 +                                  <object class="GtkLabel" id="text1">
 +                                    <property name="visible">True</property>
@@ -520377,7 +521018,8 @@ index 0000000..3ea562c
 +                                    <property name="tooltip_text" translatable="yes">If-Then-Else rules written in policy that can 
 +allow alternative access control.</property>
 +                                    <property name="model">boolean_treemodelsort</property>
-+                                    <property name="search_column">0</property>
++                                    <property name="activate_on_single_click">True</property>
++                                    <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                    <child internal-child="selection">
 +                                      <object class="GtkTreeSelection" id="treeview-selection1"/>
 +                                    </child>
@@ -520416,22 +521058,19 @@ index 0000000..3ea562c
 +                                    </child>
 +                                    <child>
 +                                      <object class="GtkTreeViewColumn" id="more_detail_col">
++                                        <property name="resizable">True</property>
 +                                        <property name="sizing">fixed</property>
-+                                        <property name="fixed_width">40</property>
 +                                        <property name="min_width">40</property>
++                                        <property name="clickable">True</property>
 +                                        <property name="sort_column_id">2</property>
 +                                        <child>
-+                                          <object class="GtkCellRendererText" id="cellrenderertext22">
++                                          <object class="GtkCellRendererText" id="More..">
 +                                            <property name="font">Italic 8</property>
 +                                            <property name="foreground_gdk">#00004e4e9999</property>
-+                                            <property name="text">More..</property>
-+                                          </object>
-+                                        </child>
-+                                        <child>
-+                                          <object class="GtkCellRendererToggle" id="more_detail">
-+                                            <property name="indicator_size">0</property>
-+                                            <signal name="toggled" handler="on_more_detail_toggled" swapped="no"/>
 +                                          </object>
++                                          <attributes>
++                                            <attribute name="text">3</attribute>
++                                          </attributes>
 +                                        </child>
 +                                      </object>
 +                                    </child>
@@ -520478,109 +521117,76 @@ index 0000000..3ea562c
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <child>
-+                              <object class="GtkTable" id="table1">
++                              <object class="GtkBox" id="box12">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
-+                                <property name="n_rows">2</property>
++                                <property name="border_width">3</property>
++                                <property name="orientation">vertical</property>
 +                                <child>
-+                                  <object class="GtkVBox" id="box2">
++                                  <object class="GtkBox" id="box14">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
 +                                    <child>
-+                                      <object class="GtkHBox" id="box3">
++                                      <object class="GtkLabel" id="text2">
 +                                        <property name="visible">True</property>
 +                                        <property name="can_focus">False</property>
-+                                        <child>
-+                                          <object class="GtkImage" id="warning_files">
-+                                            <property name="can_focus">False</property>
-+                                            <property name="stock">gtk-dialog-warning</property>
-+                                          </object>
-+                                          <packing>
-+                                            <property name="expand">False</property>
-+                                            <property name="fill">True</property>
-+                                            <property name="position">0</property>
-+                                          </packing>
-+                                        </child>
-+                                        <child>
-+                                          <object class="GtkLabel" id="mislabeled_files_label">
-+                                            <property name="can_focus">False</property>
-+                                            <property name="label" translatable="yes">Mislabeled files exist</property>
-+                                            <attributes>
-+                                              <attribute name="foreground" value="#e43403050305"/>
-+                                            </attributes>
-+                                          </object>
-+                                          <packing>
-+                                            <property name="expand">False</property>
-+                                            <property name="fill">True</property>
-+                                            <property name="position">1</property>
-+                                          </packing>
-+                                        </child>
++                                        <property name="label" translatable="yes">Filter</property>
 +                                      </object>
 +                                      <packing>
 +                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
++                                        <property name="fill">True</property>
 +                                        <property name="position">0</property>
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkCheckButton" id="Show_mislabeled_files">
-+                                        <property name="label" translatable="yes">Show mislabeled files only</property>
++                                      <object class="GtkEntry" id="files_filter">
++                                        <property name="width_request">170</property>
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">True</property>
++                                        <property name="invisible_char">●</property>
++                                        <property name="width_chars">25</property>
++                                        <property name="shadow_type">none</property>
++                                        <property name="primary_icon_stock">gtk-find</property>
++                                        <property name="secondary_icon_activatable">False</property>
++                                        <signal name="changed" handler="on_files_filter_changed" swapped="no"/>
++                                      </object>
++                                      <packing>
++                                        <property name="expand">False</property>
++                                        <property name="fill">True</property>
++                                        <property name="position">1</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkCheckButton" id="Show_modified_only_toggle_files">
++                                        <property name="label" translatable="yes">Show Modified Only</property>
++                                        <property name="visible">True</property>
 +                                        <property name="can_focus">True</property>
 +                                        <property name="receives_default">False</property>
 +                                        <property name="xalign">0</property>
 +                                        <property name="draw_indicator">True</property>
-+                                        <signal name="toggled" handler="on_Show_mislabeled_files_toggled" swapped="no"/>
++                                        <signal name="toggled" handler="on_Show_modified_only_toggle_files_toggled" swapped="no"/>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">1</property>
++                                        <property name="expand">True</property>
++                                        <property name="fill">True</property>
++                                        <property name="position">2</property>
 +                                      </packing>
 +                                    </child>
 +                                  </object>
 +                                  <packing>
-+                                    <property name="top_attach">1</property>
-+                                    <property name="bottom_attach">2</property>
++                                    <property name="expand">False</property>
++                                    <property name="fill">True</property>
++                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
 +                                <child>
-+                                  <object class="GtkHBox" id="box10">
++                                  <object class="GtkBox" id="box15">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
 +                                    <child>
-+                                      <object class="GtkHBox" id="hbox5">
-+                                        <property name="visible">True</property>
++                                      <object class="GtkImage" id="warning_files">
 +                                        <property name="can_focus">False</property>
-+                                        <child>
-+                                          <object class="GtkLabel" id="text2">
-+                                            <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">True</property>
-+                                            <property name="position">0</property>
-+                                          </packing>
-+                                        </child>
-+                                        <child>
-+                                          <object class="GtkEntry" id="files_filter">
-+                                            <property name="width_request">170</property>
-+                                            <property name="visible">True</property>
-+                                            <property name="can_focus">True</property>
-+                                            <property name="invisible_char">●</property>
-+                                            <property name="width_chars">25</property>
-+                                            <property name="shadow_type">none</property>
-+                                            <property name="primary_icon_stock">gtk-find</property>
-+                                            <property name="secondary_icon_activatable">False</property>
-+                                            <signal name="changed" handler="on_files_filter_changed" swapped="no"/>
-+                                          </object>
-+                                          <packing>
-+                                            <property name="expand">False</property>
-+                                            <property name="fill">True</property>
-+                                            <property name="position">1</property>
-+                                          </packing>
-+                                        </child>
++                                        <property name="stock">gtk-dialog-warning</property>
 +                                      </object>
 +                                      <packing>
 +                                        <property name="expand">False</property>
@@ -520589,28 +521195,46 @@ index 0000000..3ea562c
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkCheckButton" id="Show_modified_only_toggle_files">
-+                                        <property name="label" translatable="yes">Show Modified Only</property>
-+                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <signal name="toggled" handler="on_Show_modified_only_toggle_files_toggled" swapped="no"/>
++                                      <object class="GtkLabel" id="mislabeled_files_label">
++                                        <property name="can_focus">False</property>
++                                        <property name="label" translatable="yes">Mislabeled files exist</property>
++                                        <attributes>
++                                          <attribute name="foreground" value="#e43403050305"/>
++                                        </attributes>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">True</property>
++                                        <property name="expand">False</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="position">1</property>
++                                  </packing>
++                                </child>
++                                <child>
++                                  <object class="GtkCheckButton" id="Show_mislabeled_files">
++                                    <property name="label" translatable="yes">Show mislabeled files only</property>
++                                    <property name="can_focus">True</property>
++                                    <property name="receives_default">False</property>
++                                    <property name="xalign">0</property>
++                                    <property name="draw_indicator">True</property>
++                                    <signal name="toggled" handler="on_Show_mislabeled_files_toggled" swapped="no"/>
++                                  </object>
++                                  <packing>
++                                    <property name="expand">False</property>
++                                    <property name="fill">False</property>
++                                    <property name="position">2</property>
++                                  </packing>
 +                                </child>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
-+                                <property name="position">0</property>
++                                <property name="position">1</property>
 +                              </packing>
 +                            </child>
 +                            <child>
@@ -520628,7 +521252,9 @@ index 0000000..3ea562c
 +                                        <property name="no_show_all">True</property>
 +                                        <property name="model">executable_files_treemodelsort</property>
 +                                        <property name="search_column">0</property>
++                                        <property name="activate_on_single_click">True</property>
 +                                        <signal name="button-press-event" handler="item_in_tree_selected" swapped="no"/>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection2"/>
 +                                        </child>
@@ -520664,14 +521290,6 @@ index 0000000..3ea562c
 +                                                <attribute name="visible">3</attribute>
 +                                              </attributes>
 +                                            </child>
-+                                            <child>
-+                                              <object class="GtkCellRendererToggle" id="fix_label_exe">
-+                                                <signal name="toggled" handler="on_fix_label_exe_toggled" swapped="no"/>
-+                                              </object>
-+                                              <attributes>
-+                                                <attribute name="visible">3</attribute>
-+                                              </attributes>
-+                                            </child>
 +                                          </object>
 +                                        </child>
 +                                        <child>
@@ -520713,11 +521331,18 @@ index 0000000..3ea562c
 +                                  </object>
 +                                </child>
 +                                <child type="tab">
-+                                  <object class="GtkLabel" id="Executable_files_tab">
++                                  <object class="GtkEventBox" id="eventbox2">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
-+                                    <property name="tooltip_text" translatable="yes">File path used to enter the 'selected domain'.</property>
-+                                    <property name="label" translatable="yes">Executable Files</property>
++                                    <signal name="button-press-event" handler="on_tab_switch" swapped="no"/>
++                                    <child>
++                                      <object class="GtkLabel" id="Executable_files_tab">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="tooltip_text" translatable="yes">File path used to enter the 'selected domain'.</property>
++                                        <property name="label" translatable="yes">Executable Files</property>
++                                      </object>
++                                    </child>
 +                                  </object>
 +                                  <packing>
 +                                    <property name="tab_fill">False</property>
@@ -520733,8 +521358,9 @@ index 0000000..3ea562c
 +                                        <property name="can_focus">True</property>
 +                                        <property name="no_show_all">True</property>
 +                                        <property name="model">writable_files_treemodelsort</property>
-+                                        <property name="search_column">0</property>
++                                        <property name="activate_on_single_click">True</property>
 +                                        <signal name="button-press-event" handler="item_in_tree_selected" swapped="no"/>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection3"/>
 +                                        </child>
@@ -520761,7 +521387,7 @@ index 0000000..3ea562c
 +                                            <property name="min_width">70</property>
 +                                            <property name="max_width">70</property>
 +                                            <child>
-+                                              <object class="GtkCellRendererText" id="cellrenderertext41">
++                                              <object class="GtkCellRendererText" id="fix_label">
 +                                                <property name="foreground_gdk">#00004e4e9999</property>
 +                                                <property name="text">Fix Label</property>
 +                                                <property name="underline">single</property>
@@ -520770,12 +521396,6 @@ index 0000000..3ea562c
 +                                                <attribute name="visible">3</attribute>
 +                                              </attributes>
 +                                            </child>
-+                                            <child>
-+                                              <object class="GtkCellRendererToggle" id="fix_label_write"/>
-+                                              <attributes>
-+                                                <attribute name="visible">3</attribute>
-+                                              </attributes>
-+                                            </child>
 +                                          </object>
 +                                        </child>
 +                                        <child>
@@ -520822,11 +521442,18 @@ index 0000000..3ea562c
 +                                  </packing>
 +                                </child>
 +                                <child type="tab">
-+                                  <object class="GtkLabel" id="Writable_files_tab">
++                                  <object class="GtkEventBox" id="eventbox3">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
-+                                    <property name="tooltip_text" translatable="yes">Files to which the 'selected domain' can write.</property>
-+                                    <property name="label" translatable="yes">Writable Files</property>
++                                    <signal name="button-press-event" handler="on_tab_switch" swapped="no"/>
++                                    <child>
++                                      <object class="GtkLabel" id="Writable_files_tab">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="tooltip_text" translatable="yes">Files to which the 'selected domain' can write.</property>
++                                        <property name="label" translatable="yes">Writable Files</property>
++                                      </object>
++                                    </child>
 +                                  </object>
 +                                  <packing>
 +                                    <property name="position">1</property>
@@ -520844,7 +521471,9 @@ index 0000000..3ea562c
 +                                        <property name="no_show_all">True</property>
 +                                        <property name="model">application_filetypes_treemodelsort</property>
 +                                        <property name="search_column">0</property>
++                                        <property name="activate_on_single_click">True</property>
 +                                        <signal name="button-press-event" handler="item_in_tree_selected" swapped="no"/>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection4"/>
 +                                        </child>
@@ -520882,12 +521511,6 @@ index 0000000..3ea562c
 +                                                <attribute name="visible">3</attribute>
 +                                              </attributes>
 +                                            </child>
-+                                            <child>
-+                                              <object class="GtkCellRendererToggle" id="fix_label_app"/>
-+                                              <attributes>
-+                                                <attribute name="visible">3</attribute>
-+                                              </attributes>
-+                                            </child>
 +                                          </object>
 +                                        </child>
 +                                        <child>
@@ -520940,11 +521563,18 @@ index 0000000..3ea562c
 +                                  </packing>
 +                                </child>
 +                                <child type="tab">
-+                                  <object class="GtkLabel" id="Application_file_types_tab">
++                                  <object class="GtkEventBox" id="eventbox4">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
-+                                    <property name="tooltip_text" translatable="yes">File Types defined for the 'selected domain'.</property>
-+                                    <property name="label" translatable="yes">Application File Types</property>
++                                    <child>
++                                      <object class="GtkLabel" id="Application_file_types_tab">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="tooltip_text" translatable="yes">File Types defined for the 'selected domain'.</property>
++                                        <property name="label" translatable="yes">Application File Types</property>
++                                        <signal name="button-press-event" handler="on_tab_switch" swapped="no"/>
++                                      </object>
++                                    </child>
 +                                  </object>
 +                                  <packing>
 +                                    <property name="position">2</property>
@@ -520955,7 +521585,7 @@ index 0000000..3ea562c
 +                              <packing>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
-+                                <property name="position">1</property>
++                                <property name="position">2</property>
 +                              </packing>
 +                            </child>
 +                            <child>
@@ -521014,7 +521644,7 @@ index 0000000..3ea562c
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
-+                                <property name="position">2</property>
++                                <property name="position">3</property>
 +                              </packing>
 +                            </child>
 +                          </object>
@@ -521038,80 +521668,61 @@ index 0000000..3ea562c
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
 +                            <child>
-+                              <object class="GtkHBox" id="hbox6">
++                              <object class="GtkBox" id="box2">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
++                                <property name="border_width">3</property>
 +                                <child>
-+                                  <object class="GtkHBox" id="hbox9">
++                                  <object class="GtkLabel" id="text3">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
-+                                    <child>
-+                                      <object class="GtkLabel" id="text3">
-+                                        <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">True</property>
-+                                        <property name="position">0</property>
-+                                      </packing>
-+                                    </child>
-+                                    <child>
-+                                      <object class="GtkEntry" id="network_filter">
-+                                        <property name="width_request">170</property>
-+                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="invisible_char">●</property>
-+                                        <property name="width_chars">25</property>
-+                                        <property name="shadow_type">none</property>
-+                                        <property name="primary_icon_stock">gtk-find</property>
-+                                        <property name="secondary_icon_activatable">False</property>
-+                                        <signal name="changed" handler="on_network_filter_changed" swapped="no"/>
-+                                      </object>
-+                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">True</property>
-+                                        <property name="position">1</property>
-+                                      </packing>
-+                                    </child>
-+                                    <child>
-+                                      <object class="GtkCheckButton" id="Show_modified_only_toggle_network">
-+                                        <property name="label" translatable="yes">Show Modified Only</property>
-+                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="xalign">0.5</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <signal name="toggled" handler="on_Show_modified_only_toggle_network_toggled" swapped="no"/>
-+                                      </object>
-+                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">2</property>
-+                                      </packing>
-+                                    </child>
++                                    <property name="label" translatable="yes">Filter</property>
 +                                  </object>
 +                                  <packing>
-+                                    <property name="expand">True</property>
++                                    <property name="expand">False</property>
 +                                    <property name="fill">True</property>
 +                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
 +                                <child>
-+                                  <placeholder/>
-+                                </child>
-+                                <child>
-+                                  <placeholder/>
++                                  <object class="GtkEntry" id="network_filter">
++                                    <property name="width_request">170</property>
++                                    <property name="visible">True</property>
++                                    <property name="can_focus">True</property>
++                                    <property name="invisible_char">●</property>
++                                    <property name="width_chars">25</property>
++                                    <property name="shadow_type">none</property>
++                                    <property name="primary_icon_stock">gtk-find</property>
++                                    <property name="secondary_icon_activatable">False</property>
++                                    <signal name="changed" handler="on_network_filter_changed" swapped="no"/>
++                                  </object>
++                                  <packing>
++                                    <property name="expand">False</property>
++                                    <property name="fill">True</property>
++                                    <property name="position">1</property>
++                                  </packing>
 +                                </child>
 +                                <child>
-+                                  <placeholder/>
++                                  <object class="GtkCheckButton" id="Show_modified_only_toggle_network">
++                                    <property name="label" translatable="yes">Show Modified Only</property>
++                                    <property name="visible">True</property>
++                                    <property name="can_focus">True</property>
++                                    <property name="receives_default">False</property>
++                                    <property name="xalign">0</property>
++                                    <property name="draw_indicator">True</property>
++                                    <signal name="toggled" handler="on_Show_modified_only_toggle_network_toggled" swapped="no"/>
++                                  </object>
++                                  <packing>
++                                    <property name="expand">False</property>
++                                    <property name="fill">False</property>
++                                    <property name="position">2</property>
++                                  </packing>
 +                                </child>
 +                              </object>
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
-+                                <property name="position">0</property>
++                                <property name="position">1</property>
 +                              </packing>
 +                            </child>
 +                            <child>
@@ -521130,7 +521741,9 @@ index 0000000..3ea562c
 +                                        <property name="model">out_network_treemodelsort</property>
 +                                        <property name="search_column">0</property>
 +                                        <property name="fixed_height_mode">True</property>
++                                        <property name="activate_on_single_click">True</property>
 +                                        <signal name="button-press-event" handler="item_in_tree_selected" swapped="no"/>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection5"/>
 +                                        </child>
@@ -521213,7 +521826,9 @@ index 0000000..3ea562c
 +                                        <property name="model">in_network_treemodelsort</property>
 +                                        <property name="search_column">0</property>
 +                                        <property name="fixed_height_mode">True</property>
++                                        <property name="activate_on_single_click">True</property>
 +                                        <signal name="button-press-event" handler="item_in_tree_selected" swapped="no"/>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection6"/>
 +                                        </child>
@@ -521291,7 +521906,7 @@ index 0000000..3ea562c
 +                              <packing>
 +                                <property name="expand">True</property>
 +                                <property name="fill">True</property>
-+                                <property name="position">1</property>
++                                <property name="position">2</property>
 +                              </packing>
 +                            </child>
 +                            <child>
@@ -521352,7 +521967,7 @@ index 0000000..3ea562c
 +                              <packing>
 +                                <property name="expand">False</property>
 +                                <property name="fill">False</property>
-+                                <property name="position">2</property>
++                                <property name="position">3</property>
 +                              </packing>
 +                            </child>
 +                          </object>
@@ -521379,6 +521994,7 @@ index 0000000..3ea562c
 +                              <object class="GtkHBox" id="hbox8">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
++                                <property name="border_width">3</property>
 +                                <child>
 +                                  <object class="GtkLabel" id="text4">
 +                                    <property name="visible">True</property>
@@ -521429,6 +522045,8 @@ index 0000000..3ea562c
 +                                        <property name="visible">True</property>
 +                                        <property name="can_focus">True</property>
 +                                        <property name="model">transitions_from_x_treemodelsort</property>
++                                        <property name="activate_on_single_click">True</property>
++                                        <signal name="row-activated" handler="on_column_clicked" swapped="no"/>
 +                                        <child internal-child="selection">
 +                                          <object class="GtkTreeSelection" id="treeview-selection7"/>
 +                                        </child>
@@ -521464,15 +522082,6 @@ index 0000000..3ea562c
 +                                                <attribute name="text">2</attribute>
 +                                              </attributes>
 +                                            </child>
-+                                            <child>
-+                                              <object class="GtkCellRendererToggle" id="return_to_booleans">
-+                                                <property name="indicator_size">0</property>
-+                                                <signal name="toggled" handler="on_return_to_booleans_toggled" swapped="no"/>
-+                                              </object>
-+                                              <attributes>
-+                                                <attribute name="visible">5</attribute>
-+                                              </attributes>
-+                                            </child>
 +                                          </object>
 +                                        </child>
 +                                        <child>
@@ -521697,201 +522306,226 @@ index 0000000..3ea562c
 +                    <child>
 +                      <object class="GtkVBox" id="Systems_box">
 +                        <property name="can_focus">False</property>
++                        <property name="valign">start</property>
 +                        <child>
 +                          <object class="GtkFrame" id="System_mode_frame">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
++                            <property name="valign">center</property>
++                            <property name="border_width">10</property>
 +                            <property name="label_xalign">0</property>
 +                            <property name="shadow_type">out</property>
 +                            <child>
-+                              <object class="GtkTable" id="grid1">
++                              <object class="GtkBox" id="box6">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
++                                <property name="halign">start</property>
 +                                <child>
-+                                  <object class="GtkLabel" id="label18">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
-+                                    <property name="xalign">0.05000000074505806</property>
-+                                    <property name="label" translatable="yes">Select the system mode when the system first boots up</property>
-+                                  </object>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkHBox" id="box6">
++                                  <object class="GtkTable" id="grid1">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
++                                    <property name="halign">center</property>
++                                    <property name="valign">center</property>
 +                                    <child>
-+                                      <object class="GtkRadioButton" id="Enforcing_button_default">
-+                                        <property name="label" translatable="yes">Enforcing</property>
++                                      <object class="GtkLabel" id="label18">
 +                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="margin_left">50</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="yalign">0.50999999046325684</property>
-+                                        <property name="active">True</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <signal name="group-changed" handler="gtk_main_quit" swapped="no"/>
-+                                        <signal name="toggled" handler="on_Enforcing_button_default_toggled" swapped="no"/>
++                                        <property name="can_focus">False</property>
++                                        <property name="xalign">0.05000000074505806</property>
++                                        <property name="label" translatable="yes">Select the system mode when the system first boots up</property>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">0</property>
++                                        <property name="x_padding">15</property>
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkRadioButton" id="Permissive_button_default">
-+                                        <property name="label" translatable="yes">Permissive</property>
++                                      <object class="GtkHBox" id="box7">
 +                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <property name="group">Enforcing_button_default</property>
-+                                        <signal name="toggled" handler="on_Permissive_button_default_toggled" swapped="no"/>
++                                        <property name="can_focus">False</property>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Enforcing_button_default">
++                                            <property name="label" translatable="yes">Enforcing</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="margin_left">50</property>
++                                            <property name="xalign">0</property>
++                                            <property name="yalign">0.50999999046325684</property>
++                                            <property name="active">True</property>
++                                            <property name="draw_indicator">True</property>
++                                            <signal name="group-changed" handler="gtk_main_quit" swapped="no"/>
++                                            <signal name="toggled" handler="on_Enforcing_button_default_toggled" swapped="no"/>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">False</property>
++                                            <property name="position">0</property>
++                                          </packing>
++                                        </child>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Permissive_button_default">
++                                            <property name="label" translatable="yes">Permissive</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="draw_indicator">True</property>
++                                            <property name="group">Enforcing_button_default</property>
++                                            <signal name="toggled" handler="on_Permissive_button_default_toggled" swapped="no"/>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">False</property>
++                                            <property name="position">1</property>
++                                          </packing>
++                                        </child>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Disabled_button_default">
++                                            <property name="label" translatable="yes">Disabled</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="draw_indicator">True</property>
++                                            <property name="group">Enforcing_button_default</property>
++                                            <signal name="toggled" handler="on_Disabled_button_default_toggled" swapped="no"/>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">False</property>
++                                            <property name="position">2</property>
++                                          </packing>
++                                        </child>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">1</property>
++                                        <property name="top_attach">1</property>
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkRadioButton" id="Disabled_button_default">
-+                                        <property name="label" translatable="yes">Disabled</property>
++                                      <object class="GtkLabel" id="label16">
 +                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <property name="group">Enforcing_button_default</property>
-+                                        <signal name="toggled" handler="on_Disabled_button_default_toggled" swapped="no"/>
++                                        <property name="can_focus">False</property>
++                                        <property name="xalign">0.0099999997764825821</property>
++                                        <property name="label" translatable="yes">Select the system mode for the current session</property>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">2</property>
++                                        <property name="top_attach">2</property>
++                                        <property name="x_padding">15</property>
 +                                      </packing>
 +                                    </child>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="top_attach">1</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkLabel" id="label16">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
-+                                    <property name="xalign">0.05000000074505806</property>
-+                                    <property name="label" translatable="yes">Select the system mode for the current session</property>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="top_attach">2</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkHBox" id="box7">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
 +                                    <child>
-+                                      <object class="GtkRadioButton" id="Enforcing_button">
-+                                        <property name="label" translatable="yes">Enforcing</property>
++                                      <object class="GtkHBox" id="box8">
 +                                        <property name="visible">True</property>
-+                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="margin_left">100</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="active">True</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <signal name="toggled" handler="on_Enforcing_button_toggled" swapped="no"/>
++                                        <property name="can_focus">False</property>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Enforcing_button">
++                                            <property name="label" translatable="yes">Enforcing</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="margin_left">50</property>
++                                            <property name="xalign">0</property>
++                                            <property name="active">True</property>
++                                            <property name="draw_indicator">True</property>
++                                            <signal name="toggled" handler="on_Enforcing_button_toggled" swapped="no"/>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">True</property>
++                                            <property name="position">0</property>
++                                          </packing>
++                                        </child>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Permissive_button">
++                                            <property name="label" translatable="yes">Permissive</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="draw_indicator">True</property>
++                                            <property name="group">Enforcing_button</property>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</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="position">0</property>
++                                        <property name="top_attach">3</property>
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkRadioButton" id="Permissive_button">
-+                                        <property name="label" translatable="yes">Permissive</property>
++                                      <object class="GtkLabel" id="advanced_system">
 +                                        <property name="visible">True</property>
 +                                        <property name="can_focus">True</property>
-+                                        <property name="receives_default">False</property>
-+                                        <property name="xalign">0</property>
-+                                        <property name="draw_indicator">True</property>
-+                                        <property name="group">Enforcing_button</property>
-+                                      </object>
-+                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">True</property>
-+                                        <property name="position">1</property>
-+                                      </packing>
-+                                    </child>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="top_attach">3</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkLabel" id="advanced_system">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">True</property>
-+                                    <property name="xalign">0.019999999552965164</property>
-+                                    <property name="label" translatable="yes">Advanced &gt;&gt;</property>
-+                                    <property name="selectable">True</property>
-+                                    <property name="ellipsize">end</property>
-+                                    <attributes>
-+                                      <attribute name="foreground" value="#00004e4e9999"/>
-+                                    </attributes>
-+                                    <signal name="button-press-event" handler="on_advanced_system_button_press_event" swapped="no"/>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="top_attach">4</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkHBox" id="box8">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
-+                                    <child>
-+                                      <object class="GtkLabel" id="system_policy_type_label">
-+                                        <property name="can_focus">False</property>
-+                                        <property name="margin_left">5</property>
 +                                        <property name="xalign">0</property>
-+                                        <property name="label" translatable="yes">System Policy Type:</property>
-+                                        <property name="width_chars">15</property>
++                                        <property name="label" translatable="yes">Advanced &gt;&gt;</property>
++                                        <property name="selectable">True</property>
++                                        <property name="ellipsize">end</property>
++                                        <attributes>
++                                          <attribute name="foreground" value="#00004e4e9999"/>
++                                        </attributes>
++                                        <signal name="button-press-event" handler="on_advanced_system_button_press_event" swapped="no"/>
 +                                      </object>
 +                                      <packing>
-+                                        <property name="expand">False</property>
-+                                        <property name="fill">False</property>
-+                                        <property name="position">0</property>
++                                        <property name="top_attach">4</property>
++                                        <property name="x_padding">15</property>
 +                                      </packing>
 +                                    </child>
 +                                    <child>
-+                                      <object class="GtkComboBox" id="system_policy_type_combobox">
-+                                        <property name="width_request">200</property>
++                                      <object class="GtkHBox" id="box10">
++                                        <property name="visible">True</property>
 +                                        <property name="can_focus">False</property>
-+                                        <property name="margin_left">10</property>
-+                                        <property name="model">system_policy_type_liststore</property>
-+                                        <signal name="changed" handler="on_system_policy_type_combobox_changed" swapped="no"/>
 +                                        <child>
-+                                          <object class="GtkCellRendererText" id="cellrenderertext20"/>
-+                                          <attributes>
-+                                            <attribute name="text">0</attribute>
-+                                          </attributes>
++                                          <object class="GtkLabel" id="system_policy_type_label">
++                                            <property name="can_focus">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="label" translatable="yes">System Policy Type:</property>
++                                            <property name="width_chars">15</property>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">False</property>
++                                            <property name="position">0</property>
++                                          </packing>
++                                        </child>
++                                        <child>
++                                          <object class="GtkComboBox" id="system_policy_type_combobox">
++                                            <property name="width_request">200</property>
++                                            <property name="can_focus">False</property>
++                                            <property name="margin_left">10</property>
++                                            <property name="model">system_policy_type_liststore</property>
++                                            <signal name="changed" handler="on_system_policy_type_combobox_changed" swapped="no"/>
++                                            <child>
++                                              <object class="GtkCellRendererText" id="cellrenderertext20"/>
++                                              <attributes>
++                                                <attribute name="text">0</attribute>
++                                              </attributes>
++                                            </child>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</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="position">1</property>
++                                        <property name="top_attach">5</property>
++                                        <property name="x_padding">15</property>
 +                                      </packing>
 +                                    </child>
 +                                  </object>
 +                                  <packing>
-+                                    <property name="top_attach">5</property>
++                                    <property name="expand">False</property>
++                                    <property name="fill">True</property>
++                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
++                                <child>
++                                  <placeholder/>
++                                </child>
 +                              </object>
 +                            </child>
 +                            <child type="label">
@@ -521914,96 +522548,172 @@ index 0000000..3ea562c
 +                          <object class="GtkFrame" id="System_configuration_frame">
 +                            <property name="visible">True</property>
 +                            <property name="can_focus">False</property>
++                            <property name="valign">center</property>
++                            <property name="border_width">10</property>
 +                            <property name="label_xalign">0</property>
 +                            <property name="shadow_type">out</property>
 +                            <child>
-+                              <object class="GtkTable" id="grid2">
++                              <object class="GtkBox" id="box13">
 +                                <property name="visible">True</property>
 +                                <property name="can_focus">False</property>
++                                <property name="halign">start</property>
 +                                <child>
-+                                  <object class="GtkLabel" id="label10">
++                                  <object class="GtkTable" id="grid2">
 +                                    <property name="visible">True</property>
 +                                    <property name="can_focus">False</property>
-+                                    <property name="label" translatable="yes">Import system settings from another machine</property>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="x_options"/>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkButton" id="Import_button">
-+                                    <property name="label" translatable="yes">Import</property>
-+                                    <property name="width_request">65</property>
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">True</property>
-+                                    <property name="receives_default">True</property>
-+                                    <signal name="clicked" handler="on_Import_button_clicked" swapped="no"/>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="left_attach">1</property>
-+                                    <property name="x_options"/>
-+                                    <property name="x_padding">10</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkLabel" id="label11">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
-+                                    <property name="label" translatable="yes">Export system settings to a file</property>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="top_attach">1</property>
-+                                    <property name="x_options"/>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkButton" id="Export_button">
-+                                    <property name="label" translatable="yes">Export</property>
-+                                    <property name="width_request">65</property>
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">True</property>
-+                                    <property name="receives_default">True</property>
-+                                    <signal name="clicked" handler="on_Export_button_clicked" swapped="no"/>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="left_attach">1</property>
-+                                    <property name="top_attach">1</property>
-+                                    <property name="x_options"/>
-+                                    <property name="x_padding">10</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkLabel" id="label13">
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">False</property>
-+                                    <property name="label" translatable="yes">Relabel all files back to system defaults on reboot</property>
++                                    <property name="halign">center</property>
++                                    <property name="valign">center</property>
++                                    <child>
++                                      <object class="GtkLabel" id="label10">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="xalign">0</property>
++                                        <property name="label" translatable="yes">Import system settings from another machine</property>
++                                      </object>
++                                      <packing>
++                                        <property name="x_padding">15</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkButton" id="Import_button">
++                                        <property name="label" translatable="yes">Import</property>
++                                        <property name="width_request">65</property>
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">True</property>
++                                        <property name="receives_default">True</property>
++                                        <signal name="clicked" handler="on_Import_button_clicked" swapped="no"/>
++                                      </object>
++                                      <packing>
++                                        <property name="left_attach">1</property>
++                                        <property name="x_options"/>
++                                        <property name="y_options"/>
++                                        <property name="x_padding">10</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkLabel" id="label11">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="xalign">0</property>
++                                        <property name="label" translatable="yes">Export system settings to a file</property>
++                                        <property name="ellipsize">middle</property>
++                                      </object>
++                                      <packing>
++                                        <property name="top_attach">1</property>
++                                        <property name="x_padding">15</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkButton" id="Export_button">
++                                        <property name="label" translatable="yes">Export</property>
++                                        <property name="width_request">65</property>
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">True</property>
++                                        <property name="receives_default">True</property>
++                                        <signal name="clicked" handler="on_Export_button_clicked" swapped="no"/>
++                                      </object>
++                                      <packing>
++                                        <property name="left_attach">1</property>
++                                        <property name="top_attach">1</property>
++                                        <property name="x_options"/>
++                                        <property name="y_options"/>
++                                        <property name="x_padding">10</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkLabel" id="label13">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <property name="label" translatable="yes">Relabel all files back to system defaults on reboot</property>
++                                      </object>
++                                      <packing>
++                                        <property name="top_attach">3</property>
++                                        <property name="x_padding">15</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkSeparator" id="separator1">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                      </object>
++                                      <packing>
++                                        <property name="top_attach">2</property>
++                                        <property name="bottom_attach">3</property>
++                                        <property name="y_padding">5</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkSeparator" id="separator2">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                      </object>
++                                      <packing>
++                                        <property name="left_attach">1</property>
++                                        <property name="right_attach">2</property>
++                                        <property name="top_attach">2</property>
++                                        <property name="bottom_attach">3</property>
++                                        <property name="y_padding">5</property>
++                                      </packing>
++                                    </child>
++                                    <child>
++                                      <object class="GtkBox" id="box5">
++                                        <property name="visible">True</property>
++                                        <property name="can_focus">False</property>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Relabel_button">
++                                            <property name="label" translatable="yes">Yes</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="active">True</property>
++                                            <property name="draw_indicator">True</property>
++                                            <signal name="toggled" handler="on_Relabel_button_toggled_cb" swapped="no"/>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">True</property>
++                                            <property name="position">0</property>
++                                          </packing>
++                                        </child>
++                                        <child>
++                                          <object class="GtkRadioButton" id="Relabel_button_no">
++                                            <property name="label" translatable="yes">No</property>
++                                            <property name="visible">True</property>
++                                            <property name="can_focus">True</property>
++                                            <property name="receives_default">False</property>
++                                            <property name="xalign">0</property>
++                                            <property name="active">True</property>
++                                            <property name="draw_indicator">True</property>
++                                            <property name="group">Relabel_button</property>
++                                          </object>
++                                          <packing>
++                                            <property name="expand">False</property>
++                                            <property name="fill">True</property>
++                                            <property name="position">1</property>
++                                          </packing>
++                                        </child>
++                                      </object>
++                                      <packing>
++                                        <property name="left_attach">1</property>
++                                        <property name="right_attach">2</property>
++                                        <property name="top_attach">3</property>
++                                        <property name="bottom_attach">4</property>
++                                        <property name="x_options"/>
++                                        <property name="y_options"/>
++                                        <property name="x_padding">10</property>
++                                      </packing>
++                                    </child>
 +                                  </object>
 +                                  <packing>
-+                                    <property name="top_attach">3</property>
-+                                    <property name="x_options"/>
++                                    <property name="expand">False</property>
++                                    <property name="fill">True</property>
++                                    <property name="position">0</property>
 +                                  </packing>
 +                                </child>
 +                                <child>
 +                                  <placeholder/>
 +                                </child>
-+                                <child>
-+                                  <placeholder/>
-+                                </child>
-+                                <child>
-+                                  <object class="GtkToggleButton" id="Relabel_button">
-+                                    <property name="label" translatable="yes">Relabel</property>
-+                                    <property name="visible">True</property>
-+                                    <property name="can_focus">True</property>
-+                                    <property name="receives_default">True</property>
-+                                    <signal name="toggled" handler="on_Relabel_button_toggled" swapped="no"/>
-+                                  </object>
-+                                  <packing>
-+                                    <property name="left_attach">1</property>
-+                                    <property name="top_attach">3</property>
-+                                    <property name="x_options"/>
-+                                    <property name="x_padding">10</property>
-+                                  </packing>
-+                                </child>
 +                              </object>
 +                            </child>
 +                            <child type="label">
@@ -522043,6 +522753,7 @@ index 0000000..3ea562c
 +                      <object class="GtkButton" id="Revert_button">
 +                        <property name="label" translatable="yes">Revert</property>
 +                        <property name="visible">True</property>
++                        <property name="sensitive">False</property>
 +                        <property name="can_focus">True</property>
 +                        <property name="receives_default">True</property>
 +                        <property name="tooltip_text" translatable="yes">Reset to system default</property>
@@ -522059,6 +522770,7 @@ index 0000000..3ea562c
 +                      <object class="GtkButton" id="Update_button">
 +                        <property name="label" translatable="yes">Update</property>
 +                        <property name="visible">True</property>
++                        <property name="sensitive">False</property>
 +                        <property name="can_focus">True</property>
 +                        <property name="receives_default">True</property>
 +                        <property name="tooltip_text" translatable="yes">Save your changes</property>
@@ -522148,7 +522860,6 @@ index 0000000..3ea562c
 +                <property name="xalign">0.5</property>
 +                <property name="active">True</property>
 +                <property name="draw_indicator">True</property>
-+                <property name="group">Installed_advanced_button</property>
 +                <signal name="toggled" handler="on_All_advanced_button_toggled" swapped="no"/>
 +              </object>
 +              <packing>
@@ -522387,7 +523098,7 @@ index 0000000..3ea562c
 +            <property name="can_focus">False</property>
 +            <child>
 +              <object class="GtkButton" id="save_delete_files">
-+                <property name="label" translatable="yes">Delete</property>
++                <property name="label" translatable="yes">Save to Update</property>
 +                <property name="visible">True</property>
 +                <property name="can_focus">True</property>
 +                <property name="receives_default">True</property>
@@ -522531,7 +523242,7 @@ index 0000000..3ea562c
 +            <property name="can_focus">False</property>
 +            <child>
 +              <object class="GtkButton" id="save_delete_network">
-+                <property name="label" translatable="yes">Delete</property>
++                <property name="label" translatable="yes">Save to Update</property>
 +                <property name="visible">True</property>
 +                <property name="can_focus">True</property>
 +                <property name="receives_default">True</property>
@@ -522636,7 +523347,7 @@ index 0000000..3ea562c
 +    <property name="can_focus">False</property>
 +    <property name="modal">True</property>
 +    <property name="window_position">center-on-parent</property>
-+    <property name="default_width">600</property>
++    <property name="default_width">650</property>
 +    <property name="default_height">450</property>
 +    <property name="transient_for">SELinux_window</property>
 +    <signal name="delete-event" handler="gtk_widget_hide" swapped="no"/>
@@ -522645,18 +523356,30 @@ index 0000000..3ea562c
 +        <property name="visible">True</property>
 +        <property name="can_focus">False</property>
 +        <child>
-+          <object class="GtkLabel" id="label8">
++          <object class="GtkBox" id="box11">
 +            <property name="visible">True</property>
 +            <property name="can_focus">False</property>
-+            <property name="xalign">0</property>
-+            <property name="xpad">10</property>
-+            <property name="label" translatable="yes">Review the updates you have made before committing them to the system.  To reset an item, uncheck the checkbox.  All items checked will be updated in the system when you select update.</property>
-+            <property name="justify">fill</property>
-+            <property name="wrap">True</property>
++            <property name="orientation">vertical</property>
++            <child>
++              <object class="GtkLabel" id="label8">
++                <property name="visible">True</property>
++                <property name="can_focus">False</property>
++                <property name="xalign">0</property>
++                <property name="xpad">10</property>
++                <property name="label" translatable="yes">Review the updates you have made before committing them to the system.  To reset an item, uncheck the checkbox.  All items checked will be updated in the system when you select update.</property>
++                <property name="justify">fill</property>
++                <property name="wrap">True</property>
++              </object>
++              <packing>
++                <property name="expand">False</property>
++                <property name="fill">True</property>
++                <property name="position">0</property>
++              </packing>
++            </child>
 +          </object>
 +          <packing>
 +            <property name="expand">False</property>
-+            <property name="fill">False</property>
++            <property name="fill">True</property>
 +            <property name="position">0</property>
 +          </packing>
 +        </child>
@@ -522672,7 +523395,7 @@ index 0000000..3ea562c
 +                <property name="model">Update_treestore</property>
 +                <property name="search_column">0</property>
 +                <child internal-child="selection">
-+                  <object class="GtkTreeSelection" id="treeview-selection14"/>
++                  <object class="GtkTreeSelection" id="treeview-selection16"/>
 +                </child>
 +                <child>
 +                  <object class="GtkTreeViewColumn" id="Select2">
@@ -522694,7 +523417,9 @@ index 0000000..3ea562c
 +                    <property name="title" translatable="yes">Description</property>
 +                    <property name="clickable">True</property>
 +                    <child>
-+                      <object class="GtkCellRendererText" id="cellrenderertext62"/>
++                      <object class="GtkCellRendererText" id="cellrenderertext62">
++                        <property name="wrap_mode">word</property>
++                      </object>
 +                      <attributes>
 +                        <attribute name="text">1</attribute>
 +                      </attributes>
@@ -523094,7 +523819,7 @@ index 5850622..5e308e3 100755
          if "child" in self.sdict[name]:
              for x in self.sdict[name]["child"]:
 diff --git a/policycoreutils/sepolicy/setup.py b/policycoreutils/sepolicy/setup.py
-index 1edb4fd..1edd6b2 100644
+index 1edb4fd..d8e2d64 100644
 --- a/policycoreutils/sepolicy/setup.py
 +++ b/policycoreutils/sepolicy/setup.py
 @@ -9,4 +9,4 @@ policy = Extension("sepolicy._policy",
@@ -523102,7 +523827,7 @@ index 1edb4fd..1edd6b2 100644
  )
  
 -setup(name = "sepolicy", version="1.1", description="Python SELinux Policy Analyses bindings", author="Daniel Walsh", author_email="dwalsh at redhat.com", ext_modules=[policy], packages=["sepolicy", "sepolicy.templates"])
-+setup(name = "sepolicy", version="1.1", description="Python SELinux Policy Analyses bindings", author="Daniel Walsh", author_email="dwalsh at redhat.com", ext_modules=[policy], packages=["sepolicy", "sepolicy.templates"], package_data={'sepolicy':['*.glade']})
++setup(name = "sepolicy", version="1.1", description="Python SELinux Policy Analyses bindings", author="Daniel Walsh", author_email="dwalsh at redhat.com", ext_modules=[policy], packages=["sepolicy", "sepolicy.templates", "sepolicy.help"], package_data={'sepolicy':['*.glade'], 'sepolicy.help': ['*.txt', '*.png']})
 diff --git a/policycoreutils/sepolicy/test_sepolicy.py b/policycoreutils/sepolicy/test_sepolicy.py
 new file mode 100644
 index 0000000..3e3725d
diff --git a/policycoreutils.spec b/policycoreutils.spec
index f66f548..f884a5c 100644
--- a/policycoreutils.spec
+++ b/policycoreutils.spec
@@ -7,7 +7,7 @@
 Summary: SELinux policy core utilities
 Name:	 policycoreutils
 Version: 2.1.14
-Release: 75%{?dist}
+Release: 77%{?dist}
 License: GPLv2
 Group:	 System Environment/Base
 # Based on git repository with tag 20101221
@@ -120,6 +120,8 @@ an SELinux environment.
 %dir %{python_sitearch}/sepolicy
 %{python_sitearch}/sepolicy/*so
 %{python_sitearch}/sepolicy/templates
+%{python_sitearch}/sepolicy/help
+%{python_sitearch}/sepolicy/help/*
 %{python_sitearch}/sepolicy/__init__.py*
 %{python_sitearch}/sepolicy/booleans.py*
 %{python_sitearch}/sepolicy/communicate.py*
@@ -141,7 +143,7 @@ an SELinux environment.
 %{_datadir}/system-config-selinux/selinux_server.py
 %{_datadir}/dbus-1/system-services/org.selinux.service
 %{_datadir}/polkit-1/actions/org.selinux.policy
-%{_datadir}/polkit-1/actions/org.fedoraproject.config.selinux.policy 
+%{_datadir}/polkit-1/actions/org.fedoraproject.config.selinux.policy
 %{_datadir}/bash-completion/completions/semanage
 %{_datadir}/bash-completion/completions/setsebool
 
@@ -230,7 +232,6 @@ system-config-selinux is a utility for managing the SELinux environment
 %{_datadir}/applications/selinux-polgengui.desktop
 %{_datadir}/icons/hicolor/24x24/apps/system-config-selinux.png
 %{_datadir}/pixmaps/system-config-selinux.png
-%{_datadir}/polkit-1/actions/org.selinux.policy
 %dir %{_datadir}/system-config-selinux
 %{_datadir}/system-config-selinux/system-config-selinux.png
 %{_datadir}/system-config-selinux/*.py*
@@ -335,7 +336,11 @@ The policycoreutils-restorecond package contains the restorecond service.
 %systemd_postun_with_restart restorecond.service
 
 %changelog
-* Wed Aug 7 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-75
+* Mon Aug 26 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-76
+- Add Miroslav Grepl Patch to handle semanage -i and semanage -o better
+- Update Translations
+
+* Thu Aug 15 2013 Dan Walsh <dwalsh at redhat.com> - 2.1.14-75
 - Update sepolicy gui code, cleanups and add file transition tab
 - Fix semanage fcontext -a --ftype code to work.
 


More information about the scm-commits mailing list