Helpviewer/Bookmarks/BookmarksModel.py

changeset 2403
e3d7a861547c
parent 2302
f29e9405c851
child 2525
8b507a9a2d40
child 2763
e4794166ad70
equal deleted inserted replaced
2402:304fcefd3b04 2403:e3d7a861547c
7 Module implementing the bookmark model class. 7 Module implementing the bookmark model class.
8 """ 8 """
9 9
10 from PyQt4.QtCore import Qt, QAbstractItemModel, QModelIndex, QUrl, QByteArray, \ 10 from PyQt4.QtCore import Qt, QAbstractItemModel, QModelIndex, QUrl, QByteArray, \
11 QDataStream, QIODevice, QBuffer, QMimeData 11 QDataStream, QIODevice, QBuffer, QMimeData
12
13 from .BookmarkNode import BookmarkNode
14 from .XbelWriter import XbelWriter
15 from .XbelReader import XbelReader
16
17 import Helpviewer.HelpWindow
18 12
19 import UI.PixmapCache 13 import UI.PixmapCache
20 14
21 15
22 class BookmarksModel(QAbstractItemModel): 16 class BookmarksModel(QAbstractItemModel):
162 @return bookmark data 156 @return bookmark data
163 """ 157 """
164 if not index.isValid() or index.model() != self: 158 if not index.isValid() or index.model() != self:
165 return None 159 return None
166 160
161 from .BookmarkNode import BookmarkNode
162
167 bookmarkNode = self.node(index) 163 bookmarkNode = self.node(index)
168 if role in [Qt.EditRole, Qt.DisplayRole]: 164 if role in [Qt.EditRole, Qt.DisplayRole]:
169 if bookmarkNode.type() == BookmarkNode.Separator: 165 if bookmarkNode.type() == BookmarkNode.Separator:
170 if index.column() == 0: 166 if index.column() == 0:
171 return 50 * '\xB7' 167 return 50 * '\xB7'
191 187
192 elif role == Qt.DecorationRole: 188 elif role == Qt.DecorationRole:
193 if index.column() == 0: 189 if index.column() == 0:
194 if bookmarkNode.type() == BookmarkNode.Folder: 190 if bookmarkNode.type() == BookmarkNode.Folder:
195 return UI.PixmapCache.getIcon("dirOpen.png") 191 return UI.PixmapCache.getIcon("dirOpen.png")
192 import Helpviewer.HelpWindow
196 return Helpviewer.HelpWindow.HelpWindow.icon( 193 return Helpviewer.HelpWindow.HelpWindow.icon(
197 QUrl(bookmarkNode.url)) 194 QUrl(bookmarkNode.url))
198 195
199 return None 196 return None
200 197
274 @return flag indicating the presence of children (boolean) 271 @return flag indicating the presence of children (boolean)
275 """ 272 """
276 if not parent.isValid(): 273 if not parent.isValid():
277 return True 274 return True
278 275
276 from .BookmarkNode import BookmarkNode
279 parentNode = self.node(parent) 277 parentNode = self.node(parent)
280 return parentNode.type() == BookmarkNode.Folder 278 return parentNode.type() == BookmarkNode.Folder
281 279
282 def flags(self, index): 280 def flags(self, index):
283 """ 281 """
300 node == self.__bookmarksManager.toolbar(): 298 node == self.__bookmarksManager.toolbar():
301 return flags 299 return flags
302 300
303 flags |= Qt.ItemIsDragEnabled 301 flags |= Qt.ItemIsDragEnabled
304 302
303 from .BookmarkNode import BookmarkNode
305 if (index.column() == 0 and type_ != BookmarkNode.Separator) or \ 304 if (index.column() == 0 and type_ != BookmarkNode.Separator) or \
306 (index.column() == 1 and type_ == BookmarkNode.Bookmark): 305 (index.column() == 1 and type_ == BookmarkNode.Bookmark):
307 flags |= Qt.ItemIsEditable 306 flags |= Qt.ItemIsEditable
308 307
309 return flags 308 return flags
329 Public method to return the mime data. 328 Public method to return the mime data.
330 329
331 @param indexes list of indexes (QModelIndexList) 330 @param indexes list of indexes (QModelIndexList)
332 @return mime data (QMimeData) 331 @return mime data (QMimeData)
333 """ 332 """
333 from .XbelWriter import XbelWriter
334
334 data = QByteArray() 335 data = QByteArray()
335 stream = QDataStream(data, QIODevice.WriteOnly) 336 stream = QDataStream(data, QIODevice.WriteOnly)
336 urls = [] 337 urls = []
337 338
338 for index in indexes: 339 for index in indexes:
374 375
375 if not data.hasFormat(self.MIMETYPE): 376 if not data.hasFormat(self.MIMETYPE):
376 if not data.hasUrls(): 377 if not data.hasUrls():
377 return False 378 return False
378 379
380 from .BookmarkNode import BookmarkNode
379 node = BookmarkNode(BookmarkNode.Bookmark, parentNode) 381 node = BookmarkNode(BookmarkNode.Bookmark, parentNode)
380 node.url = bytes(data.urls()[0].toEncoded()).decode() 382 node.url = bytes(data.urls()[0].toEncoded()).decode()
381 383
382 if data.hasText(): 384 if data.hasText():
383 node.title = data.text() 385 node.title = data.text()
393 return False 395 return False
394 396
395 undoStack = self.__bookmarksManager.undoRedoStack() 397 undoStack = self.__bookmarksManager.undoRedoStack()
396 undoStack.beginMacro("Move Bookmarks") 398 undoStack.beginMacro("Move Bookmarks")
397 399
400 from .XbelReader import XbelReader
398 while not stream.atEnd(): 401 while not stream.atEnd():
399 encodedData = QByteArray() 402 encodedData = QByteArray()
400 stream >> encodedData 403 stream >> encodedData
401 buffer = QBuffer(encodedData) 404 buffer = QBuffer(encodedData)
402 buffer.open(QIODevice.ReadOnly) 405 buffer.open(QIODevice.ReadOnly)

eric ide

mercurial