Helpviewer/Feeds/FeedsDialog.py

changeset 1415
28fa9633d57e
child 1509
c0b5e693b0eb
equal deleted inserted replaced
1413:7b9d59fc16e8 1415:28fa9633d57e
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to add RSS feeds.
8 """
9
10 from PyQt4.QtCore import QUrl
11 from PyQt4.QtGui import QDialog, QPushButton, QLabel
12
13 from E5Gui import E5MessageBox
14
15 from .Ui_FeedsDialog import Ui_FeedsDialog
16
17 import UI.PixmapCache
18
19 import Helpviewer.HelpWindow
20
21
22 class FeedsDialog(QDialog, Ui_FeedsDialog):
23 """
24 Class documentation goes here.
25 """
26 def __init__(self, availableFeeds, browser, parent=None):
27 """
28 Constructor
29
30 @param availableFeeds list of available RSS feeds (list of tuple of two strings)
31 @param browser reference to the browser widget (HelpBrowser)
32 @param parent reference to the parent widget (QWidget)
33 """
34 super().__init__(parent)
35 self.setupUi(self)
36
37 self.iconLabel.setPixmap(UI.PixmapCache.getPixmap("rss48.png"))
38
39 self.__browser = browser
40
41 self.__availableFeeds = availableFeeds[:]
42 for row in range(len(self.__availableFeeds)):
43 feed = self.__availableFeeds[row]
44 button = QPushButton(self)
45 button.setText(self.trUtf8("Add"))
46 button.feed = feed
47 label = QLabel(self)
48 label.setText(feed[0])
49 self.feedsLayout.addWidget(label, row, 0)
50 self.feedsLayout.addWidget(button, row, 1)
51 button.clicked[()].connect(self.__addFeed)
52
53 def __addFeed(self):
54 """
55 Private slot to add a RSS feed.
56 """
57 button = self.sender()
58 urlString = button.feed[1]
59 url = QUrl(urlString)
60 if not url.host():
61 if not urlString.startswith("/"):
62 urlString = "/" + urlString
63 urlString = self.__browser.url().host() + urlString
64 tmpUrl = QUrl(urlString)
65 if not tmpUrl.scheme():
66 urlString = "http://" + urlString
67 tmpUrl = QUrl(urlString)
68 if not tmpUrl.scheme() or not tmpUrl.host():
69 return
70 if not url.isValid():
71 return
72
73 if button.feed[0]:
74 title = button.feed[0]
75 else:
76 title = self.__browser.url().host()
77
78 feedsManager = Helpviewer.HelpWindow.HelpWindow.feedsManager()
79 if feedsManager.addFeed(urlString, title, self.__browser.icon()):
80 E5MessageBox.information(self,
81 self.trUtf8("Add RSS Feed"),
82 self.trUtf8("""The feed was added successfully."""))
83 else:
84 E5MessageBox.warning(self,
85 self.trUtf8("Add RSS Feed"),
86 self.trUtf8("""The feed was already added before."""))
87
88 self.close()

eric ide

mercurial