diff --git a/res/filter_editor.ui b/res/filter_editor.ui
index 8028ab5..fdf1c81 100644
--- a/res/filter_editor.ui
+++ b/res/filter_editor.ui
@@ -20,7 +20,7 @@
Qt::Horizontal
- QDialogButtonBox::Discard|QDialogButtonBox::Save
+ QDialogButtonBox::Cancel|QDialogButtonBox::Discard|QDialogButtonBox::Save
diff --git a/src/filter_editor.py b/src/filter_editor.py
index f641e91..60684f4 100644
--- a/src/filter_editor.py
+++ b/src/filter_editor.py
@@ -20,6 +20,7 @@ def __init__(self, filter_configuration: Dict[str, QuestionParameters],
self.ui.buttonBox.clicked.connect(self.__handle_buttonbox)
self.filter = None
+ self.result = None
self.filter_configuration = filter_configuration
@@ -32,7 +33,10 @@ def __init__(self, filter_configuration: Dict[str, QuestionParameters],
self.setWindowTitle("Filter bearbeiten")
dict_key, filter_option, filter_value = current_filter
index = list(self.filter_configuration).index(dict_key)
- self.ui.combobox_column.setCurrentIndex(index)
+ if index == self.ui.combobox_column.currentIndex():
+ self.__update_filteroptions(self.ui.combobox_column.currentIndex())
+ else:
+ self.ui.combobox_column.setCurrentIndex(index)
index = self.filter_configuration[dict_key].filter_options.index(filter_option)
self.ui.combobox_filteroption.setCurrentIndex(index)
self.__set_filter_data(filter_value)
@@ -41,11 +45,13 @@ def __init__(self, filter_configuration: Dict[str, QuestionParameters],
self.__update_filteroptions(self.ui.combobox_column.currentIndex())
def __handle_buttonbox(self, button: QPushButton):
- button_role = self.ui.buttonBox.buttonRole(button)
- if button_role == QDialogButtonBox.ButtonRole.DestructiveRole:
- self.reject()
- elif button_role == QDialogButtonBox.ButtonRole.AcceptRole:
+ self.result = self.ui.buttonBox.buttonRole(button)
+ if self.result == QDialogButtonBox.ButtonRole.DestructiveRole:
+ self.accept()
+ elif self.result == QDialogButtonBox.ButtonRole.AcceptRole:
self.accept()
+ elif self.result == QDialogButtonBox.ButtonRole.RejectRole:
+ self.reject()
def __set_filter_data(self, data) -> None:
_, parameters, _ = self.__current_selection_state()
diff --git a/src/main_application.py b/src/main_application.py
index 1fddf72..4adefc8 100644
--- a/src/main_application.py
+++ b/src/main_application.py
@@ -7,7 +7,7 @@
from PySide6.QtCore import QCoreApplication, Qt
from PySide6.QtCore import QSortFilterProxyModel
from PySide6.QtWidgets import QMainWindow, QWidget, QTreeWidgetItem, QFileDialog, QApplication, QMessageBox, QDialog, \
- QListWidgetItem
+ QListWidgetItem, QDialogButtonBox
from bs4 import BeautifulSoup
from . import controller, document_builder
@@ -200,22 +200,30 @@ def add_filter(self, list_entry: Union[QListWidgetItem, bool] = False):
for i in range(first_ruletab.columnCount()):
properties.update(first_ruletab.headerData(i, Qt.Horizontal, Qt.UserRole))
editor = FilterEditor(filter_configuration=properties, current_filter=current_configuration)
- return_val = editor.exec()
- if return_val == QDialog.Rejected:
+ editor.exec()
+ if editor.result == QDialogButtonBox.ButtonRole.DestructiveRole:
+ # Closed via Discard
if not edit_mode:
return
else:
RuleSortFilterProxyModel.filters.pop(index)
self.ui.filter_list.takeItem(index)
del list_entry
- elif return_val == QDialog.Accepted:
+ elif editor.result == QDialogButtonBox.ButtonRole.AcceptRole:
+ # Closed via Save
if not edit_mode:
RuleSortFilterProxyModel.filters += [(editor.create_filter(), editor.current_configuration())]
self.ui.filter_list.addItem(QListWidgetItem(f"Filter {self.ui.filter_list.count() + 1}"))
else:
RuleSortFilterProxyModel.filters[index] = (editor.create_filter(), editor.current_configuration())
+ elif editor.result == QDialogButtonBox.ButtonRole.RejectRole:
+ # Closed via Cancel
+ return
+ elif editor.result is None:
+ # Closed via X
+ return
else:
- raise ValueError("Invalid response")
+ raise ValueError(f"Invalid response {editor.result}")
self.refresh_column_filter()
def refresh_column_filter(self):
diff --git a/src/ui_filter_editor.py b/src/ui_filter_editor.py
index 5694a97..cf7375a 100644
--- a/src/ui_filter_editor.py
+++ b/src/ui_filter_editor.py
@@ -12,7 +12,6 @@
from PySide6.QtWidgets import (QComboBox, QDialogButtonBox, QGridLayout, QLabel, QSizePolicy,
QSpacerItem)
-
class Ui_FilterEditor(object):
def setupUi(self, FilterEditor):
if not FilterEditor.objectName():
@@ -23,7 +22,7 @@ def setupUi(self, FilterEditor):
self.buttonBox = QDialogButtonBox(FilterEditor)
self.buttonBox.setObjectName(u"buttonBox")
self.buttonBox.setOrientation(Qt.Horizontal)
- self.buttonBox.setStandardButtons(QDialogButtonBox.Discard | QDialogButtonBox.Save)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Discard | QDialogButtonBox.Save)
self.gridLayout.addWidget(self.buttonBox, 4, 1, 1, 1)
@@ -61,7 +60,6 @@ def setupUi(self, FilterEditor):
self.buttonBox.rejected.connect(FilterEditor.reject)
QMetaObject.connectSlotsByName(FilterEditor)
-
# setupUi
def retranslateUi(self, FilterEditor):
@@ -70,3 +68,4 @@ def retranslateUi(self, FilterEditor):
self.label_filter.setText(QCoreApplication.translate("FilterEditor", u"Filter", None))
self.label_filteroption.setText(QCoreApplication.translate("FilterEditor", u"Filteroption", None))
# retranslateUi
+