eric6/Tasks/TaskPropertiesDialog.py

changeset 8280
17d03699f151
parent 8218
7c09585bd960
--- a/eric6/Tasks/TaskPropertiesDialog.py	Sun May 02 10:59:00 2021 +0200
+++ b/eric6/Tasks/TaskPropertiesDialog.py	Sun May 02 15:09:14 2021 +0200
@@ -15,6 +15,8 @@
 
 from .Ui_TaskPropertiesDialog import Ui_TaskPropertiesDialog
 
+from .Task import TaskType, TaskPriority
+
 
 class TaskPropertiesDialog(QDialog, Ui_TaskPropertiesDialog):
     """
@@ -25,40 +27,76 @@
         Constructor
         
         @param task the task object to be shown
-        @param parent the parent widget (QWidget)
-        @param projectOpen flag indicating status of the project (boolean)
+        @type Task
+        @param parent the parent widget
+        @type QWidget
+        @param projectOpen flag indicating status of the project
+        @type bool
         """
         super().__init__(parent)
         self.setupUi(self)
         
         self.filenameCompleter = E5FileCompleter(self.filenameEdit)
         
-        if not projectOpen:
-            self.projectCheckBox.setEnabled(False)
+        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 task is not None:
             self.summaryEdit.setText(task.summary)
             self.descriptionEdit.setText(task.description)
             self.creationLabel.setText(
                 time.strftime("%Y-%m-%d, %H:%M:%S",
                               time.localtime(task.created)))
-            self.priorityCombo.setCurrentIndex(task.priority)
+            self.priorityCombo.setCurrentIndex(task.priority.value)
             self.projectCheckBox.setChecked(task._isProjectTask)
             self.completedCheckBox.setChecked(task.completed)
             self.filenameEdit.setText(task.filename)
             if task.lineno:
                 self.linenoEdit.setText(str(task.lineno))
+            index = self.typeCombo.findData(task.taskType)
+            self.typeCombo.setCurrentIndex(index)
+            self.__setMode(bool(task.filename), projectOpen)
         else:
             self.projectCheckBox.setChecked(projectOpen)
+            self.typeCombo.setCurrentIndex(2)   # TaskType.TODO
+            self.__setMode(False, projectOpen)
     
-    def setReadOnly(self):
+    def __setMode(self, isFileTask, projectOpen):
         """
-        Public slot to set the dialog to read only mode.
+        Private method to show or hide dialog elements depending on the task
+        kind.
+        
+        @param isFileTask flag indicating a file task (i.e. extracted task)
+        @type bool
+        @param projectOpen flag indicating status of the project
+        @type bool
         """
-        self.summaryEdit.setReadOnly(True)
-        self.completedCheckBox.setEnabled(False)
-        self.priorityCombo.setEnabled(False)
-        self.projectCheckBox.setEnabled(False)
-        self.descriptionEdit.setEnabled(False)
+        self.__isFileTaskMode = isFileTask
+        if self.__isFileTaskMode:
+            self.descriptionEdit.hide()
+            self.descriptionLabel.hide()
+            self.manualTaskFrame.hide()
+            
+            msh = self.minimumSizeHint()
+            self.resize(max(self.width(), msh.width()), msh.height())
+        else:
+            self.fileTaskFrame.hide()
+        
+        self.summaryEdit.setReadOnly(isFileTask)
+        self.projectCheckBox.setEnabled(projectOpen and not isFileTask)
+    
+    def isManualTaskMode(self):
+        """
+        Public method to check, if the dialog is in manual task mode.
+        
+        @return flag indicating manual task mode
+        @rtype bool
+        """
+        return not self.__isFileTaskMode
     
     def setSubTaskMode(self, projectTask):
         """
@@ -73,12 +111,13 @@
         """
         Public method to retrieve the dialogs data.
         
-        @return tuple of description, priority, completion flag,
-                project flag and long text (string, string, boolean,
-                boolean, string)
+        @return tuple of description, priority, type, completion flag,
+                project flag and long text
+        @rtype tuple of (str, TaskPriority, TaskType, bool, bool, str)
         """
         return (self.summaryEdit.text(),
-                self.priorityCombo.currentIndex(),
+                TaskPriority(self.priorityCombo.currentIndex()),
+                TaskType(self.typeCombo.currentData()),
                 self.completedCheckBox.isChecked(),
                 self.projectCheckBox.isChecked(),
                 self.descriptionEdit.toPlainText())

eric ide

mercurial