WebBrowser/QtHelp/QtHelpFiltersDialog.py

changeset 5605
1950fe1a32c4
parent 5389
9b1c800daff3
child 6048
82ad8ec9548c
equal deleted inserted replaced
5604:b047181a4a33 5605:1950fe1a32c4
41 self.__engine = engine 41 self.__engine = engine
42 42
43 self.filtersList.clear() 43 self.filtersList.clear()
44 self.attributesList.clear() 44 self.attributesList.clear()
45 45
46 help = QHelpEngineCore(self.__engine.collectionFile()) 46 helpEngineCore = QHelpEngineCore(self.__engine.collectionFile())
47 help.setupData() 47 helpEngineCore.setupData()
48 48
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 help.customFilters(): 54 for customFilter in helpEngineCore.customFilters():
55 atts = help.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 help.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)
64 64
65 if self.__filterMap: 65 if self.__filterMap:
66 self.filtersList.setCurrentRow(0) 66 self.filtersList.setCurrentRow(0)
101 @param column column containing the change (integer) 101 @param column column containing the change (integer)
102 """ 102 """
103 if self.filtersList.currentItem() is None: 103 if self.filtersList.currentItem() is None:
104 return 104 return
105 105
106 filter = self.filtersList.currentItem().text() 106 customFilter = self.filtersList.currentItem().text()
107 if filter not in self.__filterMap: 107 if customFilter not in self.__filterMap:
108 return 108 return
109 109
110 newAtts = [] 110 newAtts = []
111 for index in range(0, self.attributesList.topLevelItemCount()): 111 for index in range(0, self.attributesList.topLevelItemCount()):
112 itm = self.attributesList.topLevelItem(index) 112 itm = self.attributesList.topLevelItem(index)
113 if itm.checkState(0) == Qt.Checked: 113 if itm.checkState(0) == Qt.Checked:
114 newAtts.append(itm.text(0)) 114 newAtts.append(itm.text(0))
115 self.__filterMap[filter] = newAtts 115 self.__filterMap[customFilter] = newAtts
116 116
117 @pyqtSlot() 117 @pyqtSlot()
118 def on_attributesList_itemSelectionChanged(self): 118 def on_attributesList_itemSelectionChanged(self):
119 """ 119 """
120 Private slot handling the selection of attributes. 120 Private slot handling the selection of attributes.
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:

eric ide

mercurial