TERuleQueryTab: implement invert class/perms functions

This commit is contained in:
Chris PeBenito 2015-06-23 09:59:38 -04:00
parent 7a5850e423
commit 80e47d7bf6
2 changed files with 20 additions and 3 deletions

View File

@ -17,11 +17,20 @@
# <http://www.gnu.org/licenses/>.
#
from PyQt5 import QtCore
from PyQt5.QtCore import QAbstractListModel, QModelIndex, QStringListModel, Qt
from PyQt5.QtCore import QAbstractListModel, QItemSelectionModel, QModelIndex, QStringListModel, Qt
from setools.policyrep.exception import NoCommon
def invert_list_selection(selection_model):
"""Invert the selection of a list-based model."""
model = selection_model.model()
rowcount = model.rowCount()
for row in range(rowcount):
index = model.createIndex(row, 0)
selection_model.select(index, QItemSelectionModel.Toggle)
class SEToolsListModel(QAbstractListModel):
"""

View File

@ -26,7 +26,7 @@ from setools import TERuleQuery
from ..widget import SEToolsWidget
from .rulemodels import TERuleListModel
from .models import PermListModel, SEToolsListModel
from .models import PermListModel, SEToolsListModel, invert_list_selection
class TERuleQueryTab(SEToolsWidget, QScrollArea):
@ -105,7 +105,9 @@ class TERuleQueryTab(SEToolsWidget, QScrollArea):
self.target.editingFinished.connect(self.set_target)
self.target_regex.toggled.connect(self.set_target_regex)
self.tclass.selectionModel().selectionChanged.connect(self.set_tclass)
self.invert_class.clicked.connect(self.invert_tclass_selection)
self.perms.selectionModel().selectionChanged.connect(self.set_perms)
self.invert_perms.clicked.connect(self.invert_perms_selection)
self.default_type.textEdited.connect(self.clear_default_error)
self.default_type.editingFinished.connect(self.set_default_type)
self.default_regex.toggled.connect(self.set_default_regex)
@ -184,6 +186,9 @@ class TERuleQueryTab(SEToolsWidget, QScrollArea):
self.query.tclass = selected_classes
self.perms_model.set_classes(selected_classes)
def invert_tclass_selection(self):
invert_list_selection(self.tclass.selectionModel())
#
# Permissions criteria
#
@ -195,6 +200,9 @@ class TERuleQueryTab(SEToolsWidget, QScrollArea):
self.query.perms = selected_perms
def invert_perms_selection(self):
invert_list_selection(self.perms.selectionModel())
#
# Default criteria
#