6 """ |
6 """ |
7 Module implementing the bookmark model class. |
7 Module implementing the bookmark model class. |
8 """ |
8 """ |
9 |
9 |
10 |
10 |
11 from PyQt5.QtCore import Qt, QAbstractItemModel, QModelIndex, QUrl, \ |
11 from PyQt5.QtCore import ( |
12 QByteArray, QDataStream, QIODevice, QBuffer, QMimeData |
12 Qt, QAbstractItemModel, QModelIndex, QUrl, QByteArray, QDataStream, |
|
13 QIODevice, QBuffer, QMimeData |
|
14 ) |
13 |
15 |
14 import UI.PixmapCache |
16 import UI.PixmapCache |
15 |
17 |
16 |
18 |
17 class BookmarksModel(QAbstractItemModel): |
19 class BookmarksModel(QAbstractItemModel): |
124 return False |
126 return False |
125 |
127 |
126 bookmarkNode = self.node(parent) |
128 bookmarkNode = self.node(parent) |
127 children = bookmarkNode.children()[row:(row + count)] |
129 children = bookmarkNode.children()[row:(row + count)] |
128 for node in children: |
130 for node in children: |
129 if node == self.__bookmarksManager.menu() or \ |
131 if ( |
130 node == self.__bookmarksManager.toolbar(): |
132 node == self.__bookmarksManager.menu() or |
|
133 node == self.__bookmarksManager.toolbar() |
|
134 ): |
131 continue |
135 continue |
132 self.__bookmarksManager.removeBookmark(node) |
136 self.__bookmarksManager.removeBookmark(node) |
133 |
137 |
134 if self.__endMacro: |
138 if self.__endMacro: |
135 self.__bookmarksManager.undoRedoStack().endMacro() |
139 self.__bookmarksManager.undoRedoStack().endMacro() |
248 @return index (QModelIndex) |
252 @return index (QModelIndex) |
249 """ |
253 """ |
250 if parent is None: |
254 if parent is None: |
251 parent = QModelIndex() |
255 parent = QModelIndex() |
252 |
256 |
253 if row < 0 or column < 0 or \ |
257 if ( |
254 row >= self.rowCount(parent) or column >= self.columnCount(parent): |
258 row < 0 or |
|
259 column < 0 or |
|
260 row >= self.rowCount(parent) or |
|
261 column >= self.columnCount(parent) |
|
262 ): |
255 return QModelIndex() |
263 return QModelIndex() |
256 |
264 |
257 parentNode = self.node(parent) |
265 parentNode = self.node(parent) |
258 return self.createIndex(row, column, parentNode.children()[row]) |
266 return self.createIndex(row, column, parentNode.children()[row]) |
259 |
267 |
274 if itemNode is None: |
282 if itemNode is None: |
275 parentNode = None |
283 parentNode = None |
276 else: |
284 else: |
277 parentNode = itemNode.parent() |
285 parentNode = itemNode.parent() |
278 |
286 |
279 if parentNode is None or \ |
287 if ( |
280 parentNode == self.__bookmarksManager.bookmarks(): |
288 parentNode is None or |
|
289 parentNode == self.__bookmarksManager.bookmarks() |
|
290 ): |
281 return QModelIndex() |
291 return QModelIndex() |
282 |
292 |
283 # get the parent's row |
293 # get the parent's row |
284 grandParentNode = parentNode.parent() |
294 grandParentNode = parentNode.parent() |
285 parentRow = grandParentNode.children().index(parentNode) |
295 parentRow = grandParentNode.children().index(parentNode) |
317 flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled |
327 flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled |
318 |
328 |
319 if self.hasChildren(index): |
329 if self.hasChildren(index): |
320 flags |= Qt.ItemIsDropEnabled |
330 flags |= Qt.ItemIsDropEnabled |
321 |
331 |
322 if node == self.__bookmarksManager.menu() or \ |
332 if ( |
323 node == self.__bookmarksManager.toolbar(): |
333 node == self.__bookmarksManager.menu() or |
|
334 node == self.__bookmarksManager.toolbar() |
|
335 ): |
324 return flags |
336 return flags |
325 |
337 |
326 flags |= Qt.ItemIsDragEnabled |
338 flags |= Qt.ItemIsDragEnabled |
327 |
339 |
328 from .BookmarkNode import BookmarkNode |
340 from .BookmarkNode import BookmarkNode |
329 if (index.column() == 0 and type_ != BookmarkNode.Separator) or \ |
341 if ( |
330 (index.column() == 1 and type_ == BookmarkNode.Bookmark): |
342 (index.column() == 0 and type_ != BookmarkNode.Separator) or |
|
343 (index.column() == 1 and type_ == BookmarkNode.Bookmark) |
|
344 ): |
331 flags |= Qt.ItemIsEditable |
345 flags |= Qt.ItemIsEditable |
332 |
346 |
333 return flags |
347 return flags |
334 |
348 |
335 def supportedDropActions(self): |
349 def supportedDropActions(self): |