6 """ |
6 """ |
7 Module implementing the URL bar widget. |
7 Module implementing the URL bar widget. |
8 """ |
8 """ |
9 |
9 |
10 from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl |
10 from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl |
11 from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon |
11 from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon, QDialog |
12 try: |
12 try: |
13 from PyQt4.QtNetwork import QSslCertificate # __IGNORE_EXCEPTION__ |
13 from PyQt4.QtNetwork import QSslCertificate # __IGNORE_EXCEPTION__ |
14 except ImportError: |
14 except ImportError: |
15 QSslCertificate = None # __IGNORE_WARNING__ |
15 QSslCertificate = None # __IGNORE_WARNING__ |
16 from PyQt4.QtWebKit import QWebSettings, QWebPage |
16 from PyQt4.QtWebKit import QWebSettings, QWebPage |
21 import Helpviewer.HelpWindow |
21 import Helpviewer.HelpWindow |
22 |
22 |
23 from .FavIconLabel import FavIconLabel |
23 from .FavIconLabel import FavIconLabel |
24 from .SslLabel import SslLabel |
24 from .SslLabel import SslLabel |
25 from .BookmarkInfoDialog import BookmarkInfoDialog |
25 from .BookmarkInfoDialog import BookmarkInfoDialog |
|
26 from .BookmarkActionSelectionDialog import BookmarkActionSelectionDialog |
26 |
27 |
27 from Helpviewer.Feeds.FeedsDialog import FeedsDialog |
28 from Helpviewer.Feeds.FeedsDialog import FeedsDialog |
28 |
29 |
29 import UI.PixmapCache |
30 import UI.PixmapCache |
30 import Preferences |
31 import Preferences |
91 self.__bookmarkChanged) |
92 self.__bookmarkChanged) |
92 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryAdded.connect( |
93 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryAdded.connect( |
93 self.__bookmarkChanged) |
94 self.__bookmarkChanged) |
94 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryRemoved.connect( |
95 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryRemoved.connect( |
95 self.__bookmarkChanged) |
96 self.__bookmarkChanged) |
|
97 Helpviewer.HelpWindow.HelpWindow.speedDial().pagesChanged.connect( |
|
98 self.__bookmarkChanged) |
96 |
99 |
97 def setBrowser(self, browser): |
100 def setBrowser(self, browser): |
98 """ |
101 """ |
99 Public method to set the browser connection. |
102 Public method to set the browser connection. |
100 |
103 |
120 """ |
123 """ |
121 Private slot to handle a URL change of the associated browser. |
124 Private slot to handle a URL change of the associated browser. |
122 |
125 |
123 @param url new URL of the browser (QUrl) |
126 @param url new URL of the browser (QUrl) |
124 """ |
127 """ |
125 self.setText(str(url.toEncoded(), encoding="utf-8")) |
128 strUrl = url.toString() |
|
129 if strUrl in ["eric:speeddial", "eric:home", "about:blank"]: |
|
130 strUrl = "" |
|
131 |
|
132 if self.text() != strUrl: |
|
133 self.setText(strUrl) |
126 self.setCursorPosition(0) |
134 self.setCursorPosition(0) |
127 |
135 |
128 def __loadStarted(self): |
136 def __loadStarted(self): |
129 """ |
137 """ |
130 Private slot to perform actions before the page is loaded. |
138 Private slot to perform actions before the page is loaded. |
131 """ |
139 """ |
132 self.__sslLabel.setVisible(False) |
140 self.__sslLabel.setVisible(False) |
133 self.__bookmarkButton.setVisible(False) |
141 self.__bookmarkButton.setVisible(False) |
|
142 |
|
143 def __checkBookmark(self): |
|
144 """ |
|
145 Private slot to check the current URL for the bookmarked state. |
|
146 """ |
|
147 if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ |
|
148 .bookmarkForUrl(self.__browser.url()) is None and \ |
|
149 Helpviewer.HelpWindow.HelpWindow.speedDial()\ |
|
150 .pageForUrl(self.__browser.url()).url == "": |
|
151 self.__bookmarkButton.setIcon(self.__bmInactiveIcon) |
|
152 else: |
|
153 self.__bookmarkButton.setIcon(self.__bmActiveIcon) |
134 |
154 |
135 def __loadFinished(self, ok): |
155 def __loadFinished(self, ok): |
136 """ |
156 """ |
137 Private slot to set some data after the page was loaded. |
157 Private slot to set some data after the page was loaded. |
138 |
158 |
140 """ |
160 """ |
141 try: |
161 try: |
142 if self.__browser.url().scheme() in ["eric", "about"]: |
162 if self.__browser.url().scheme() in ["eric", "about"]: |
143 self.__bookmarkButton.setVisible(False) |
163 self.__bookmarkButton.setVisible(False) |
144 else: |
164 else: |
145 if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ |
165 self.__checkBookmark() |
146 .bookmarkForUrl(self.__browser.url()) is None: |
|
147 self.__bookmarkButton.setIcon(self.__bmInactiveIcon) |
|
148 else: |
|
149 self.__bookmarkButton.setIcon(self.__bmActiveIcon) |
|
150 self.__bookmarkButton.setVisible(True) |
166 self.__bookmarkButton.setVisible(True) |
151 |
167 |
152 if ok: |
168 if ok: |
153 self.__rssButton.setVisible(self.__browser.checkRSS()) |
169 self.__rssButton.setVisible(self.__browser.checkRSS()) |
154 |
170 |
206 |
222 |
207 def __showBookmarkInfo(self): |
223 def __showBookmarkInfo(self): |
208 """ |
224 """ |
209 Private slot to show a dialog with some bookmark info. |
225 Private slot to show a dialog with some bookmark info. |
210 """ |
226 """ |
211 bookmark = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ |
227 url = self.__browser.url() |
212 .bookmarkForUrl(self.__browser.url()) |
228 dlg = BookmarkActionSelectionDialog(url) |
213 if bookmark is None: |
229 if dlg.exec_() == QDialog.Accepted: |
214 self.__browser.addBookmark() |
230 action = dlg.getAction() |
215 else: |
231 if action == BookmarkActionSelectionDialog.AddBookmark: |
216 dlg = BookmarkInfoDialog(bookmark, self.__browser) |
232 self.__browser.addBookmark() |
217 dlg.exec_() |
233 elif action == BookmarkActionSelectionDialog.EditBookmark: |
|
234 bookmark = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ |
|
235 .bookmarkForUrl(url) |
|
236 dlg = BookmarkInfoDialog(bookmark, self.__browser) |
|
237 dlg.exec_() |
|
238 elif action == BookmarkActionSelectionDialog.AddSpeeddial: |
|
239 Helpviewer.HelpWindow.HelpWindow.speedDial().addPage( |
|
240 url, self.__browser.title()) |
|
241 elif action == BookmarkActionSelectionDialog.RemoveSpeeddial: |
|
242 Helpviewer.HelpWindow.HelpWindow.speedDial().removePage(url) |
218 |
243 |
219 @pyqtSlot() |
244 @pyqtSlot() |
220 def __bookmarkChanged(self): |
245 def __bookmarkChanged(self): |
221 """ |
246 """ |
222 Private slot to handle bookmark changes. |
247 Private slot to handle bookmark or speed dial changes. |
223 """ |
248 """ |
224 if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ |
249 self.__checkBookmark() |
225 .bookmarkForUrl(self.__browser.url()) is None: |
|
226 self.__bookmarkButton.setIcon(self.__bmInactiveIcon) |
|
227 else: |
|
228 self.__bookmarkButton.setIcon(self.__bmActiveIcon) |
|
229 |
250 |
230 def paintEvent(self, evt): |
251 def paintEvent(self, evt): |
231 """ |
252 """ |
232 Protected method handling a paint event. |
253 Protected method handling a paint event. |
233 |
254 |