49 self.__removedFilters = [] |
49 self.__removedFilters = [] |
50 self.__filterMap = {} |
50 self.__filterMap = {} |
51 self.__filterMapBackup = {} |
51 self.__filterMapBackup = {} |
52 self.__removedAttributes = [] |
52 self.__removedAttributes = [] |
53 |
53 |
54 for filter in helpEngineCore.customFilters(): |
54 for customFilter in helpEngineCore.customFilters(): |
55 atts = helpEngineCore.filterAttributes(filter) |
55 atts = helpEngineCore.filterAttributes(customFilter) |
56 self.__filterMapBackup[filter] = atts |
56 self.__filterMapBackup[customFilter] = atts |
57 if filter not in self.__filterMap: |
57 if customFilter not in self.__filterMap: |
58 self.__filterMap[filter] = atts |
58 self.__filterMap[customFilter] = atts |
59 |
59 |
60 self.filtersList.addItems(sorted(self.__filterMap.keys())) |
60 self.filtersList.addItems(sorted(self.__filterMap.keys())) |
61 for attr in helpEngineCore.filterAttributes(): |
61 for attr in helpEngineCore.filterAttributes(): |
62 QTreeWidgetItem(self.attributesList, [attr]) |
62 QTreeWidgetItem(self.attributesList, [attr]) |
63 self.attributesList.sortItems(0, Qt.AscendingOrder) |
63 self.attributesList.sortItems(0, Qt.AscendingOrder) |
125 @pyqtSlot() |
125 @pyqtSlot() |
126 def on_addButton_clicked(self): |
126 def on_addButton_clicked(self): |
127 """ |
127 """ |
128 Private slot to add a new filter. |
128 Private slot to add a new filter. |
129 """ |
129 """ |
130 filter, ok = QInputDialog.getText( |
130 customFilter, ok = QInputDialog.getText( |
131 None, |
131 None, |
132 self.tr("Add Filter"), |
132 self.tr("Add Filter"), |
133 self.tr("Filter name:"), |
133 self.tr("Filter name:"), |
134 QLineEdit.Normal) |
134 QLineEdit.Normal) |
135 if not filter: |
135 if not customFilter: |
136 return |
136 return |
137 |
137 |
138 if filter not in self.__filterMap: |
138 if customFilter not in self.__filterMap: |
139 self.__filterMap[filter] = [] |
139 self.__filterMap[customFilter] = [] |
140 self.filtersList.addItem(filter) |
140 self.filtersList.addItem(customFilter) |
141 |
141 |
142 itm = self.filtersList.findItems(filter, Qt.MatchCaseSensitive)[0] |
142 itm = self.filtersList.findItems( |
|
143 customFilter, Qt.MatchCaseSensitive)[0] |
143 self.filtersList.setCurrentItem(itm) |
144 self.filtersList.setCurrentItem(itm) |
144 |
145 |
145 @pyqtSlot() |
146 @pyqtSlot() |
146 def on_removeButton_clicked(self): |
147 def on_removeButton_clicked(self): |
147 """ |
148 """ |
191 if itm is None: |
192 if itm is None: |
192 continue |
193 continue |
193 |
194 |
194 attr = itm.text(0) |
195 attr = itm.text(0) |
195 self.__removedAttributes.append(attr) |
196 self.__removedAttributes.append(attr) |
196 for filter in self.__filterMap: |
197 for customFilter in self.__filterMap: |
197 if attr in self.__filterMap[filter]: |
198 if attr in self.__filterMap[customFilter]: |
198 self.__filterMap[filter].remove(attr) |
199 self.__filterMap[customFilter].remove(attr) |
199 |
200 |
200 del itm |
201 del itm |
201 |
202 |
202 @pyqtSlot() |
203 @pyqtSlot() |
203 def on_unusedAttributesButton_clicked(self): |
204 def on_unusedAttributesButton_clicked(self): |
204 """ |
205 """ |
205 Private slot to select all unused attributes. |
206 Private slot to select all unused attributes. |
206 """ |
207 """ |
207 # step 1: determine all used attributes |
208 # step 1: determine all used attributes |
208 attributes = set() |
209 attributes = set() |
209 for filter in self.__filterMap: |
210 for customFilter in self.__filterMap: |
210 attributes |= set(self.__filterMap[filter]) |
211 attributes |= set(self.__filterMap[customFilter]) |
211 |
212 |
212 # step 2: select all unused attribute items |
213 # step 2: select all unused attribute items |
213 self.attributesList.clearSelection() |
214 self.attributesList.clearSelection() |
214 for row in range(self.attributesList.topLevelItemCount()): |
215 for row in range(self.attributesList.topLevelItemCount()): |
215 itm = self.attributesList.topLevelItem(row) |
216 itm = self.attributesList.topLevelItem(row) |
239 """ |
240 """ |
240 filtersChanged = False |
241 filtersChanged = False |
241 if len(self.__filterMapBackup) != len(self.__filterMap): |
242 if len(self.__filterMapBackup) != len(self.__filterMap): |
242 filtersChanged = True |
243 filtersChanged = True |
243 else: |
244 else: |
244 for filter in self.__filterMapBackup: |
245 for customFilter in self.__filterMapBackup: |
245 if filter not in self.__filterMap: |
246 if customFilter not in self.__filterMap: |
246 filtersChanged = True |
247 filtersChanged = True |
247 else: |
248 else: |
248 oldFilterAtts = self.__filterMapBackup[filter] |
249 oldFilterAtts = self.__filterMapBackup[customFilter] |
249 newFilterAtts = self.__filterMap[filter] |
250 newFilterAtts = self.__filterMap[customFilter] |
250 if len(oldFilterAtts) != len(newFilterAtts): |
251 if len(oldFilterAtts) != len(newFilterAtts): |
251 filtersChanged = True |
252 filtersChanged = True |
252 else: |
253 else: |
253 for attr in oldFilterAtts: |
254 for attr in oldFilterAtts: |
254 if attr not in newFilterAtts: |
255 if attr not in newFilterAtts: |
257 |
258 |
258 if filtersChanged: |
259 if filtersChanged: |
259 break |
260 break |
260 |
261 |
261 if filtersChanged: |
262 if filtersChanged: |
262 for filter in self.__removedFilters: |
263 for customFilter in self.__removedFilters: |
263 self.__engine.removeCustomFilter(filter) |
264 self.__engine.removeCustomFilter(customFilter) |
264 for filter in self.__filterMap: |
265 for customFilter in self.__filterMap: |
265 self.__engine.addCustomFilter(filter, self.__filterMap[filter]) |
266 self.__engine.addCustomFilter( |
|
267 customFilter, self.__filterMap[customFilter]) |
266 |
268 |
267 if self.__removedAttributes: |
269 if self.__removedAttributes: |
268 self.__removeAttributes() |
270 self.__removeAttributes() |
269 |
271 |
270 if filtersChanged or self.__removedAttributes: |
272 if filtersChanged or self.__removedAttributes: |