Helpviewer/Feeds/FeedsManager.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2525
8b507a9a2d40
parent 3002
6ffc581f00f1
child 3058
0a02c433f52d
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
12 str = unicode 12 str = unicode
13 except (NameError): 13 except (NameError):
14 pass 14 pass
15 15
16 from PyQt4.QtCore import pyqtSlot, pyqtSignal, Qt, QUrl, QXmlStreamReader 16 from PyQt4.QtCore import pyqtSlot, pyqtSignal, Qt, QUrl, QXmlStreamReader
17 from PyQt4.QtGui import QDialog, QIcon, QTreeWidgetItem, QMenu, QCursor, QApplication 17 from PyQt4.QtGui import QDialog, QIcon, QTreeWidgetItem, QMenu, QCursor, \
18 QApplication
18 from PyQt4.QtNetwork import QNetworkRequest, QNetworkReply 19 from PyQt4.QtNetwork import QNetworkRequest, QNetworkReply
19 from PyQt4.QtWebKit import QWebSettings 20 from PyQt4.QtWebKit import QWebSettings
20 21
21 from E5Gui import E5MessageBox 22 from E5Gui import E5MessageBox
22 23
90 if feed[0] == urlString: 91 if feed[0] == urlString:
91 return False 92 return False
92 93
93 # step 2: add the feed 94 # step 2: add the feed
94 if icon.isNull() or \ 95 if icon.isNull() or \
95 icon == QIcon(QWebSettings.webGraphic(QWebSettings.DefaultFrameIconGraphic)): 96 icon == QIcon(QWebSettings.webGraphic(
97 QWebSettings.DefaultFrameIconGraphic)):
96 icon = UI.PixmapCache.getIcon("rss16.png") 98 icon = UI.PixmapCache.getIcon("rss16.png")
97 feed = (urlString, title, icon) 99 feed = (urlString, title, icon)
98 self.__feeds.append(feed) 100 self.__feeds.append(feed)
99 self.__addFeedItem(feed) 101 self.__addFeedItem(feed)
100 self.__save() 102 self.__save()
176 urlString, title = dlg.getData() 178 urlString, title = dlg.getData()
177 for feed in self.__feeds: 179 for feed in self.__feeds:
178 if feed[0] == urlString: 180 if feed[0] == urlString:
179 E5MessageBox.critical(self, 181 E5MessageBox.critical(self,
180 self.trUtf8("Duplicate Feed URL"), 182 self.trUtf8("Duplicate Feed URL"),
181 self.trUtf8("""A feed with the URL {0} exists already.""" 183 self.trUtf8(
182 """ Aborting...""".format(urlString))) 184 """A feed with the URL {0} exists already."""
185 """ Aborting...""".format(urlString)))
183 return 186 return
184 187
185 self.__feeds[feedIndex] = (urlString, title, feedToChange[2]) 188 self.__feeds[feedIndex] = (urlString, title, feedToChange[2])
186 self.__save() 189 self.__save()
187 190
197 itm = self.feedsTree.selectedItems()[0] 200 itm = self.feedsTree.selectedItems()[0]
198 title = itm.text(0) 201 title = itm.text(0)
199 res = E5MessageBox.yesNo(self, 202 res = E5MessageBox.yesNo(self,
200 self.trUtf8("Delete Feed"), 203 self.trUtf8("Delete Feed"),
201 self.trUtf8( 204 self.trUtf8(
202 """<p>Do you really want to delete the feed <b>{0}</b>?</p>""".format( 205 """<p>Do you really want to delete the feed"""
203 title))) 206 """ <b>{0}</b>?</p>""".format(title)))
204 if res: 207 if res:
205 urlString = itm.data(0, FeedsManager.UrlStringRole) 208 urlString = itm.data(0, FeedsManager.UrlStringRole)
206 if urlString: 209 if urlString:
207 feedToDelete = None 210 feedToDelete = None
208 for feed in self.__feeds: 211 for feed in self.__feeds:
253 for child in itm.takeChildren(): 256 for child in itm.takeChildren():
254 del child 257 del child
255 258
256 import Helpviewer.HelpWindow 259 import Helpviewer.HelpWindow
257 request = QNetworkRequest(QUrl(urlString)) 260 request = QNetworkRequest(QUrl(urlString))
258 reply = Helpviewer.HelpWindow.HelpWindow.networkAccessManager().get(request) 261 reply = Helpviewer.HelpWindow.HelpWindow.networkAccessManager()\
262 .get(request)
259 reply.finished[()].connect(self.__feedLoaded) 263 reply.finished[()].connect(self.__feedLoaded)
260 self.__replies[id(reply)] = (reply, itm) 264 self.__replies[id(reply)] = (reply, itm)
261 265
262 def __feedLoaded(self): 266 def __feedLoaded(self):
263 """ 267 """
303 307
304 if topItem.childCount() == 0: 308 if topItem.childCount() == 0:
305 itm = QTreeWidgetItem(topItem) 309 itm = QTreeWidgetItem(topItem)
306 itm.setText(0, self.trUtf8("Error fetching feed")) 310 itm.setText(0, self.trUtf8("Error fetching feed"))
307 itm.setData(0, FeedsManager.UrlStringRole, "") 311 itm.setData(0, FeedsManager.UrlStringRole, "")
308 itm.setData(0, FeedsManager.ErrorDataRole, str(xmlData, encoding="utf-8")) 312 itm.setData(0, FeedsManager.ErrorDataRole,
313 str(xmlData, encoding="utf-8"))
309 314
310 topItem.setExpanded(True) 315 topItem.setExpanded(True)
311 else: 316 else:
312 linkString = "" 317 linkString = ""
313 titleString = reply.errorString() 318 titleString = reply.errorString()
330 return 335 return
331 336
332 urlString = itm.data(0, FeedsManager.UrlStringRole) 337 urlString = itm.data(0, FeedsManager.UrlStringRole)
333 if urlString: 338 if urlString:
334 menu = QMenu() 339 menu = QMenu()
335 menu.addAction(self.trUtf8("&Open"), self.__openMessageInCurrentTab) 340 menu.addAction(
336 menu.addAction(self.trUtf8("Open in New &Tab"), self.__openMessageInNewTab) 341 self.trUtf8("&Open"), self.__openMessageInCurrentTab)
342 menu.addAction(
343 self.trUtf8("Open in New &Tab"), self.__openMessageInNewTab)
337 menu.addSeparator() 344 menu.addSeparator()
338 menu.addAction(self.trUtf8("&Copy URL to Clipboard"), 345 menu.addAction(self.trUtf8("&Copy URL to Clipboard"),
339 self.__copyUrlToClipboard) 346 self.__copyUrlToClipboard)
340 menu.exec_(QCursor.pos()) 347 menu.exec_(QCursor.pos())
341 else: 348 else:
342 errorString = itm.data(0, FeedsManager.ErrorDataRole) 349 errorString = itm.data(0, FeedsManager.ErrorDataRole)
343 if errorString: 350 if errorString:
344 menu = QMenu() 351 menu = QMenu()
345 menu.addAction(self.trUtf8("&Show error data"), self.__showError) 352 menu.addAction(
353 self.trUtf8("&Show error data"), self.__showError)
346 menu.exec_(QCursor.pos()) 354 menu.exec_(QCursor.pos())
347 355
348 def __itemActivated(self, itm, column): 356 def __itemActivated(self, itm, column):
349 """ 357 """
350 Private slot to handle the activation of an item. 358 Private slot to handle the activation of an item.
354 """ 362 """
355 if self.feedsTree.indexOfTopLevelItem(itm) != -1: 363 if self.feedsTree.indexOfTopLevelItem(itm) != -1:
356 return 364 return
357 365
358 self.__openMessage( 366 self.__openMessage(
359 QApplication.keyboardModifiers() & Qt.ControlModifier == Qt.ControlModifier) 367 QApplication.keyboardModifiers() &
368 Qt.ControlModifier == Qt.ControlModifier)
360 369
361 def __openMessageInCurrentTab(self): 370 def __openMessageInCurrentTab(self):
362 """ 371 """
363 Private slot to open a feed message in the current browser tab. 372 Private slot to open a feed message in the current browser tab.
364 """ 373 """
372 381
373 def __openMessage(self, newTab): 382 def __openMessage(self, newTab):
374 """ 383 """
375 Private method to open a feed message. 384 Private method to open a feed message.
376 385
377 @param newTab flag indicating to open the feed message in a new tab (boolean) 386 @param newTab flag indicating to open the feed message in a new tab
387 (boolean)
378 """ 388 """
379 itm = self.feedsTree.currentItem() 389 itm = self.feedsTree.currentItem()
380 if itm is None: 390 if itm is None:
381 return 391 return
382 392

eric ide

mercurial