14 from .XbelReader import XbelReader |
14 from .XbelReader import XbelReader |
15 |
15 |
16 import Helpviewer.HelpWindow |
16 import Helpviewer.HelpWindow |
17 |
17 |
18 import UI.PixmapCache |
18 import UI.PixmapCache |
|
19 |
19 |
20 |
20 class BookmarksModel(QAbstractItemModel): |
21 class BookmarksModel(QAbstractItemModel): |
21 """ |
22 """ |
22 Class implementing the bookmark model. |
23 Class implementing the bookmark model. |
23 """ |
24 """ |
24 TypeRole = Qt.UserRole + 1 |
25 TypeRole = Qt.UserRole + 1 |
25 UrlRole = Qt.UserRole + 2 |
26 UrlRole = Qt.UserRole + 2 |
26 UrlStringRole = Qt.UserRole + 3 |
27 UrlStringRole = Qt.UserRole + 3 |
27 SeparatorRole = Qt.UserRole + 4 |
28 SeparatorRole = Qt.UserRole + 4 |
28 |
29 |
29 MIMETYPE = "application/bookmarks.xbel" |
30 MIMETYPE = "application/bookmarks.xbel" |
30 |
31 |
31 def __init__(self, manager, parent = None): |
32 def __init__(self, manager, parent=None): |
32 """ |
33 """ |
33 Constructor |
34 Constructor |
34 |
35 |
35 @param manager reference to the bookmark manager object (BookmarksManager) |
36 @param manager reference to the bookmark manager object (BookmarksManager) |
36 @param parent reference to the parent object (QObject) |
37 @param parent reference to the parent object (QObject) |
43 manager.entryAdded.connect(self.entryAdded) |
44 manager.entryAdded.connect(self.entryAdded) |
44 manager.entryRemoved.connect(self.entryRemoved) |
45 manager.entryRemoved.connect(self.entryRemoved) |
45 manager.entryChanged.connect(self.entryChanged) |
46 manager.entryChanged.connect(self.entryChanged) |
46 |
47 |
47 self.__headers = [ |
48 self.__headers = [ |
48 self.trUtf8("Title"), |
49 self.trUtf8("Title"), |
49 self.trUtf8("Address"), |
50 self.trUtf8("Address"), |
50 ] |
51 ] |
51 |
52 |
52 def bookmarksManager(self): |
53 def bookmarksManager(self): |
53 """ |
54 """ |
54 Public method to get a reference to the bookmarks manager. |
55 Public method to get a reference to the bookmarks manager. |
107 @param node reference to the bookmark node to change (BookmarkNode) |
108 @param node reference to the bookmark node to change (BookmarkNode) |
108 """ |
109 """ |
109 idx = self.nodeIndex(node) |
110 idx = self.nodeIndex(node) |
110 self.dataChanged.emit(idx, idx) |
111 self.dataChanged.emit(idx, idx) |
111 |
112 |
112 def removeRows(self, row, count, parent = QModelIndex()): |
113 def removeRows(self, row, count, parent=QModelIndex()): |
113 """ |
114 """ |
114 Public method to remove bookmarks from the model. |
115 Public method to remove bookmarks from the model. |
115 |
116 |
116 @param row row of the first bookmark to remove (integer) |
117 @param row row of the first bookmark to remove (integer) |
117 @param count number of bookmarks to remove (integer) |
118 @param count number of bookmarks to remove (integer) |
133 self.__bookmarksManager.undoRedoStack().endMacro() |
134 self.__bookmarksManager.undoRedoStack().endMacro() |
134 self.__endMacro = False |
135 self.__endMacro = False |
135 |
136 |
136 return True |
137 return True |
137 |
138 |
138 def headerData(self, section, orientation, role = Qt.DisplayRole): |
139 def headerData(self, section, orientation, role=Qt.DisplayRole): |
139 """ |
140 """ |
140 Public method to get the header data. |
141 Public method to get the header data. |
141 |
142 |
142 @param section section number (integer) |
143 @param section section number (integer) |
143 @param orientation header orientation (Qt.Orientation) |
144 @param orientation header orientation (Qt.Orientation) |
149 return self.__headers[section] |
150 return self.__headers[section] |
150 except IndexError: |
151 except IndexError: |
151 pass |
152 pass |
152 return QAbstractItemModel.headerData(self, section, orientation, role) |
153 return QAbstractItemModel.headerData(self, section, orientation, role) |
153 |
154 |
154 def data(self, index, role = Qt.DisplayRole): |
155 def data(self, index, role=Qt.DisplayRole): |
155 """ |
156 """ |
156 Public method to get data from the model. |
157 Public method to get data from the model. |
157 |
158 |
158 @param index index of bookmark to get data for (QModelIndex) |
159 @param index index of bookmark to get data for (QModelIndex) |
159 @param role data role (integer) |
160 @param role data role (integer) |
194 return Helpviewer.HelpWindow.HelpWindow.icon( |
195 return Helpviewer.HelpWindow.HelpWindow.icon( |
195 QUrl(bookmarkNode.url)) |
196 QUrl(bookmarkNode.url)) |
196 |
197 |
197 return None |
198 return None |
198 |
199 |
199 def columnCount(self, parent = QModelIndex()): |
200 def columnCount(self, parent=QModelIndex()): |
200 """ |
201 """ |
201 Public method to get the number of columns. |
202 Public method to get the number of columns. |
202 |
203 |
203 @param parent index of parent (QModelIndex) |
204 @param parent index of parent (QModelIndex) |
204 @return number of columns (integer) |
205 @return number of columns (integer) |
206 if parent.column() > 0: |
207 if parent.column() > 0: |
207 return 0 |
208 return 0 |
208 else: |
209 else: |
209 return len(self.__headers) |
210 return len(self.__headers) |
210 |
211 |
211 def rowCount(self, parent = QModelIndex()): |
212 def rowCount(self, parent=QModelIndex()): |
212 """ |
213 """ |
213 Public method to determine the number of rows. |
214 Public method to determine the number of rows. |
214 |
215 |
215 @param parent index of parent (QModelIndex) |
216 @param parent index of parent (QModelIndex) |
216 @return number of rows (integer) |
217 @return number of rows (integer) |
222 return len(self.__bookmarksManager.bookmarks().children()) |
223 return len(self.__bookmarksManager.bookmarks().children()) |
223 |
224 |
224 itm = parent.internalPointer() |
225 itm = parent.internalPointer() |
225 return len(itm.children()) |
226 return len(itm.children()) |
226 |
227 |
227 def index(self, row, column, parent = QModelIndex()): |
228 def index(self, row, column, parent=QModelIndex()): |
228 """ |
229 """ |
229 Public method to get a model index for a node cell. |
230 Public method to get a model index for a node cell. |
230 |
231 |
231 @param row row number (integer) |
232 @param row row number (integer) |
232 @param column column number (integer) |
233 @param column column number (integer) |
238 return QModelIndex() |
239 return QModelIndex() |
239 |
240 |
240 parentNode = self.node(parent) |
241 parentNode = self.node(parent) |
241 return self.createIndex(row, column, parentNode.children()[row]) |
242 return self.createIndex(row, column, parentNode.children()[row]) |
242 |
243 |
243 def parent(self, index = QModelIndex()): |
244 def parent(self, index=QModelIndex()): |
244 """ |
245 """ |
245 Public method to get the index of the parent node. |
246 Public method to get the index of the parent node. |
246 |
247 |
247 @param index index of the child node (QModelIndex) |
248 @param index index of the child node (QModelIndex) |
248 @return index of the parent node (QModelIndex) |
249 @return index of the parent node (QModelIndex) |
262 # get the parent's row |
263 # get the parent's row |
263 grandParentNode = parentNode.parent() |
264 grandParentNode = parentNode.parent() |
264 parentRow = grandParentNode.children().index(parentNode) |
265 parentRow = grandParentNode.children().index(parentNode) |
265 return self.createIndex(parentRow, 0, parentNode) |
266 return self.createIndex(parentRow, 0, parentNode) |
266 |
267 |
267 def hasChildren(self, parent = QModelIndex()): |
268 def hasChildren(self, parent=QModelIndex()): |
268 """ |
269 """ |
269 Public method to check, if a parent node has some children. |
270 Public method to check, if a parent node has some children. |
270 |
271 |
271 @param parent index of the parent node (QModelIndex) |
272 @param parent index of the parent node (QModelIndex) |
272 @return flag indicating the presence of children (boolean) |
273 @return flag indicating the presence of children (boolean) |
407 self.__bookmarksManager.addBookmark(parentNode, bookmarkNode, row) |
408 self.__bookmarksManager.addBookmark(parentNode, bookmarkNode, row) |
408 self.__endMacro = True |
409 self.__endMacro = True |
409 |
410 |
410 return True |
411 return True |
411 |
412 |
412 def setData(self, index, value, role = Qt.EditRole): |
413 def setData(self, index, value, role=Qt.EditRole): |
413 """ |
414 """ |
414 Public method to set the data of a node cell. |
415 Public method to set the data of a node cell. |
415 |
416 |
416 @param index index of the node cell (QModelIndex) |
417 @param index index of the node cell (QModelIndex) |
417 @param value value to be set |
418 @param value value to be set |