src/eric7/Tasks/TaskFilter.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9653
e67609152c5e
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
15 15
16 class TaskFilter: 16 class TaskFilter:
17 """ 17 """
18 Class implementing a filter for tasks. 18 Class implementing a filter for tasks.
19 """ 19 """
20
20 def __init__(self): 21 def __init__(self):
21 """ 22 """
22 Constructor 23 Constructor
23 """ 24 """
24 self.active = False 25 self.active = False
25 26
26 self.summaryFilter = None 27 self.summaryFilter = None
27 self.filenameFilter = "" 28 self.filenameFilter = ""
28 self.typeFilter = TaskType.NONE 29 self.typeFilter = TaskType.NONE
29 # task type 30 # task type
30 31
31 self.scopeFilter = None 32 self.scopeFilter = None
32 #- global (False) or project (True) 33 # - global (False) or project (True)
33 34
34 self.statusFilter = None 35 self.statusFilter = None
35 #- not completed (False) or completed (True) 36 # - not completed (False) or completed (True)
36 37
37 self.prioritiesFilter = None 38 self.prioritiesFilter = None
38 #- list of priorities 39 # - list of priorities
39 40
40 def setActive(self, enabled): 41 def setActive(self, enabled):
41 """ 42 """
42 Public method to activate the filter. 43 Public method to activate the filter.
43 44
44 @param enabled flag indicating the activation state (boolean) 45 @param enabled flag indicating the activation state (boolean)
45 """ 46 """
46 self.active = enabled 47 self.active = enabled
47 48
48 def setSummaryFilter(self, filterStr): 49 def setSummaryFilter(self, filterStr):
49 """ 50 """
50 Public method to set the description filter. 51 Public method to set the description filter.
51 52
52 @param filterStr a regular expression for the description filter 53 @param filterStr a regular expression for the description filter
53 to set (string) or None 54 to set (string) or None
54 """ 55 """
55 if not filterStr: 56 if not filterStr:
56 self.summaryFilter = None 57 self.summaryFilter = None
57 else: 58 else:
58 self.summaryFilter = re.compile(filterStr) 59 self.summaryFilter = re.compile(filterStr)
59 60
60 def setFileNameFilter(self, filterStr): 61 def setFileNameFilter(self, filterStr):
61 """ 62 """
62 Public method to set the filename filter. 63 Public method to set the filename filter.
63 64
64 @param filterStr a wildcard expression for the filename filter 65 @param filterStr a wildcard expression for the filename filter
65 to set (string) or None 66 to set (string) or None
66 """ 67 """
67 self.filenameFilter = filterStr 68 self.filenameFilter = filterStr
68 69
69 def setTypeFilter(self, taskType): 70 def setTypeFilter(self, taskType):
70 """ 71 """
71 Public method to set the type filter. 72 Public method to set the type filter.
72 73
73 @param taskType type of the task 74 @param taskType type of the task
74 @type TaskType 75 @type TaskType
75 """ 76 """
76 self.typeFilter = taskType 77 self.typeFilter = taskType
77 78
78 def setScopeFilter(self, scope): 79 def setScopeFilter(self, scope):
79 """ 80 """
80 Public method to set the scope filter. 81 Public method to set the scope filter.
81 82
82 @param scope flag indicating a project task (boolean) or None 83 @param scope flag indicating a project task (boolean) or None
83 """ 84 """
84 self.scopeFilter = scope 85 self.scopeFilter = scope
85 86
86 def setStatusFilter(self, status): 87 def setStatusFilter(self, status):
87 """ 88 """
88 Public method to set the status filter. 89 Public method to set the status filter.
89 90
90 @param status flag indicating a completed task (boolean) or None 91 @param status flag indicating a completed task (boolean) or None
91 """ 92 """
92 self.statusFilter = status 93 self.statusFilter = status
93 94
94 def setPrioritiesFilter(self, priorities): 95 def setPrioritiesFilter(self, priorities):
95 """ 96 """
96 Public method to set the priorities filter. 97 Public method to set the priorities filter.
97 98
98 @param priorities list of task priorities or None 99 @param priorities list of task priorities or None
99 @type list of TaskPriority or None 100 @type list of TaskPriority or None
100 """ 101 """
101 self.prioritiesFilter = priorities 102 self.prioritiesFilter = priorities
102 103
103 def hasActiveFilter(self): 104 def hasActiveFilter(self):
104 """ 105 """
105 Public method to check for active filters. 106 Public method to check for active filters.
106 107
107 @return flag indicating an active filter was found (boolean) 108 @return flag indicating an active filter was found (boolean)
108 """ 109 """
109 return ( 110 return (
110 self.summaryFilter is not None or 111 self.summaryFilter is not None
111 bool(self.filenameFilter) or 112 or bool(self.filenameFilter)
112 self.typeFilter != TaskType.NONE or 113 or self.typeFilter != TaskType.NONE
113 self.scopeFilter is not None or 114 or self.scopeFilter is not None
114 self.statusFilter is not None or 115 or self.statusFilter is not None
115 self.prioritiesFilter is not None 116 or self.prioritiesFilter is not None
116 ) 117 )
117 118
118 def showTask(self, task): 119 def showTask(self, task):
119 """ 120 """
120 Public method to check, if a task should be shown. 121 Public method to check, if a task should be shown.
121 122
122 @param task reference to the task object to check (Task) 123 @param task reference to the task object to check (Task)
123 @return flag indicating whether the task should be shown (boolean) 124 @return flag indicating whether the task should be shown (boolean)
124 """ 125 """
125 if not self.active: 126 if not self.active:
126 return True 127 return True
127 128
128 if ( 129 if self.summaryFilter and self.summaryFilter.search(task.summary) is None:
129 self.summaryFilter and 130 return False
130 self.summaryFilter.search(task.summary) is None 131
132 if self.filenameFilter and not fnmatch.fnmatch(
133 task.filename, self.filenameFilter
131 ): 134 ):
132 return False 135 return False
133 136
137 if self.typeFilter != TaskType.NONE and self.typeFilter != task.taskType:
138 return False
139
140 if self.scopeFilter is not None and self.scopeFilter != task._isProjectTask:
141 return False
142
143 if self.statusFilter is not None and self.statusFilter != task.completed:
144 return False
145
134 if ( 146 if (
135 self.filenameFilter and 147 self.prioritiesFilter is not None
136 not fnmatch.fnmatch(task.filename, self.filenameFilter) 148 and task.priority not in self.prioritiesFilter
137 ): 149 ):
138 return False 150 return False
139 151
140 if (
141 self.typeFilter != TaskType.NONE and
142 self.typeFilter != task.taskType
143 ):
144 return False
145
146 if (
147 self.scopeFilter is not None and
148 self.scopeFilter != task._isProjectTask
149 ):
150 return False
151
152 if (
153 self.statusFilter is not None and
154 self.statusFilter != task.completed
155 ):
156 return False
157
158 if (
159 self.prioritiesFilter is not None and
160 task.priority not in self.prioritiesFilter
161 ):
162 return False
163
164 return True 152 return True

eric ide

mercurial