eric6/Tasks/TaskFilter.py

changeset 7775
4a1db75550bd
parent 7360
9190402e4505
child 7923
91e843545d9a
equal deleted inserted replaced
7774:9eed155411f0 7775:4a1db75550bd
5 5
6 """ 6 """
7 Module implementing a class to store task data. 7 Module implementing a class to store task data.
8 """ 8 """
9 9
10 10 import fnmatch
11 from PyQt5.QtCore import QRegExp 11 import re
12 12
13 from .Task import Task 13 from .Task import Task
14 14
15 15
16 class TaskFilter(object): 16 class TaskFilter(object):
22 Constructor 22 Constructor
23 """ 23 """
24 self.active = False 24 self.active = False
25 25
26 self.summaryFilter = None 26 self.summaryFilter = None
27 self.filenameFilter = None 27 self.filenameFilter = ""
28 self.typeFilter = Task.TypeNone 28 self.typeFilter = Task.TypeNone
29 # task type 29 # task type
30 30
31 self.scopeFilter = None 31 self.scopeFilter = None
32 ## global (False) or project (True) 32 ## global (False) or project (True)
53 to set (string) or None 53 to set (string) or None
54 """ 54 """
55 if not filterStr: 55 if not filterStr:
56 self.summaryFilter = None 56 self.summaryFilter = None
57 else: 57 else:
58 self.summaryFilter = QRegExp(filterStr) 58 self.summaryFilter = re.compile(filterStr)
59 59
60 def setFileNameFilter(self, filterStr): 60 def setFileNameFilter(self, filterStr):
61 """ 61 """
62 Public method to set the filename filter. 62 Public method to set the filename filter.
63 63
64 @param filterStr a wildcard expression for the filename filter 64 @param filterStr a wildcard expression for the filename filter
65 to set (string) or None 65 to set (string) or None
66 """ 66 """
67 if not filterStr: 67 self.filenameFilter = filterStr
68 self.filenameFilter = None
69 else:
70 self.filenameFilter = QRegExp(filterStr)
71 self.filenameFilter.setPatternSyntax(QRegExp.Wildcard)
72 68
73 def setTypeFilter(self, taskType): 69 def setTypeFilter(self, taskType):
74 """ 70 """
75 Public method to set the type filter. 71 Public method to set the type filter.
76 72
109 105
110 @return flag indicating an active filter was found (boolean) 106 @return flag indicating an active filter was found (boolean)
111 """ 107 """
112 return ( 108 return (
113 self.summaryFilter is not None or 109 self.summaryFilter is not None or
114 self.filenameFilter is not None or 110 bool(self.filenameFilter) or
115 self.typeFilter != Task.TypeNone or 111 self.typeFilter != Task.TypeNone or
116 self.scopeFilter is not None or 112 self.scopeFilter is not None or
117 self.statusFilter is not None or 113 self.statusFilter is not None or
118 self.prioritiesFilter is not None 114 self.prioritiesFilter is not None
119 ) 115 )
128 if not self.active: 124 if not self.active:
129 return True 125 return True
130 126
131 if ( 127 if (
132 self.summaryFilter and 128 self.summaryFilter and
133 self.summaryFilter.indexIn(task.summary) == -1 129 self.summaryFilter.search(task.summary) is None
134 ): 130 ):
135 return False 131 return False
136 132
137 if ( 133 if (
138 self.filenameFilter and 134 self.filenameFilter and
139 not self.filenameFilter.exactMatch(task.filename) 135 not fnmatch.fnmatch(task.filename, self.filenameFilter)
140 ): 136 ):
141 return False 137 return False
142 138
143 if ( 139 if (
144 self.typeFilter != Task.TypeNone and 140 self.typeFilter != Task.TypeNone and

eric ide

mercurial