eric7/Tasks/TaskFilterConfigDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8280
17d03699f151
child 8318
962bce857696
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Tasks/TaskFilterConfigDialog.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2006 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the task filter configuration dialog.
+"""
+
+from PyQt5.QtWidgets import QDialog
+
+from .Task import TaskType, TaskPriority
+
+from .Ui_TaskFilterConfigDialog import Ui_TaskFilterConfigDialog
+
+
+class TaskFilterConfigDialog(QDialog, Ui_TaskFilterConfigDialog):
+    """
+    Class implementing the task filter configuration dialog.
+    """
+    def __init__(self, taskFilter, parent=None):
+        """
+        Constructor
+        
+        @param taskFilter the task filter object to be configured
+        @param parent the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.typeCombo.addItem("", TaskType.NONE)
+        self.typeCombo.addItem(self.tr("Bugfix"), TaskType.FIXME)
+        self.typeCombo.addItem(self.tr("Warning"), TaskType.WARNING)
+        self.typeCombo.addItem(self.tr("ToDo"), TaskType.TODO)
+        self.typeCombo.addItem(self.tr("Note"), TaskType.NOTE)
+        self.typeCombo.addItem(self.tr("Test"), TaskType.TEST)
+        self.typeCombo.addItem(self.tr("Documentation"), TaskType.DOCU)
+        
+        if (
+            taskFilter.summaryFilter is None or
+            not taskFilter.summaryFilter.pattern
+        ):
+            self.summaryGroup.setChecked(False)
+            self.summaryEdit.clear()
+        else:
+            self.summaryGroup.setChecked(True)
+            self.summaryEdit.setText(taskFilter.summaryFilter.pattern)
+        
+        if not taskFilter.filenameFilter:
+            self.filenameGroup.setChecked(False)
+            self.filenameEdit.clear()
+        else:
+            self.filenameGroup.setChecked(True)
+            self.filenameEdit.setText(taskFilter.filenameFilter)
+        
+        if taskFilter.typeFilter == TaskType.NONE:
+            self.typeGroup.setChecked(False)
+            self.typeCombo.setCurrentIndex(0)
+        else:
+            self.typeGroup.setChecked(True)
+            self.typeCombo.setCurrentIndex(
+                self.typeCombo.findData(taskFilter.typeFilter))
+        
+        if taskFilter.scopeFilter is None:
+            self.scopeGroup.setChecked(False)
+            self.globalRadioButton.setChecked(True)
+        else:
+            self.scopeGroup.setChecked(True)
+            if taskFilter.scopeFilter:
+                self.projectRadioButton.setChecked(True)
+            else:
+                self.globalRadioButton.setChecked(True)
+        
+        if taskFilter.statusFilter is None:
+            self.statusGroup.setChecked(False)
+            self.uncompletedRadioButton.setChecked(True)
+        else:
+            self.statusGroup.setChecked(True)
+            if taskFilter.statusFilter:
+                self.completedRadioButton.setChecked(True)
+            else:
+                self.uncompletedRadioButton.setChecked(True)
+        
+        if taskFilter.prioritiesFilter is None:
+            self.priorityGroup.setChecked(False)
+            self.priorityHighCheckBox.setChecked(False)
+            self.priorityNormalCheckBox.setChecked(False)
+            self.priorityLowCheckBox.setChecked(False)
+        else:
+            self.priorityGroup.setChecked(True)
+            self.priorityHighCheckBox.setChecked(
+                TaskPriority.HIGH in taskFilter.prioritiesFilter)
+            self.priorityNormalCheckBox.setChecked(
+                TaskPriority.NORMAL in taskFilter.prioritiesFilter)
+            self.priorityLowCheckBox.setChecked(
+                TaskPriority.LOW in taskFilter.prioritiesFilter)
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+    
+    def configureTaskFilter(self, taskFilter):
+        """
+        Public method to set the parameters of the task filter object.
+        
+        @param taskFilter the task filter object to be configured
+        """
+        if self.summaryGroup.isChecked():
+            taskFilter.setSummaryFilter(self.summaryEdit.text())
+        else:
+            taskFilter.setSummaryFilter(None)
+        
+        if self.filenameGroup.isChecked():
+            taskFilter.setFileNameFilter(self.filenameEdit.text())
+        else:
+            taskFilter.setFileNameFilter("")
+        
+        if self.typeGroup.isChecked():
+            taskFilter.setTypeFilter(
+                TaskType(
+                    self.typeCombo.itemData(self.typeCombo.currentIndex())
+                )
+            )
+        else:
+            taskFilter.setTypeFilter(TaskType.NONE)
+        
+        if self.scopeGroup.isChecked():
+            if self.projectRadioButton.isChecked():
+                taskFilter.setScopeFilter(True)
+            else:
+                taskFilter.setScopeFilter(False)
+        else:
+            taskFilter.setScopeFilter(None)
+        
+        if self.statusGroup.isChecked():
+            if self.completedRadioButton.isChecked():
+                taskFilter.setStatusFilter(True)
+            else:
+                taskFilter.setStatusFilter(False)
+        else:
+            taskFilter.setStatusFilter(None)
+        
+        if self.priorityGroup.isChecked():
+            priorities = []
+            if self.priorityHighCheckBox.isChecked():
+                priorities.append(TaskPriority.HIGH)
+            if self.priorityNormalCheckBox.isChecked():
+                priorities.append(TaskPriority.NORMAL)
+            if self.priorityLowCheckBox.isChecked():
+                priorities.append(TaskPriority.LOW)
+            taskFilter.setPrioritiesFilter(priorities)
+        else:
+            taskFilter.setPrioritiesFilter(None)

eric ide

mercurial