Helpviewer/AdBlock/AdBlockModel.py

changeset 483
ca7d8599a575
parent 13
1af94a91f439
child 791
9ec2ac20e54e
equal deleted inserted replaced
482:4650a72c307a 483:ca7d8599a575
23 @param parent reference to the parent object (QObject) 23 @param parent reference to the parent object (QObject)
24 """ 24 """
25 QAbstractItemModel.__init__(self, parent) 25 QAbstractItemModel.__init__(self, parent)
26 26
27 self.__manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() 27 self.__manager = Helpviewer.HelpWindow.HelpWindow.adblockManager()
28 self.connect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) 28 self.__manager.rulesChanged.connect(self.__rulesChanged)
29 29
30 def __rulesChanged(self): 30 def __rulesChanged(self):
31 """ 31 """
32 Private slot to handle changes in rules. 32 Private slot to handle changes in rules.
33 """ 33 """
228 """ 228 """
229 if row < 0 or count <= 0 or row + count > self.rowCount(parent): 229 if row < 0 or count <= 0 or row + count > self.rowCount(parent):
230 return False 230 return False
231 231
232 if not parent.isValid(): 232 if not parent.isValid():
233 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), 233 self.__manager.rulesChanged.disconnect(self.__rulesChanged)
234 self.__rulesChanged)
235 self.beginRemoveRows(QModelIndex(), row, row + count - 1) 234 self.beginRemoveRows(QModelIndex(), row, row + count - 1)
236 for subscription in self.__manager.subscriptions()[row:row + count]: 235 for subscription in self.__manager.subscriptions()[row:row + count]:
237 self.__manager.removeSubscription(subscription) 236 self.__manager.removeSubscription(subscription)
238 self.endRemoveRows() 237 self.endRemoveRows()
239 self.connect(self.__manager, SIGNAL("rulesChanged()"), 238 self.__manager.rulesChanged.connect(self.__rulesChanged)
240 self.__rulesChanged)
241 return True 239 return True
242 else: 240 else:
243 sub = self.subscription(parent) 241 sub = self.subscription(parent)
244 if sub is not None: 242 if sub is not None:
245 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), 243 self.__manager.rulesChanged.disconnect(self.__rulesChanged)
246 self.__rulesChanged)
247 self.beginRemoveRows(parent, row, row + count - 1) 244 self.beginRemoveRows(parent, row, row + count - 1)
248 for i in reversed(list(range(row, row + count))): 245 for i in reversed(list(range(row, row + count))):
249 sub.removeRule(i) 246 sub.removeRule(i)
250 self.endRemoveRows() 247 self.endRemoveRows()
251 self.connect(self.__manager, SIGNAL("rulesChanged()"), 248 self.__manager.rulesChanged.connect(self.__rulesChanged)
252 self.__rulesChanged)
253 return True 249 return True
254 250
255 return False 251 return False
256 252
257 def setData(self, index, value, role = Qt.EditRole): 253 def setData(self, index, value, role = Qt.EditRole):
267 index.model() != self or \ 263 index.model() != self or \
268 index.column() != 0 or \ 264 index.column() != 0 or \
269 (self.flags(index) & Qt.ItemIsEditable) == 0: 265 (self.flags(index) & Qt.ItemIsEditable) == 0:
270 return False 266 return False
271 267
272 self.disconnect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) 268 self.__manager.rulesChanged.disconnect(self.__rulesChanged)
273 changed = False 269 changed = False
274 270
275 if role in [Qt.EditRole, Qt.DisplayRole]: 271 if role in [Qt.EditRole, Qt.DisplayRole]:
276 if index.parent().isValid(): 272 if index.parent().isValid():
277 sub = self.subscription(index.parent()) 273 sub = self.subscription(index.parent())
278 if sub is not None: 274 if sub is not None:
279 r = self.rule(index) 275 r = self.rule(index)
280 r.setFilter(value) 276 r.setFilter(value)
281 sub.replaceRule(r, index.row()) 277 sub.replaceRule(r, index.row())
282 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), 278 self.dataChanged.emit(index, index)
283 index, index)
284 changed = True 279 changed = True
285 else: 280 else:
286 sub = self.subscription(index) 281 sub = self.subscription(index)
287 if sub is not None: 282 if sub is not None:
288 sub.setTitle(value) 283 sub.setTitle(value)
289 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), 284 self.dataChanged.emit(index, index)
290 index, index)
291 changed = True 285 changed = True
292 286
293 elif role == Qt.CheckStateRole: 287 elif role == Qt.CheckStateRole:
294 if index.parent().isValid(): 288 if index.parent().isValid():
295 sub = self.subscription(index.parent()) 289 sub = self.subscription(index.parent())
296 if sub is not None: 290 if sub is not None:
297 r = self.rule(index) 291 r = self.rule(index)
298 r.setEnabled(value == Qt.Checked) 292 r.setEnabled(value == Qt.Checked)
299 sub.replaceRule(r, index.row()) 293 sub.replaceRule(r, index.row())
300 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), 294 self.dataChanged.emit(index, index)
301 index, index)
302 changed = True 295 changed = True
303 else: 296 else:
304 sub = self.subscription(index) 297 sub = self.subscription(index)
305 if sub is not None: 298 if sub is not None:
306 sub.setEnabled(value == Qt.Checked) 299 sub.setEnabled(value == Qt.Checked)
307 self.emit(SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), 300 self.dataChanged.emit(index, index)
308 index, index)
309 changed = True 301 changed = True
310 302
311 self.connect(self.__manager, SIGNAL("rulesChanged()"), self.__rulesChanged) 303 self.__manager.rulesChanged.connect(self.__rulesChanged)
312 return changed 304 return changed
313 305
314 def hasChildren(self, parent = QModelIndex()): 306 def hasChildren(self, parent = QModelIndex()):
315 """ 307 """
316 Public method to check, if a parent node has some children. 308 Public method to check, if a parent node has some children.

eric ide

mercurial