src/eric7/WebBrowser/Bookmarks/BookmarksModel.py

branch
eric7
changeset 10436
f6881d10e995
parent 9653
e67609152c5e
child 10439
21c28b0f9e41
equal deleted inserted replaced
10435:c712d09cc839 10436:f6881d10e995
40 40
41 def __init__(self, manager, parent=None): 41 def __init__(self, manager, parent=None):
42 """ 42 """
43 Constructor 43 Constructor
44 44
45 @param manager reference to the bookmark manager object 45 @param manager reference to the bookmarks manager object
46 (BookmarksManager) 46 @type BookmarksManager
47 @param parent reference to the parent object (QObject) 47 @param parent reference to the parent object
48 @type QObject
48 """ 49 """
49 super().__init__(parent) 50 super().__init__(parent)
50 51
51 self.__endMacro = False 52 self.__endMacro = False
52 self.__bookmarksManager = manager 53 self.__bookmarksManager = manager
62 63
63 def bookmarksManager(self): 64 def bookmarksManager(self):
64 """ 65 """
65 Public method to get a reference to the bookmarks manager. 66 Public method to get a reference to the bookmarks manager.
66 67
67 @return reference to the bookmarks manager object (BookmarksManager) 68 @return reference to the bookmarks manager object
69 @rtype BookmarksManager
68 """ 70 """
69 return self.__bookmarksManager 71 return self.__bookmarksManager
70 72
71 def nodeIndex(self, node): 73 def nodeIndex(self, node):
72 """ 74 """
73 Public method to get a model index. 75 Public method to get a model index.
74 76
75 @param node reference to the node to get the index for (BookmarkNode) 77 @param node reference to the node to get the index for
76 @return model index (QModelIndex) 78 @type BookmarkNode
79 @return model index
80 @rtype QModelIndex
77 """ 81 """
78 parent = node.parent() 82 parent = node.parent()
79 if parent is None: 83 if parent is None:
80 return QModelIndex() 84 return QModelIndex()
81 return self.createIndex(parent.children().index(node), 0, node) 85 return self.createIndex(parent.children().index(node), 0, node)
82 86
83 def entryAdded(self, node): 87 def entryAdded(self, node):
84 """ 88 """
85 Public slot to add a bookmark node. 89 Public slot to add a bookmark node.
86 90
87 @param node reference to the bookmark node to add (BookmarkNode) 91 @param node reference to the bookmark node to add
92 @type BookmarkNode
88 """ 93 """
89 if node is None or node.parent() is None: 94 if node is None or node.parent() is None:
90 return 95 return
91 96
92 parent = node.parent() 97 parent = node.parent()
99 104
100 def entryRemoved(self, parent, row, node): 105 def entryRemoved(self, parent, row, node):
101 """ 106 """
102 Public slot to remove a bookmark node. 107 Public slot to remove a bookmark node.
103 108
104 @param parent reference to the parent bookmark node (BookmarkNode) 109 @param parent reference to the parent bookmark node
105 @param row row number of the node (integer) 110 @type BookmarkNode
106 @param node reference to the bookmark node to remove (BookmarkNode) 111 @param row row number of the node
112 @type int
113 @param node reference to the bookmark node to remove
114 @type BookmarkNode
107 """ 115 """
108 # node was already removed, re-add so beginRemoveRows works 116 # node was already removed, re-add so beginRemoveRows works
109 parent.add(node, row) 117 parent.add(node, row)
110 self.beginRemoveRows(self.nodeIndex(parent), row, row) 118 self.beginRemoveRows(self.nodeIndex(parent), row, row)
111 parent.remove(node) 119 parent.remove(node)
113 121
114 def entryChanged(self, node): 122 def entryChanged(self, node):
115 """ 123 """
116 Public method to change a node. 124 Public method to change a node.
117 125
118 @param node reference to the bookmark node to change (BookmarkNode) 126 @param node reference to the bookmark node to change
127 @type BookmarkNode
119 """ 128 """
120 idx = self.nodeIndex(node) 129 idx = self.nodeIndex(node)
121 self.dataChanged.emit(idx, idx) 130 self.dataChanged.emit(idx, idx)
122 131
123 def removeRows(self, row, count, parent=None): 132 def removeRows(self, row, count, parent=None):
124 """ 133 """
125 Public method to remove bookmarks from the model. 134 Public method to remove bookmarks from the model.
126 135
127 @param row row of the first bookmark to remove (integer) 136 @param row row of the first bookmark to remove
128 @param count number of bookmarks to remove (integer) 137 @type int
129 @param parent index of the parent bookmark node (QModelIndex) 138 @param count number of bookmarks to remove
130 @return flag indicating successful removal (boolean) 139 @type int
140 @param parent index of the parent bookmark node
141 @type QModelIndex
142 @return flag indicating successful removal
143 @rtype bool
131 """ 144 """
132 if parent is None: 145 if parent is None:
133 parent = QModelIndex() 146 parent = QModelIndex()
134 147
135 if row < 0 or count <= 0 or row + count > self.rowCount(parent): 148 if row < 0 or count <= 0 or row + count > self.rowCount(parent):
153 166
154 def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole): 167 def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole):
155 """ 168 """
156 Public method to get the header data. 169 Public method to get the header data.
157 170
158 @param section section number (integer) 171 @param section section number
159 @param orientation header orientation (Qt.Orientation) 172 @type int
160 @param role data role (Qt.ItemDataRole) 173 @param orientation header orientation
174 @type Qt.Orientation
175 @param role data role
176 @type Qt.ItemDataRole
161 @return header data 177 @return header data
178 @rtype Any
162 """ 179 """
163 if ( 180 if (
164 orientation == Qt.Orientation.Horizontal 181 orientation == Qt.Orientation.Horizontal
165 and role == Qt.ItemDataRole.DisplayRole 182 and role == Qt.ItemDataRole.DisplayRole
166 ): 183 ):
170 187
171 def data(self, index, role=Qt.ItemDataRole.DisplayRole): 188 def data(self, index, role=Qt.ItemDataRole.DisplayRole):
172 """ 189 """
173 Public method to get data from the model. 190 Public method to get data from the model.
174 191
175 @param index index of bookmark to get data for (QModelIndex) 192 @param index index of bookmark to get data for
176 @param role data role (integer) 193 @type QModelIndex
194 @param role data role
195 @type int
177 @return bookmark data 196 @return bookmark data
197 @rtype Any
178 """ 198 """
179 from .BookmarkNode import BookmarkNode 199 from .BookmarkNode import BookmarkNode
180 200
181 if not index.isValid() or index.model() != self: 201 if not index.isValid() or index.model() != self:
182 return None 202 return None
219 239
220 def columnCount(self, parent=None): 240 def columnCount(self, parent=None):
221 """ 241 """
222 Public method to get the number of columns. 242 Public method to get the number of columns.
223 243
224 @param parent index of parent (QModelIndex) 244 @param parent index of parent
225 @return number of columns (integer) 245 @type QModelIndex
246 @return number of columns
247 @rtype int
226 """ 248 """
227 if parent is None: 249 if parent is None:
228 parent = QModelIndex() 250 parent = QModelIndex()
229 251
230 if parent.column() > 0: 252 if parent.column() > 0:
234 256
235 def rowCount(self, parent=None): 257 def rowCount(self, parent=None):
236 """ 258 """
237 Public method to determine the number of rows. 259 Public method to determine the number of rows.
238 260
239 @param parent index of parent (QModelIndex) 261 @param parent index of parent
240 @return number of rows (integer) 262 @type QModelIndex
263 @return number of rows
264 @rtype int
241 """ 265 """
242 if parent is None: 266 if parent is None:
243 parent = QModelIndex() 267 parent = QModelIndex()
244 268
245 if parent.column() > 0: 269 if parent.column() > 0:
253 277
254 def index(self, row, column, parent=None): 278 def index(self, row, column, parent=None):
255 """ 279 """
256 Public method to get a model index for a node cell. 280 Public method to get a model index for a node cell.
257 281
258 @param row row number (integer) 282 @param row row number
259 @param column column number (integer) 283 @type int
260 @param parent index of the parent (QModelIndex) 284 @param column column number
261 @return index (QModelIndex) 285 @type int
286 @param parent index of the parent
287 @type QModelIndex
288 @return index
289 @rtype QModelIndex
262 """ 290 """
263 if parent is None: 291 if parent is None:
264 parent = QModelIndex() 292 parent = QModelIndex()
265 293
266 if ( 294 if (
276 304
277 def parent(self, index=None): 305 def parent(self, index=None):
278 """ 306 """
279 Public method to get the index of the parent node. 307 Public method to get the index of the parent node.
280 308
281 @param index index of the child node (QModelIndex) 309 @param index index of the child node
282 @return index of the parent node (QModelIndex) 310 @type QModelIndex
311 @return index of the parent node
312 @rtype QModelIndex
283 """ 313 """
284 if index is None: 314 if index is None:
285 index = QModelIndex() 315 index = QModelIndex()
286 316
287 if not index.isValid(): 317 if not index.isValid():
300 330
301 def hasChildren(self, parent=None): 331 def hasChildren(self, parent=None):
302 """ 332 """
303 Public method to check, if a parent node has some children. 333 Public method to check, if a parent node has some children.
304 334
305 @param parent index of the parent node (QModelIndex) 335 @param parent index of the parent node
306 @return flag indicating the presence of children (boolean) 336 @type QModelIndex
337 @return flag indicating the presence of children
338 @rtype bool
307 """ 339 """
308 from .BookmarkNode import BookmarkNode 340 from .BookmarkNode import BookmarkNode
309 341
310 if parent is None: 342 if parent is None:
311 parent = QModelIndex() 343 parent = QModelIndex()
318 350
319 def flags(self, index): 351 def flags(self, index):
320 """ 352 """
321 Public method to get flags for a node cell. 353 Public method to get flags for a node cell.
322 354
323 @param index index of the node cell (QModelIndex) 355 @param index index of the node cell
324 @return flags (Qt.ItemFlags) 356 @type QModelIndex
357 @return flags
358 @rtype Qt.ItemFlags
325 """ 359 """
326 from .BookmarkNode import BookmarkNode 360 from .BookmarkNode import BookmarkNode
327 361
328 if not index.isValid(): 362 if not index.isValid():
329 return Qt.ItemFlag.NoItemFlags 363 return Qt.ItemFlag.NoItemFlags
349 383
350 def supportedDropActions(self): 384 def supportedDropActions(self):
351 """ 385 """
352 Public method to report the supported drop actions. 386 Public method to report the supported drop actions.
353 387
354 @return supported drop actions (Qt.DropAction) 388 @return supported drop actions
389 @rtype Qt.DropAction
355 """ 390 """
356 return Qt.DropAction.CopyAction | Qt.DropAction.MoveAction 391 return Qt.DropAction.CopyAction | Qt.DropAction.MoveAction
357 392
358 def mimeTypes(self): 393 def mimeTypes(self):
359 """ 394 """
360 Public method to report the supported mime types. 395 Public method to report the supported mime types.
361 396
362 @return supported mime types (list of strings) 397 @return supported mime types
398 @rtype list of str
363 """ 399 """
364 return [self.MIMETYPE, "text/uri-list"] 400 return [self.MIMETYPE, "text/uri-list"]
365 401
366 def mimeData(self, indexes): 402 def mimeData(self, indexes):
367 """ 403 """
368 Public method to return the mime data. 404 Public method to return the mime data.
369 405
370 @param indexes list of indexes (QModelIndexList) 406 @param indexes list of indexes
371 @return mime data (QMimeData) 407 @type QModelIndexList
408 @return mime data
409 @rtype QMimeData
372 """ 410 """
373 from .XbelWriter import XbelWriter 411 from .XbelWriter import XbelWriter
374 412
375 data = QByteArray() 413 data = QByteArray()
376 stream = QDataStream(data, QIODevice.OpenModeFlag.WriteOnly) 414 stream = QDataStream(data, QIODevice.OpenModeFlag.WriteOnly)
396 434
397 def dropMimeData(self, data, action, row, column, parent): 435 def dropMimeData(self, data, action, row, column, parent):
398 """ 436 """
399 Public method to accept the mime data of a drop action. 437 Public method to accept the mime data of a drop action.
400 438
401 @param data reference to the mime data (QMimeData) 439 @param data reference to the mime data
402 @param action drop action requested (Qt.DropAction) 440 @type QMimeData
403 @param row row number (integer) 441 @param action drop action requested
404 @param column column number (integer) 442 @type Qt.DropAction
405 @param parent index of the parent node (QModelIndex) 443 @param row row number
406 @return flag indicating successful acceptance of the data (boolean) 444 @type int
445 @param column column number
446 @type int
447 @param parent index of the parent node
448 @type QModelIndex
449 @return flag indicating successful acceptance of the data
450 @rtype bool
407 """ 451 """
408 from .BookmarkNode import BookmarkNode 452 from .BookmarkNode import BookmarkNode
409 from .XbelReader import XbelReader 453 from .XbelReader import XbelReader
410 454
411 if action == Qt.DropAction.IgnoreAction: 455 if action == Qt.DropAction.IgnoreAction:
457 501
458 def setData(self, index, value, role=Qt.ItemDataRole.EditRole): 502 def setData(self, index, value, role=Qt.ItemDataRole.EditRole):
459 """ 503 """
460 Public method to set the data of a node cell. 504 Public method to set the data of a node cell.
461 505
462 @param index index of the node cell (QModelIndex) 506 @param index index of the node cell
507 @type QModelIndex
463 @param value value to be set 508 @param value value to be set
464 @param role role of the data (integer) 509 @type Any
465 @return flag indicating success (boolean) 510 @param role role of the data
511 @type int
512 @return flag indicating success
513 @rtype bool
466 """ 514 """
467 if not index.isValid() or (self.flags(index) & Qt.ItemFlag.ItemIsEditable) == 0: 515 if not index.isValid() or (self.flags(index) & Qt.ItemFlag.ItemIsEditable) == 0:
468 return False 516 return False
469 517
470 item = self.node(index) 518 item = self.node(index)
493 541
494 def node(self, index): 542 def node(self, index):
495 """ 543 """
496 Public method to get a bookmark node given its index. 544 Public method to get a bookmark node given its index.
497 545
498 @param index index of the node (QModelIndex) 546 @param index index of the node
499 @return bookmark node (BookmarkNode) 547 @type QModelIndex
548 @return bookmark node
549 @rtype BookmarkNode
500 """ 550 """
501 itemNode = index.internalPointer() 551 itemNode = index.internalPointer()
502 if itemNode is None: 552 if itemNode is None:
503 return self.__bookmarksManager.bookmarks() 553 return self.__bookmarksManager.bookmarks()
504 else: 554 else:

eric ide

mercurial