eric6/Tasks/TaskViewer.py

Sat, 30 Oct 2021 10:41:14 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 30 Oct 2021 10:41:14 +0200
branch
maintenance
changeset 8731
c6264a513aa4
parent 8400
b3eefd7e58d1
parent 8665
1600bcd3a378
permissions
-rw-r--r--

Merged with 'default' branch to prepare a new release.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
3 # Copyright (c) 2005 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a task viewer and associated classes.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 Tasks can be defined manually or automatically. Automatically
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 generated tasks are derived from a comment with a special
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 introductory text. This text is configurable.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import os
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
15 import fnmatch
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
16 import threading
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
18 from PyQt5.QtCore import pyqtSignal, Qt, QThread
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
19 from PyQt5.QtWidgets import (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
20 QHeaderView, QLineEdit, QTreeWidget, QDialog, QInputDialog, QApplication,
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
21 QMenu, QAbstractItemView, QTreeWidgetItem
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
22 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
55
b5c84934de9c Renamed E4Gui to E5Gui.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
24 from E5Gui.E5Application import e5App
536
6d8d39753c82 Started replaceing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 501
diff changeset
25 from E5Gui import E5MessageBox
3071
83d066710d60 Added an extended progress dialog to make the progress bar label more descriptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3039
diff changeset
26 from E5Gui.E5ProgressDialog import E5ProgressDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
28 from .Task import Task, TaskType, TaskPriority
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 import UI.PixmapCache
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 import Preferences
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
35 from Utilities.AutoSaver import AutoSaver
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
37
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 class TaskViewer(QTreeWidget):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Class implementing the task viewer.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
501
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 500
diff changeset
42 @signal displayFile(str, int) emitted to go to a file task
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
44 displayFile = pyqtSignal(str, int)
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
45
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 def __init__(self, parent, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @param parent the parent (QWidget)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @param project reference to the project object
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
53 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.setSortingEnabled(True)
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
56 self.setExpandsOnDoubleClick(False)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
58 self.__headerItem = QTreeWidgetItem(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
59 ["", "", self.tr("Summary"), self.tr("Filename"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
60 self.tr("Line"), ""])
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
61 self.__headerItem.setIcon(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
62 0, UI.PixmapCache.getIcon("taskCompleted"))
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
63 self.__headerItem.setIcon(
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
64 1, UI.PixmapCache.getIcon("taskPriority"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.setHeaderItem(self.__headerItem)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
67 self.header().setSortIndicator(2, Qt.SortOrder.AscendingOrder)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__resizeColumns()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.tasks = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.copyTask = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.projectOpen = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.project = project
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
74 self.__projectTasksScanFilter = ""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
76 from .TaskFilter import TaskFilter
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.taskFilter = TaskFilter()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.taskFilter.setActive(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
80 self.__projectTasksSaveTimer = AutoSaver(self, self.saveProjectTasks)
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
81 self.__projectTaskExtractionThread = ProjectTaskExtractionThread()
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
82 self.__projectTaskExtractionThread.taskFound.connect(self.addFileTask)
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
83
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
84 self.__projectTasksMenu = QMenu(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
85 self.tr("P&roject Tasks"), self)
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
86 self.__projectTasksMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
87 self.tr("&Regenerate project tasks"),
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
88 self.regenerateProjectTasks)
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
89 self.__projectTasksMenu.addSeparator()
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
90 self.__projectTasksMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
91 self.tr("&Configure scan options"),
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
92 self.__configureProjectTasksScanOptions)
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
93
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__menu = QMenu(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
95 self.__menu.addAction(self.tr("&New Task..."), self.__newTask)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
96 self.subtaskItem = self.__menu.addAction(
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
97 self.tr("New &Sub-Task..."), self.__newSubTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
99 self.projectTasksMenuItem = self.__menu.addMenu(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
100 self.__projectTasksMenu)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
102 self.gotoItem = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
103 self.tr("&Go To"), self.__goToTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
105 self.copyItem = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
106 self.tr("&Copy"), self.__copyTask)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
107 self.pasteItem = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
108 self.tr("&Paste"), self.__pasteTask)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
109 self.pasteMainItem = self.__menu.addAction(
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
110 self.tr("Paste as &Main Task"), self.__pasteMainTask)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
111 self.deleteItem = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
112 self.tr("&Delete"), self.__deleteTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
114 self.markCompletedItem = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
115 self.tr("&Mark Completed"), self.__markCompleted)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
116 self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
117 self.tr("Delete Completed &Tasks"), self.__deleteCompleted)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
119 self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
120 self.tr("P&roperties..."), self.__editTaskProperties)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
121 self.__menu.addSeparator()
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
122 self.__menuFilteredAct = self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
123 self.tr("&Filtered display"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.__menuFilteredAct.setCheckable(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 self.__menuFilteredAct.setChecked(False)
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
126 self.__menuFilteredAct.triggered[bool].connect(self.__activateFilter)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
127 self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
128 self.tr("Filter c&onfiguration..."), self.__configureFilter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 self.__menu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
130 self.__menu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
131 self.tr("Resi&ze columns"), self.__resizeColumns)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.__menu.addSeparator()
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
133 self.__menu.addAction(self.tr("Configure..."), self.__configure)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__backMenu = QMenu(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
136 self.__backMenu.addAction(self.tr("&New Task..."), self.__newTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__backMenu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
138 self.backProjectTasksMenuItem = self.__backMenu.addMenu(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
139 self.__projectTasksMenu)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__backMenu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
141 self.backPasteItem = self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
142 self.tr("&Paste"), self.__pasteTask)
4866
7a2cecb49b5b Fixed an issue in the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
143 self.backPasteMainItem = self.__backMenu.addAction(
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
144 self.tr("Paste as &Main Task"), self.__pasteMainTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.__backMenu.addSeparator()
4883
ae0ee88c9d62 Improved the context menu of the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4866
diff changeset
146 self.backDeleteCompletedItem = self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
147 self.tr("Delete Completed &Tasks"), self.__deleteCompleted)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__backMenu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
149 self.__backMenuFilteredAct = self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
150 self.tr("&Filtered display"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.__backMenuFilteredAct.setCheckable(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.__backMenuFilteredAct.setChecked(False)
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
153 self.__backMenuFilteredAct.triggered[bool].connect(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
154 self.__activateFilter)
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
155 self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
156 self.tr("Filter c&onfiguration..."), self.__configureFilter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.__backMenu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
158 self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
159 self.tr("Resi&ze columns"), self.__resizeColumns)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.__backMenu.addSeparator()
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
161 self.__backMenu.addAction(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
162 self.tr("Configure..."), self.__configure)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
164 self.__activating = False
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
165
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
166 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
458
1695e7a2db54 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
167 self.customContextMenuRequested.connect(self.__showContextMenu)
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
168 self.itemActivated.connect(self.__taskItemActivated)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
7533
88261c96484b Removed the '.png' extension from all call to get an icon or a pixmap from the PixmapCache because this is not needed anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
170 self.setWindowIcon(UI.PixmapCache.getIcon("eric"))
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
171
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
172 self.__generateTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
173
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
174 def __generateTopLevelItems(self):
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
175 """
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
176 Private method to generate the 'Extracted Tasks' item.
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
177 """
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
178 self.__extractedItem = QTreeWidgetItem(self,
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
179 [self.tr("Extracted Tasks")])
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
180 self.__manualItem = QTreeWidgetItem(self,
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
181 [self.tr("Manual Tasks")])
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
182 for itm in [self.__extractedItem, self.__manualItem]:
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
183 itm.setFirstColumnSpanned(True)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
184 itm.setExpanded(True)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
185 itm.setHidden(True)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
186 font = itm.font(0)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
187 font.setUnderline(True)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
188 itm.setFont(0, font)
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
189
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
190 def __checkTopLevelItems(self):
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
191 """
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
192 Private slot to check the 'Extracted Tasks' item for children.
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
193 """
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
194 for itm in [self.__extractedItem, self.__manualItem]:
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
195 visibleCount = itm.childCount()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
196 for index in range(itm.childCount()):
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
197 if itm.child(index).isHidden():
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
198 visibleCount -= 1
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
199 itm.setHidden(visibleCount == 0)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 def __resort(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 Private method to resort the tree.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.sortItems(self.sortColumn(), self.header().sortIndicatorOrder())
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
206
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 def __resizeColumns(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 Private method to resize the list columns.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
211 self.header().resizeSections(QHeaderView.ResizeMode.ResizeToContents)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 self.header().setStretchLastSection(True)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
213
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
214 def findParentTask(self, parentUid):
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
215 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
216 Public method to find a parent task by its ID.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
218 @param parentUid uid of the parent task (string)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
219 @return reference to the task (Task)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
220 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
221 if not parentUid:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
222 return None
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
223
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
224 parentTask = None
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
225 for task in self.tasks:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
226 if task.getUuid() == parentUid:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
227 parentTask = task
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
228 break
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
229
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
230 return parentTask
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
231
8665
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
232 def containsTask(self, taskToTest):
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
233 """
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
234 Public method to test, if a task is already in the tasks list.
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
235
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
236 @param taskToTest task to look for
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
237 @type Task
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
238 @return flag indicating the existence of the task
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
239 @rtype bool
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
240 """
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
241 if taskToTest is None:
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
242 # play it safe
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
243 return False
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
244
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
245 return any(
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
246 (task.summary == taskToTest.summary) and
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
247 (task.filename == taskToTest.filename) and
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
248 (task.lineno == taskToTest.lineno)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
249 for task in self.tasks
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
250 )
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
251
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 def __refreshDisplay(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 Private method to refresh the display.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 for task in self.tasks:
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
257 task.setHidden(not self.taskFilter.showTask(task))
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
258
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
259 self.__checkTopLevelItems()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.__resort()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 self.__resizeColumns()
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
262
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 def __taskItemActivated(self, itm, col):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
265 Private slot to handle the activation of an item.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 @param itm reference to the activated item (QTreeWidgetItem)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 @param col column the item was activated in (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 """
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
270 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
271 not self.__activating and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
272 itm is not self.__extractedItem and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
273 itm is not self.__manualItem
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
274 ):
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
275 self.__activating = True
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
276 fn = itm.getFilename()
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
277 if fn:
5851
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
278 if os.path.exists(fn):
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
279 self.displayFile.emit(fn, itm.getLineno())
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
280 else:
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
281 if itm.isProjectTask():
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
282 self.__deleteTask(itm)
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
283 else:
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
284 self.__editTaskProperties()
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2000
diff changeset
285 self.__activating = False
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 def __showContextMenu(self, coord):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 Private slot to show the context menu of the list.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @param coord the position of the mouse pointer (QPoint)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 itm = self.itemAt(coord)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 coord = self.mapToGlobal(coord)
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
295 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
296 itm is None or
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
297 itm is self.__extractedItem or
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
298 itm is self.__manualItem
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
299 ):
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
300 self.backProjectTasksMenuItem.setEnabled(self.projectOpen)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 if self.copyTask:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 self.backPasteItem.setEnabled(True)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
303 self.backPasteMainItem.setEnabled(True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 self.backPasteItem.setEnabled(False)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
306 self.backPasteMainItem.setEnabled(False)
4883
ae0ee88c9d62 Improved the context menu of the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4866
diff changeset
307 self.backDeleteCompletedItem.setEnabled(
ae0ee88c9d62 Improved the context menu of the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4866
diff changeset
308 bool(self.tasks))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 self.__backMenu.popup(coord)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 else:
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
311 self.projectTasksMenuItem.setEnabled(self.projectOpen)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 if itm.getFilename():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 self.gotoItem.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 self.deleteItem.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 self.markCompletedItem.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 self.copyItem.setEnabled(False)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
317 self.subtaskItem.setEnabled(False)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 self.gotoItem.setEnabled(False)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 self.deleteItem.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 self.markCompletedItem.setEnabled(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 self.copyItem.setEnabled(True)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
323 self.subtaskItem.setEnabled(True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 if self.copyTask:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 self.pasteItem.setEnabled(True)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
326 self.pasteMainItem.setEnabled(True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 self.pasteItem.setEnabled(False)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
329 self.pasteMainItem.setEnabled(False)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 self.__menu.popup(coord)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
333 def setProjectOpen(self, o=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 Public slot to set the project status.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 @param o flag indicating the project status
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 self.projectOpen = o
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
341 def addTask(self, summary, priority=TaskPriority.NORMAL, filename="",
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
342 lineno=0, completed=False, _time=0, isProjectTask=False,
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
343 taskType=TaskType.TODO, description="", uid="",
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
344 parentTask=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 Public slot to add a task.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
348 @param summary summary text of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
349 @type str
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
350 @param priority priority of the task
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
351 @type TaskPriority
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
352 @param filename filename containing the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
353 @type str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
354 @param lineno line number containing the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
355 @type int
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
356 @param completed flag indicating completion status
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
357 @type bool
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
358 @param _time creation time of the task (if 0 use current time)
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
359 @type float
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
360 @param isProjectTask flag indicating a task related to the current
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
361 project
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
362 @type bool
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
363 @param taskType type of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
364 @type TaskType
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
365 @param description explanatory text of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
366 @type str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
367 @param uid unique id of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
368 @type str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
369 @param parentTask reference to the parent task item or the UID of the
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
370 parent task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
371 @type Task or str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
372 @return reference to the task item
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
373 @rtype Task
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 """
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
375 if isinstance(parentTask, str):
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
376 # UID of parent task
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
377 if parentTask == "":
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
378 parentUid = ""
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
379 parentTask = None
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
380 else:
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
381 parentUid = parentTask
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
382 parentTask = self.findParentTask(parentUid)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
383 else:
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
384 # parent task item
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
385 if parentTask:
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
386 parentUid = parentTask.getUuid()
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
387 else:
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
388 parentUid = ""
2197
c4f24f8f34c0 Some harminisation of nomenclature in the various Task dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2099
diff changeset
389 task = Task(summary, priority, filename, lineno, completed,
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
390 _time, isProjectTask, taskType,
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
391 self.project, description, uid, parentUid)
8665
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
392 if not self.containsTask(task):
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
393 self.tasks.append(task)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
394 if parentTask:
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
395 parentTask.addChild(task)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
396 parentTask.setExpanded(True)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
397 elif filename:
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
398 self.__extractedItem.addChild(task)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
399 else:
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
400 self.__manualItem.addChild(task)
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
401 task.setHidden(not self.taskFilter.showTask(task))
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
402
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
403 self.__checkTopLevelItems()
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
404 self.__resort()
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
405 self.__resizeColumns()
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
406
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
407 if isProjectTask:
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
408 self.__projectTasksSaveTimer.changeOccurred()
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
409
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
410 return task
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
411 else:
8665
1600bcd3a378 Changed TaskViewer to prvent the addition of a duplicate task.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8280
diff changeset
412 return None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
414 def addFileTask(self, summary, filename, lineno, taskType=TaskType.TODO,
2197
c4f24f8f34c0 Some harminisation of nomenclature in the various Task dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2099
diff changeset
415 description=""):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 Public slot to add a file related task.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
419 @param summary summary text of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
420 @type str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
421 @param filename filename containing the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
422 @type str
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
423 @param lineno line number containing the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
424 @type int
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
425 @param taskType type of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
426 @type TaskType
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
427 @param description explanatory text of the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
428 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 """
2197
c4f24f8f34c0 Some harminisation of nomenclature in the various Task dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2099
diff changeset
430 self.addTask(summary, filename=filename, lineno=lineno,
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
431 isProjectTask=(
3039
8dd0165d805d Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
432 self.project and
8dd0165d805d Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
433 self.project.isProjectSource(filename)),
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
434 taskType=TaskType(taskType), description=description)
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
435
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 def getProjectTasks(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 Public method to retrieve all project related tasks.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 @return copy of tasks (list of Task)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 tasks = [task for task in self.tasks if task.isProjectTask()]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 return tasks[:]
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
444
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 def getGlobalTasks(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 Public method to retrieve all non project related tasks.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 @return copy of tasks (list of Task)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 tasks = [task for task in self.tasks if not task.isProjectTask()]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 return tasks[:]
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
453
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 def clearTasks(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 Public slot to clear all tasks from display.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 self.tasks = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 self.clear()
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
460 self.__generateTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
461
2000
a81bf687e4ee Fixed an issue with the task manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
462 def clearProjectTasks(self, fileOnly=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 Public slot to clear project related tasks.
2000
a81bf687e4ee Fixed an issue with the task manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
465
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
466 @param fileOnly flag indicating to clear only file related
2000
a81bf687e4ee Fixed an issue with the task manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
467 project tasks (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 """
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
469 for task in reversed(self.tasks[:]):
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
470 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
471 (fileOnly and task.isProjectFileTask()) or
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
472 (not fileOnly and task.isProjectTask())
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
473 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 if self.copyTask == task:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 self.copyTask = None
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
476 parent = task.parent()
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
477 parent.removeChild(task)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 self.tasks.remove(task)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 del task
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
481 self.__checkTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
482 self.__resort()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
483 self.__resizeColumns()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
484
1373
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
485 def clearFileTasks(self, filename, conditionally=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 Public slot to clear all tasks related to a file.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @param filename name of the file (string)
1373
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
490 @param conditionally flag indicating to clear the tasks of the file
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
491 checking some conditions (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 """
1373
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
493 if conditionally:
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
494 if self.project and self.project.isProjectSource(filename):
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
495 # project related tasks will not be cleared
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
496 return
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
497 if not Preferences.getTasks("ClearOnFileClose"):
b3b3c99dba01 Made tasks manager forget about global file tasks when file is closed (configurable via configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
498 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 for task in self.tasks[:]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 if task.getFilename() == filename:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 if self.copyTask == task:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 self.copyTask = None
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
503 self.__extractedItem.removeChild(task)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 self.tasks.remove(task)
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
505 if task.isProjectTask:
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
506 self.__projectTasksSaveTimer.changeOccurred()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 del task
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
509 self.__checkTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
510 self.__resort()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
511 self.__resizeColumns()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
512
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 def __editTaskProperties(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 """
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2409
diff changeset
515 Private slot to handle the "Properties" context menu entry.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
517 from .TaskPropertiesDialog import TaskPropertiesDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 task = self.currentItem()
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
519 dlg = TaskPropertiesDialog(task, parent=self,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
520 projectOpen=self.projectOpen)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
521 if (
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
522 dlg.exec() == QDialog.DialogCode.Accepted and
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
523 dlg.isManualTaskMode()
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
524 ):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
525 (summary, priority, taskType, completed, isProjectTask,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
526 description) = dlg.getData()
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
527 task.setSummary(summary)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
528 task.setPriority(priority)
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
529 task.setTaskType(taskType)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
530 task.setCompleted(completed)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
531 task.setProjectTask(isProjectTask)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
532 task.setDescription(description)
1965
96f5a76e1845 Fixed some PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1819
diff changeset
533 self.__projectTasksSaveTimer.changeOccurred()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 def __newTask(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 Private slot to handle the "New Task" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
539 from .TaskPropertiesDialog import TaskPropertiesDialog
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
540 dlg = TaskPropertiesDialog(None, parent=self,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
541 projectOpen=self.projectOpen)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
542 if dlg.exec() == QDialog.DialogCode.Accepted:
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
543 (summary, priority, taskType, completed, isProjectTask,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
544 description) = dlg.getData()
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
545 self.addTask(summary, priority, completed=completed,
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
546 isProjectTask=isProjectTask, taskType=taskType,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
547 description=description)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
548
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
549 def __newSubTask(self):
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
550 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
551 Private slot to handle the "New Sub-Task" context menu entry.
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
552 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
553 parentTask = self.currentItem()
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
554 projectTask = parentTask.isProjectTask()
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
555
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
556 from .TaskPropertiesDialog import TaskPropertiesDialog
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
557 dlg = TaskPropertiesDialog(None, parent=self,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
558 projectOpen=self.projectOpen)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
559 dlg.setSubTaskMode(projectTask)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
560 if dlg.exec() == QDialog.DialogCode.Accepted:
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
561 (summary, priority, taskType, completed, isProjectTask,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
562 description) = dlg.getData()
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
563 self.addTask(summary, priority, completed=completed,
8280
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
564 isProjectTask=isProjectTask, taskType=taskType,
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8278
diff changeset
565 description=description, parentTask=parentTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 def __markCompleted(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 Private slot to handle the "Mark Completed" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 task = self.currentItem()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 task.setCompleted(True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 def __deleteCompleted(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 Private slot to handle the "Delete Completed Tasks" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 """
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
578 for task in reversed(self.tasks[:]):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 if task.isCompleted():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 if self.copyTask == task:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 self.copyTask = None
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
582 parent = task.parent()
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
583 parent.removeChild(task)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 self.tasks.remove(task)
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
585 if task.isProjectTask:
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
586 self.__projectTasksSaveTimer.changeOccurred()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 del task
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
588
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
589 self.__checkTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
590 self.__resort()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
591 self.__resizeColumns()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
592
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 ci = self.currentItem()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 if ci:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 ind = self.indexFromItem(ci, self.currentColumn())
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
596 self.scrollTo(ind, QAbstractItemView.ScrollHint.PositionAtCenter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 def __copyTask(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 Private slot to handle the "Copy" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 task = self.currentItem()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 self.copyTask = task
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 def __pasteTask(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 Private slot to handle the "Paste" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 if self.copyTask:
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
610 parent = self.copyTask.parent()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
611 if not isinstance(parent, Task):
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
612 parent = None
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
613
2197
c4f24f8f34c0 Some harminisation of nomenclature in the various Task dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2099
diff changeset
614 self.addTask(self.copyTask.summary,
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
615 priority=self.copyTask.priority,
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
616 completed=self.copyTask.completed,
2197
c4f24f8f34c0 Some harminisation of nomenclature in the various Task dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2099
diff changeset
617 description=self.copyTask.description,
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
618 isProjectTask=self.copyTask._isProjectTask,
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
619 parentTask=parent)
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
620
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
621 def __pasteMainTask(self):
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
622 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
623 Private slot to handle the "Paste as Main Task" context menu entry.
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
624 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
625 if self.copyTask:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
626 self.addTask(self.copyTask.summary,
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
627 priority=self.copyTask.priority,
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
628 completed=self.copyTask.completed,
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
629 description=self.copyTask.description,
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
630 isProjectTask=self.copyTask._isProjectTask)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
632 def __deleteSubTasks(self, task):
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
633 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
634 Private method to delete all sub-tasks.
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
635
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
636 @param task task to delete sub-tasks of (Task)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
637 """
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
638 for subtask in task.takeChildren():
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
639 if self.copyTask == subtask:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
640 self.copyTask = None
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
641 if subtask.childCount() > 0:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
642 self.__deleteSubTasks(subtask)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
643 self.tasks.remove(subtask)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
644
5851
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
645 def __deleteTask(self, task=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 """
5851
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
647 Private slot to delete a task.
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
648
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
649 @param task task to be deleted
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
650 @type Task
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 """
5851
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
652 if task is None:
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
653 # called via "Delete Task" context menu entry
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
654 task = self.currentItem()
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
655
8f8b264e5d5f Fixed an issue with the task viewer causing empty files being created.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5603
diff changeset
656 if self.copyTask is task:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 self.copyTask = None
3990
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
658 if task.childCount() > 0:
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
659 self.__deleteSubTasks(task)
5dd6edf8540a Aadded capability to add sub-tasks (i.e. a task hierarchy) for manually generated tasks to the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
660 parent = task.parent()
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
661 parent.removeChild(task)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 self.tasks.remove(task)
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
663 if task.isProjectTask:
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
664 self.__projectTasksSaveTimer.changeOccurred()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 del task
3994
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
666
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
667 self.__checkTopLevelItems()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
668 self.__resort()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
669 self.__resizeColumns()
04792ff88ddf Refined the task viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3990
diff changeset
670
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
671 ci = self.currentItem()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 if ci:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 ind = self.indexFromItem(ci, self.currentColumn())
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
674 self.scrollTo(ind, QAbstractItemView.ScrollHint.PositionAtCenter)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 def __goToTask(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 Private slot to handle the "Go To" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 task = self.currentItem()
500
c3abc7895a01 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 458
diff changeset
681 self.displayFile.emit(task.getFilename(), task.getLineno())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 def handlePreferencesChanged(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 Public slot to react to changes of the preferences.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 for task in self.tasks:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 task.colorizeTask()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 def __activateFilter(self, on):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 Private slot to handle the "Filtered display" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 @param on flag indicating the filter state (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 if on and not self.taskFilter.hasActiveFilter():
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
697 res = E5MessageBox.yesNo(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
698 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
699 self.tr("Activate task filter"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
700 self.tr(
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
701 """The task filter doesn't have any active filters."""
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
702 """ Do you want to configure the filter settings?"""),
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
703 yesDefault=True)
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 538
diff changeset
704 if not res:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705 on = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 self.__configureFilter()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 on = self.taskFilter.hasActiveFilter()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 self.taskFilter.setActive(on)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 self.__menuFilteredAct.setChecked(on)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 self.__backMenuFilteredAct.setChecked(on)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 self.__refreshDisplay()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 def __configureFilter(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 Private slot to handle the "Configure filter" context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 """
2409
df3820f08247 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
719 from .TaskFilterConfigDialog import TaskFilterConfigDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 dlg = TaskFilterConfigDialog(self.taskFilter)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
721 if dlg.exec() == QDialog.DialogCode.Accepted:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 dlg.configureTaskFilter(self.taskFilter)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 self.__refreshDisplay()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
725 def __configureProjectTasksScanOptions(self):
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
726 """
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
727 Private slot to configure scan options for project tasks.
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
728 """
5603
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
729 scanFilter, ok = QInputDialog.getText(
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
730 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
731 self.tr("Scan Filter Patterns"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
732 self.tr("Enter filename patterns of files"
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
733 " to be excluded separated by a comma:"),
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
734 QLineEdit.EchoMode.Normal,
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
735 self.__projectTasksScanFilter)
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
736 if ok:
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
737 self.__projectTasksScanFilter = scanFilter
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
738
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
739 def regenerateProjectTasks(self, quiet=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
740 """
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
741 Public slot to regenerate project related tasks.
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
742
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
743 @param quiet flag indicating quiet operation
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
744 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 """
1819
cfcfd617216a Changed the tasks handling to allow for more fine grained task designations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1653
diff changeset
746 markers = {
7663
b4d5234f92e7 Tasks: added separate task categories for 'Test' and 'Documentation' tasks
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7533
diff changeset
747 taskType: Preferences.getTasks(markersName).split()
b4d5234f92e7 Tasks: added separate task categories for 'Test' and 'Documentation' tasks
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7533
diff changeset
748 for taskType, markersName in Task.TaskType2MarkersName.items()
1819
cfcfd617216a Changed the tasks handling to allow for more fine grained task designations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1653
diff changeset
749 }
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 files = self.project.pdata["SOURCES"]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
752 # apply file filter
8068
28457602b8f8 TaskViewer: fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8011
diff changeset
753 filterList = [f.strip()
28457602b8f8 TaskViewer: fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8011
diff changeset
754 for f in self.__projectTasksScanFilter.split(",")
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
755 if f.strip()]
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
756 if filterList:
5603
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
757 for scanFilter in filterList:
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
758 files = [f for f in files
4f2dd0850803 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
759 if not fnmatch.fnmatch(f, scanFilter)]
960
64a6e66b4707 Added capability to the tasks viewer to ignore files based on a wildcard during a project tasks scan.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
760
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 # remove all project tasks
2000
a81bf687e4ee Fixed an issue with the task manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1965
diff changeset
762 self.clearProjectTasks(fileOnly=True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 # now process them
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
765 if quiet:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
766 ppath = self.project.getProjectPath()
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
767 self.__projectTaskExtractionThread.scan(
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
768 markers, [os.path.join(ppath, f) for f in files])
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
769 else:
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
770 progress = E5ProgressDialog(
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
771 self.tr("Extracting project tasks..."),
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
772 self.tr("Abort"), 0, len(files), self.tr("%v/%m Files"))
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
773 progress.setMinimumDuration(0)
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
774 progress.setWindowTitle(self.tr("Tasks"))
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
775
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
776 ppath = self.project.getProjectPath()
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
777 for count, file in enumerate(files):
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
778 progress.setLabelText(
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
779 self.tr("Extracting project tasks...\n{0}").format(file))
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
780 progress.setValue(count)
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
781 QApplication.processEvents()
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
782 if progress.wasCanceled():
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
783 break
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
784
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
785 fn = os.path.join(ppath, file)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
786 # read the file and split it into textlines
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
787 try:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
788 text, encoding = Utilities.readEncodedFile(fn)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
789 lines = text.splitlines()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
790 except (UnicodeError, OSError):
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
791 count += 1
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
792 progress.setValue(count)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
793 continue
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
794
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
795 # now search tasks and record them
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
796 for lineIndex, line in enumerate(lines, start=1):
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
797 shouldBreak = False
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
798
6494
72e3d61e5a20 TaskViewer: amended another place to check for '__NO-TASK__' marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6493
diff changeset
799 if line.endswith("__NO-TASK__"):
72e3d61e5a20 TaskViewer: amended another place to check for '__NO-TASK__' marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6493
diff changeset
800 # ignore potential task marker
72e3d61e5a20 TaskViewer: amended another place to check for '__NO-TASK__' marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6493
diff changeset
801 continue
72e3d61e5a20 TaskViewer: amended another place to check for '__NO-TASK__' marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6493
diff changeset
802
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
803 for taskType, taskMarkers in markers.items():
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
804 for taskMarker in taskMarkers:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
805 index = line.find(taskMarker)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
806 if index > -1:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
807 task = line[index:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
808 self.addFileTask(task, fn, lineIndex, taskType)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
809 shouldBreak = True
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
810 break
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
811 if shouldBreak:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
812 break
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
814 progress.setValue(len(files))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 def __configure(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
817 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 Private method to open the configuration dialog.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
820 e5App().getObject("UserInterface").showPreferences("tasksPage")
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
821
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
822 def saveProjectTasks(self):
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
823 """
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
824 Public method to write the project tasks.
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
825 """
5105
8a773a100c34 Added an option to the project to rescan the project for tasks upon open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4883
diff changeset
826 if self.projectOpen and Preferences.getProject("TasksProjectAutoSave"):
1653
fed1920ff53b Added capability to save project tasks automatically (configurable on project configuration page of configuration dialog).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1640
diff changeset
827 self.project.writeTasks()
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
828
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
829 def stopProjectTaskExtraction(self):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
830 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
831 Public method to stop the project task extraction thread.
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
832 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
833 self.__projectTaskExtractionThread.requestInterrupt()
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
834 self.__projectTaskExtractionThread.wait()
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
835
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
836 def getTasksScanFilter(self) -> str:
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
837 """
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
838 Public method to get the project scan filter.
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
839
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
840 @return project scan filter
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
841 @rtype str
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
842 """
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
843 return self.__projectTasksScanFilter.strip()
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
844
8068
28457602b8f8 TaskViewer: fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8011
diff changeset
845 def setTasksScanFilter(self, filterStr: str):
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
846 """
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
847 Public method to set the project scan filter.
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
848
8068
28457602b8f8 TaskViewer: fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8011
diff changeset
849 @param filterStr project scan filter
8011
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
850 @type str
630a173cb137 Implemented the JSON based tasks files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
851 """
8068
28457602b8f8 TaskViewer: fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8011
diff changeset
852 self.__projectTasksScanFilter = filterStr
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
853
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
854
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
855 class ProjectTaskExtractionThread(QThread):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
856 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
857 Class implementing a thread to extract tasks related to a project.
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
858
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
859 @signal taskFound(str, str, int, TaskType) emitted with the task
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
860 description, the file name, the line number and task type to signal
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
861 the presence of a task
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
862 """
8278
e647b71b393f Modernized some more code (Tasks).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
863 taskFound = pyqtSignal(str, str, int, TaskType)
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
864
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
865 def __init__(self, parent=None):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
866 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
867 Constructor
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
868
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
869 @param parent reference to the parent object (QObject)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
870 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
871 super().__init__()
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
872
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
873 self.__lock = threading.Lock()
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
874 self.__interrupt = False
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
875
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
876 def requestInterrupt(self):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
877 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
878 Public method to request iterruption of the thread.
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
879 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
880 if self.isRunning():
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
881 self.__interrupt = True
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
882
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
883 def scan(self, markers, files):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
884 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
885 Public method to scan the given list of files for tasks.
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
886
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
887 @param markers dictionary of defined task markers
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
888 @type dict of lists of str
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
889 @param files list of file names to be scanned
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
890 @type list of str
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
891 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
892 with self.__lock:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
893 self.__interrupt = False
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
894 self.__files = files[:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
895 self.__markers = {}
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
896 for markerType in markers:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
897 self.__markers[markerType] = markers[markerType][:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
898
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
899 if not self.isRunning():
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8068
diff changeset
900 self.start(QThread.Priority.LowPriority)
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
901
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
902 def run(self):
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
903 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
904 Public thread method to scan the given files.
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
905 """
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
906 with self.__lock:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
907 files = self.__files[:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
908 markers = {}
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
909 for markerType in self.__markers:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
910 markers[markerType] = self.__markers[markerType][:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
911
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
912 for fn in files:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
913 if self.__interrupt:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
914 break
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
915
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
916 # read the file and split it into textlines
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
917 try:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
918 text, encoding = Utilities.readEncodedFile(fn)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
919 lines = text.splitlines()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
920 except (UnicodeError, OSError):
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
921 continue
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
922
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
923 # now search tasks and record them
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
924 for lineIndex, line in enumerate(lines, start=1):
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
925 if self.__interrupt:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
926 break
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
927
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
928 found = False
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
929
6493
b64d6d0b4175 TaskViewer, Editor: added code to mark a line as not containing a task with '__NO-TASK__'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
930 if line.endswith("__NO-TASK__"):
b64d6d0b4175 TaskViewer, Editor: added code to mark a line as not containing a task with '__NO-TASK__'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
931 # ignore potential task marker
b64d6d0b4175 TaskViewer, Editor: added code to mark a line as not containing a task with '__NO-TASK__'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
932 continue
b64d6d0b4175 TaskViewer, Editor: added code to mark a line as not containing a task with '__NO-TASK__'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
933
5117
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
934 for taskType, taskMarkers in markers.items():
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
935 for taskMarker in taskMarkers:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
936 index = line.find(taskMarker)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
937 if index > -1:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
938 task = line[index:]
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
939 with self.__lock:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
940 self.taskFound.emit(task, fn, lineIndex,
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
941 taskType)
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
942 found = True
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
943 break
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
944 if found:
1faa0780ae1d Improved the quiet task extraction process by implementing a threaded solution.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5114
diff changeset
945 break

eric ide

mercurial