4713:8dca047daf4b | 4715:79009bc4acd5 |
---|---|
7 Module implementing the web browser main window. | 7 Module implementing the web browser main window. |
8 """ | 8 """ |
9 | 9 |
10 from __future__ import unicode_literals | 10 from __future__ import unicode_literals |
11 try: | 11 try: |
12 str = unicode | 12 str = unicode # __IGNORE_EXCEPTION__ |
13 except NameError: | 13 except NameError: |
14 pass | 14 pass |
15 | 15 |
16 import os | 16 import os |
17 | 17 |
39 ## | 39 ## |
40 from E5Gui.E5Action import E5Action | 40 from E5Gui.E5Action import E5Action |
41 from E5Gui import E5MessageBox, E5FileDialog, E5ErrorMessage | 41 from E5Gui import E5MessageBox, E5FileDialog, E5ErrorMessage |
42 from E5Gui.E5MainWindow import E5MainWindow | 42 from E5Gui.E5MainWindow import E5MainWindow |
43 from E5Gui.E5Application import e5App | 43 from E5Gui.E5Application import e5App |
44 ##from E5Gui.E5ZoomWidget import E5ZoomWidget | 44 from E5Gui.E5ZoomWidget import E5ZoomWidget |
45 ## | 45 |
46 ##from E5Network.E5NetworkIcon import E5NetworkIcon | 46 ##from E5Network.E5NetworkIcon import E5NetworkIcon |
47 | 47 |
48 import Preferences | 48 import Preferences |
49 from Preferences import Shortcuts | 49 from Preferences import Shortcuts |
50 | 50 |
124 ## self.__eventKeyboardModifiers = Qt.NoModifier | 124 ## self.__eventKeyboardModifiers = Qt.NoModifier |
125 ## | 125 ## |
126 if self.__initShortcutsOnly: | 126 if self.__initShortcutsOnly: |
127 self.__initActions() | 127 self.__initActions() |
128 else: | 128 else: |
129 # TODO: implement this | |
130 from .SearchWidget import SearchWidget | 129 from .SearchWidget import SearchWidget |
130 # TODO: QtHelp | |
131 ## from .HelpTocWidget import HelpTocWidget | 131 ## from .HelpTocWidget import HelpTocWidget |
132 ## from .HelpIndexWidget import HelpIndexWidget | 132 ## from .HelpIndexWidget import HelpIndexWidget |
133 ## from .HelpSearchWidget import HelpSearchWidget | 133 ## from .HelpSearchWidget import HelpSearchWidget |
134 ## from .HelpBrowserWV import HelpBrowser | 134 from .WebBrowserView import WebBrowserView |
135 from .WebBrowserTabWidget import WebBrowserTabWidget | 135 from .WebBrowserTabWidget import WebBrowserTabWidget |
136 # TODO: AdBlock | |
136 ## from .AdBlock.AdBlockIcon import AdBlockIcon | 137 ## from .AdBlock.AdBlockIcon import AdBlockIcon |
138 # TODO: VirusTotal | |
137 ## from .VirusTotal.VirusTotalApi import VirusTotalAPI | 139 ## from .VirusTotal.VirusTotalApi import VirusTotalAPI |
138 | 140 |
139 # TODO: allow using Qt Help even if not called from eric6 | 141 # TODO: allow using Qt Help even if not called from eric6 |
140 WebBrowserWindow.setUseQtHelp(self.__fromEric) | 142 WebBrowserWindow.setUseQtHelp(self.__fromEric) |
141 | 143 |
157 ## self.__helpEngine.warning.connect(self.__warning) | 159 ## self.__helpEngine.warning.connect(self.__warning) |
158 ## else: | 160 ## else: |
159 ## self.__helpEngine = None | 161 ## self.__helpEngine = None |
160 ## self.__helpInstaller = None | 162 ## self.__helpInstaller = None |
161 | 163 |
162 ## self.__zoomWidget = E5ZoomWidget( | 164 self.__zoomWidget = E5ZoomWidget( |
163 ## UI.PixmapCache.getPixmap("zoomOut.png"), | 165 UI.PixmapCache.getPixmap("zoomOut.png"), |
164 ## UI.PixmapCache.getPixmap("zoomIn.png"), | 166 UI.PixmapCache.getPixmap("zoomIn.png"), |
165 ## UI.PixmapCache.getPixmap("zoomReset.png"), self) | 167 UI.PixmapCache.getPixmap("zoomReset.png"), self) |
166 ## self.statusBar().addPermanentWidget(self.__zoomWidget) | 168 self.statusBar().addPermanentWidget(self.__zoomWidget) |
167 ## self.__zoomWidget.setMapping( | 169 self.__zoomWidget.setMapping( |
168 ## HelpBrowser.ZoomLevels, HelpBrowser.ZoomLevelDefault) | 170 WebBrowserView.ZoomLevels, WebBrowserView.ZoomLevelDefault) |
169 ## self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged) | 171 self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged) |
170 ## | 172 |
171 self.__tabWidget = WebBrowserTabWidget(self) | 173 self.__tabWidget = WebBrowserTabWidget(self) |
172 self.__tabWidget.currentChanged[int].connect(self.__currentChanged) | 174 self.__tabWidget.currentChanged[int].connect(self.__currentChanged) |
173 self.__tabWidget.titleChanged.connect(self.__titleChanged) | 175 self.__tabWidget.titleChanged.connect(self.__titleChanged) |
174 self.__tabWidget.showMessage.connect(self.statusBar().showMessage) | 176 self.__tabWidget.showMessage.connect(self.statusBar().showMessage) |
175 self.__tabWidget.browserClosed.connect(self.__browserClosed) | 177 self.__tabWidget.browserClosed.connect(self.__browserClosed) |
176 ## self.__tabWidget.browserZoomValueChanged.connect( | 178 self.__tabWidget.browserZoomValueChanged.connect( |
177 ## self.__zoomWidget.setValue) | 179 self.__zoomWidget.setValue) |
178 | 180 |
179 self.__searchWidget = SearchWidget(self, self) | 181 self.__searchWidget = SearchWidget(self, self) |
180 centralWidget = QWidget() | 182 centralWidget = QWidget() |
181 layout = QVBoxLayout() | 183 layout = QVBoxLayout() |
182 layout.setContentsMargins(1, 1, 1, 1) | 184 layout.setContentsMargins(1, 1, 1, 1) |
186 QSizePolicy.Preferred, QSizePolicy.Expanding) | 188 QSizePolicy.Preferred, QSizePolicy.Expanding) |
187 centralWidget.setLayout(layout) | 189 centralWidget.setLayout(layout) |
188 self.setCentralWidget(centralWidget) | 190 self.setCentralWidget(centralWidget) |
189 self.__searchWidget.hide() | 191 self.__searchWidget.hide() |
190 | 192 |
191 # TODO: do these once Qt 5.6 is available | 193 # TODO: QtHelp, do these once Qt 5.6 is available |
192 ## if WebBrowserWindow.UseQtHelp: | 194 ## if WebBrowserWindow.UseQtHelp: |
193 ## # setup the TOC widget | 195 ## # setup the TOC widget |
194 ## self.__tocWindow = HelpTocWidget(self.__helpEngine, self) | 196 ## self.__tocWindow = HelpTocWidget(self.__helpEngine, self) |
195 ## self.__tocDock = QDockWidget(self.tr("Contents"), self) | 197 ## self.__tocDock = QDockWidget(self.tr("Contents"), self) |
196 ## self.__tocDock.setObjectName("TocWindow") | 198 ## self.__tocDock.setObjectName("TocWindow") |
263 QDesktopServices.setUrlHandler("http", self.__linkActivated) | 265 QDesktopServices.setUrlHandler("http", self.__linkActivated) |
264 QDesktopServices.setUrlHandler("https", self.__linkActivated) | 266 QDesktopServices.setUrlHandler("https", self.__linkActivated) |
265 | 267 |
266 # setup connections | 268 # setup connections |
267 self.__activating = False | 269 self.__activating = False |
268 # TODO: do these once Qt 5.6 is available | 270 # TODO: QtHelp, do these once Qt 5.6 is available |
269 ## if WebBrowserWindow.UseQtHelp: | 271 ## if WebBrowserWindow.UseQtHelp: |
270 ## # TOC window | 272 ## # TOC window |
271 ## self.__tocWindow.linkActivated.connect(self.__linkActivated) | 273 ## self.__tocWindow.linkActivated.connect(self.__linkActivated) |
272 ## self.__tocWindow.escapePressed.connect( | 274 ## self.__tocWindow.escapePressed.connect( |
273 ## self.__activateCurrentBrowser) | 275 ## self.__activateCurrentBrowser) |
299 self.__previewer = None | 301 self.__previewer = None |
300 self.__shutdownCalled = False | 302 self.__shutdownCalled = False |
301 | 303 |
302 ## self.flashCookieManager() | 304 ## self.flashCookieManager() |
303 ## | 305 ## |
304 # TODO: do these once Qt 5.6 is available | 306 # TODO: QtHelp, do these once Qt 5.6 is available |
305 ## if WebBrowserWindow.UseQtHelp: | 307 ## if WebBrowserWindow.UseQtHelp: |
306 ## QTimer.singleShot(0, self.__lookForNewDocumentation) | 308 ## QTimer.singleShot(0, self.__lookForNewDocumentation) |
307 ## if self.__searchWord is not None: | 309 ## if self.__searchWord is not None: |
308 ## QTimer.singleShot(0, self.__searchForWord) | 310 ## QTimer.singleShot(0, self.__searchForWord) |
309 ## | 311 ## |
320 Note: This empty variant seems to get rid of the Qt message | 322 Note: This empty variant seems to get rid of the Qt message |
321 'Warning: QBasicTimer::start: QBasicTimer can only be used with | 323 'Warning: QBasicTimer::start: QBasicTimer can only be used with |
322 threads started with QThread' | 324 threads started with QThread' |
323 """ | 325 """ |
324 pass | 326 pass |
327 | |
328 def fromEric(self): | |
329 """ | |
330 Public method to check, if the web browser was called from within the | |
331 eric IDE. | |
332 """ | |
333 return self.__fromEric | |
325 | 334 |
326 ## def __setIconDatabasePath(self, enable=True): | 335 ## def __setIconDatabasePath(self, enable=True): |
327 ## """ | 336 ## """ |
328 ## Private method to set the favicons path. | 337 ## Private method to set the favicons path. |
329 ## | 338 ## |
572 ## if not self.__initShortcutsOnly: | 581 ## if not self.__initShortcutsOnly: |
573 ## self.saveVisiblePageScreenAct.triggered.connect( | 582 ## self.saveVisiblePageScreenAct.triggered.connect( |
574 ## self.__saveVisiblePageScreen) | 583 ## self.__saveVisiblePageScreen) |
575 ## self.__actions.append(self.saveVisiblePageScreenAct) | 584 ## self.__actions.append(self.saveVisiblePageScreenAct) |
576 | 585 |
577 # TODO: re-enable when bookmarks are done | 586 # TODO: Bookmarks |
578 ## bookmarksManager = self.bookmarksManager() | 587 ## bookmarksManager = self.bookmarksManager() |
579 ## self.importBookmarksAct = E5Action( | 588 ## self.importBookmarksAct = E5Action( |
580 ## self.tr('Import Bookmarks'), | 589 ## self.tr('Import Bookmarks'), |
581 ## self.tr('&Import Bookmarks...'), | 590 ## self.tr('&Import Bookmarks...'), |
582 ## 0, 0, self, 'webbrowser_file_import_bookmarks') | 591 ## 0, 0, self, 'webbrowser_file_import_bookmarks') |
604 ## if not self.__initShortcutsOnly: | 613 ## if not self.__initShortcutsOnly: |
605 ## self.exportBookmarksAct.triggered.connect( | 614 ## self.exportBookmarksAct.triggered.connect( |
606 ## bookmarksManager.exportBookmarks) | 615 ## bookmarksManager.exportBookmarks) |
607 ## self.__actions.append(self.exportBookmarksAct) | 616 ## self.__actions.append(self.exportBookmarksAct) |
608 | 617 |
609 # TODO: re-enable when print stuff is done | 618 # TODO: print stuff |
610 ## self.printAct = E5Action( | 619 ## self.printAct = E5Action( |
611 ## self.tr('Print'), | 620 ## self.tr('Print'), |
612 ## UI.PixmapCache.getIcon("print.png"), | 621 ## UI.PixmapCache.getIcon("print.png"), |
613 ## self.tr('&Print'), | 622 ## self.tr('&Print'), |
614 ## QKeySequence(self.tr("Ctrl+P", "File|Print")), | 623 ## QKeySequence(self.tr("Ctrl+P", "File|Print")), |
682 if not self.__initShortcutsOnly: | 691 if not self.__initShortcutsOnly: |
683 self.closeAllAct.triggered.connect( | 692 self.closeAllAct.triggered.connect( |
684 self.__tabWidget.closeAllBrowsers) | 693 self.__tabWidget.closeAllBrowsers) |
685 self.__actions.append(self.closeAllAct) | 694 self.__actions.append(self.closeAllAct) |
686 | 695 |
687 # TODO: re-enable when Private Browsing is done | 696 # TODO: Private Browsing |
688 ## self.privateBrowsingAct = E5Action( | 697 ## self.privateBrowsingAct = E5Action( |
689 ## self.tr('Private Browsing'), | 698 ## self.tr('Private Browsing'), |
690 ## UI.PixmapCache.getIcon("privateBrowsing.png"), | 699 ## UI.PixmapCache.getIcon("privateBrowsing.png"), |
691 ## self.tr('Private &Browsing'), | 700 ## self.tr('Private &Browsing'), |
692 ## 0, 0, self, 'webbrowser_file_private_browsing') | 701 ## 0, 0, self, 'webbrowser_file_private_browsing') |
869 if not self.__initShortcutsOnly: | 878 if not self.__initShortcutsOnly: |
870 self.findPrevAct.triggered.connect( | 879 self.findPrevAct.triggered.connect( |
871 self.__searchWidget.findPrevious) | 880 self.__searchWidget.findPrevious) |
872 self.__actions.append(self.findPrevAct) | 881 self.__actions.append(self.findPrevAct) |
873 | 882 |
874 # TODO: re-enable when bookmarks are done | 883 # TODO: Bookmarks |
875 ## self.bookmarksManageAct = E5Action( | 884 ## self.bookmarksManageAct = E5Action( |
876 ## self.tr('Manage Bookmarks'), | 885 ## self.tr('Manage Bookmarks'), |
877 ## self.tr('&Manage Bookmarks...'), | 886 ## self.tr('&Manage Bookmarks...'), |
878 ## QKeySequence(self.tr("Ctrl+Shift+B", "Help|Manage bookmarks")), | 887 ## QKeySequence(self.tr("Ctrl+Shift+B", "Help|Manage bookmarks")), |
879 ## 0, self, 'webbrowser_bookmarks_manage') | 888 ## 0, self, 'webbrowser_bookmarks_manage') |
980 )) | 989 )) |
981 if not self.__initShortcutsOnly: | 990 if not self.__initShortcutsOnly: |
982 self.aboutQtAct.triggered.connect(self.__aboutQt) | 991 self.aboutQtAct.triggered.connect(self.__aboutQt) |
983 self.__actions.append(self.aboutQtAct) | 992 self.__actions.append(self.aboutQtAct) |
984 | 993 |
985 # TODO: re-enable once Zoom stuff is done | 994 self.zoomInAct = E5Action( |
986 ## self.zoomInAct = E5Action( | 995 self.tr('Zoom in'), |
987 ## self.tr('Zoom in'), | 996 UI.PixmapCache.getIcon("zoomIn.png"), |
988 ## UI.PixmapCache.getIcon("zoomIn.png"), | 997 self.tr('Zoom &in'), |
989 ## self.tr('Zoom &in'), | 998 QKeySequence(self.tr("Ctrl++", "View|Zoom in")), |
990 ## QKeySequence(self.tr("Ctrl++", "View|Zoom in")), | 999 QKeySequence(self.tr("Zoom In", "View|Zoom in")), |
991 ## QKeySequence(self.tr("Zoom In", "View|Zoom in")), | 1000 self, 'webbrowser_view_zoom_in') |
992 ## self, 'webbrowser_view_zoom_in') | 1001 self.zoomInAct.setStatusTip(self.tr('Zoom in on the web page')) |
993 ## self.zoomInAct.setStatusTip(self.tr('Zoom in on the text')) | 1002 self.zoomInAct.setWhatsThis(self.tr( |
994 ## self.zoomInAct.setWhatsThis(self.tr( | 1003 """<b>Zoom in</b>""" |
995 ## """<b>Zoom in</b>""" | 1004 """<p>Zoom in on the web page.""" |
996 ## """<p>Zoom in on the text. This makes the text bigger.</p>""" | 1005 """ This makes the web page bigger.</p>""" |
997 ## )) | 1006 )) |
998 ## if not self.__initShortcutsOnly: | 1007 if not self.__initShortcutsOnly: |
999 ## self.zoomInAct.triggered.connect(self.__zoomIn) | 1008 self.zoomInAct.triggered.connect(self.__zoomIn) |
1000 ## self.__actions.append(self.zoomInAct) | 1009 self.__actions.append(self.zoomInAct) |
1001 ## | 1010 |
1002 ## self.zoomOutAct = E5Action( | 1011 self.zoomOutAct = E5Action( |
1003 ## self.tr('Zoom out'), | 1012 self.tr('Zoom out'), |
1004 ## UI.PixmapCache.getIcon("zoomOut.png"), | 1013 UI.PixmapCache.getIcon("zoomOut.png"), |
1005 ## self.tr('Zoom &out'), | 1014 self.tr('Zoom &out'), |
1006 ## QKeySequence(self.tr("Ctrl+-", "View|Zoom out")), | 1015 QKeySequence(self.tr("Ctrl+-", "View|Zoom out")), |
1007 ## QKeySequence(self.tr("Zoom Out", "View|Zoom out")), | 1016 QKeySequence(self.tr("Zoom Out", "View|Zoom out")), |
1008 ## self, 'webbrowser_view_zoom_out') | 1017 self, 'webbrowser_view_zoom_out') |
1009 ## self.zoomOutAct.setStatusTip(self.tr('Zoom out on the text')) | 1018 self.zoomOutAct.setStatusTip(self.tr('Zoom out on the web page')) |
1010 ## self.zoomOutAct.setWhatsThis(self.tr( | 1019 self.zoomOutAct.setWhatsThis(self.tr( |
1011 ## """<b>Zoom out</b>""" | 1020 """<b>Zoom out</b>""" |
1012 ## """<p>Zoom out on the text. This makes the text smaller.</p>""" | 1021 """<p>Zoom out on the web page.""" |
1013 ## )) | 1022 """ This makes the web page smaller.</p>""" |
1014 ## if not self.__initShortcutsOnly: | 1023 )) |
1015 ## self.zoomOutAct.triggered.connect(self.__zoomOut) | 1024 if not self.__initShortcutsOnly: |
1016 ## self.__actions.append(self.zoomOutAct) | 1025 self.zoomOutAct.triggered.connect(self.__zoomOut) |
1017 ## | 1026 self.__actions.append(self.zoomOutAct) |
1018 ## self.zoomResetAct = E5Action( | 1027 |
1019 ## self.tr('Zoom reset'), | 1028 self.zoomResetAct = E5Action( |
1020 ## UI.PixmapCache.getIcon("zoomReset.png"), | 1029 self.tr('Zoom reset'), |
1021 ## self.tr('Zoom &reset'), | 1030 UI.PixmapCache.getIcon("zoomReset.png"), |
1022 ## QKeySequence(self.tr("Ctrl+0", "View|Zoom reset")), | 1031 self.tr('Zoom &reset'), |
1023 ## 0, self, 'webbrowser_view_zoom_reset') | 1032 QKeySequence(self.tr("Ctrl+0", "View|Zoom reset")), |
1024 ## self.zoomResetAct.setStatusTip(self.tr( | 1033 0, self, 'webbrowser_view_zoom_reset') |
1025 ## 'Reset the zoom of the text')) | 1034 self.zoomResetAct.setStatusTip(self.tr( |
1026 ## self.zoomResetAct.setWhatsThis(self.tr( | 1035 'Reset the zoom of the web page')) |
1027 ## """<b>Zoom reset</b>""" | 1036 self.zoomResetAct.setWhatsThis(self.tr( |
1028 ## """<p>Reset the zoom of the text. """ | 1037 """<b>Zoom reset</b>""" |
1029 ## """This sets the zoom factor to 100%.</p>""" | 1038 """<p>Reset the zoom of the web page. """ |
1030 ## )) | 1039 """This sets the zoom factor to 100%.</p>""" |
1031 ## if not self.__initShortcutsOnly: | 1040 )) |
1032 ## self.zoomResetAct.triggered.connect(self.__zoomReset) | 1041 if not self.__initShortcutsOnly: |
1033 ## self.__actions.append(self.zoomResetAct) | 1042 self.zoomResetAct.triggered.connect(self.__zoomReset) |
1034 ## | 1043 self.__actions.append(self.zoomResetAct) |
1044 | |
1035 ## if hasattr(QWebSettings, 'ZoomTextOnly'): | 1045 ## if hasattr(QWebSettings, 'ZoomTextOnly'): |
1036 ## self.zoomTextOnlyAct = E5Action( | 1046 ## self.zoomTextOnlyAct = E5Action( |
1037 ## self.tr('Zoom text only'), | 1047 ## self.tr('Zoom text only'), |
1038 ## self.tr('Zoom &text only'), | 1048 ## self.tr('Zoom &text only'), |
1039 ## 0, 0, self, 'webbrowser_view_zoom_text_only') | 1049 ## 0, 0, self, 'webbrowser_view_zoom_text_only') |
1137 ## if not self.__initShortcutsOnly: | 1147 ## if not self.__initShortcutsOnly: |
1138 ## self.acceptedLanguagesAct.triggered.connect( | 1148 ## self.acceptedLanguagesAct.triggered.connect( |
1139 ## self.__showAcceptedLanguages) | 1149 ## self.__showAcceptedLanguages) |
1140 ## self.__actions.append(self.acceptedLanguagesAct) | 1150 ## self.__actions.append(self.acceptedLanguagesAct) |
1141 | 1151 |
1152 # TODO: Cookies | |
1142 ## self.cookiesAct = E5Action( | 1153 ## self.cookiesAct = E5Action( |
1143 ## self.tr('Cookies'), | 1154 ## self.tr('Cookies'), |
1144 ## UI.PixmapCache.getIcon("cookie.png"), | 1155 ## UI.PixmapCache.getIcon("cookie.png"), |
1145 ## self.tr('C&ookies...'), 0, 0, self, 'webbrowser_cookies') | 1156 ## self.tr('C&ookies...'), 0, 0, self, 'webbrowser_cookies') |
1146 ## self.cookiesAct.setStatusTip(self.tr( | 1157 ## self.cookiesAct.setStatusTip(self.tr( |
1152 ## if not self.__initShortcutsOnly: | 1163 ## if not self.__initShortcutsOnly: |
1153 ## self.cookiesAct.triggered.connect( | 1164 ## self.cookiesAct.triggered.connect( |
1154 ## self.__showCookiesConfiguration) | 1165 ## self.__showCookiesConfiguration) |
1155 ## self.__actions.append(self.cookiesAct) | 1166 ## self.__actions.append(self.cookiesAct) |
1156 | 1167 |
1157 # TODO: re-enable once Flash Cookies stuff is done | 1168 # TODO: Flash Cookies |
1158 ## self.flashCookiesAct = E5Action( | 1169 ## self.flashCookiesAct = E5Action( |
1159 ## self.tr('Flash Cookies'), | 1170 ## self.tr('Flash Cookies'), |
1160 ## UI.PixmapCache.getIcon("flashCookie.png"), | 1171 ## UI.PixmapCache.getIcon("flashCookie.png"), |
1161 ## self.tr('&Flash Cookies...'), 0, 0, self, 'webbrowser_flash_cookies') | 1172 ## self.tr('&Flash Cookies...'), 0, 0, self, 'webbrowser_flash_cookies') |
1162 ## self.flashCookiesAct.setStatusTip(self.tr( | 1173 ## self.flashCookiesAct.setStatusTip(self.tr( |
1238 if not self.__initShortcutsOnly: | 1249 if not self.__initShortcutsOnly: |
1239 self.editMessageFilterAct.triggered.connect( | 1250 self.editMessageFilterAct.triggered.connect( |
1240 E5ErrorMessage.editMessageFilters) | 1251 E5ErrorMessage.editMessageFilters) |
1241 self.__actions.append(self.editMessageFilterAct) | 1252 self.__actions.append(self.editMessageFilterAct) |
1242 | 1253 |
1243 # TODO: re-enable once feature permission stuff is done | 1254 # TODO: Feature Permission |
1244 ## self.featurePermissionAct = E5Action( | 1255 ## self.featurePermissionAct = E5Action( |
1245 ## self.tr('Edit HTML5 Feature Permissions'), | 1256 ## self.tr('Edit HTML5 Feature Permissions'), |
1246 ## UI.PixmapCache.getIcon("featurePermission.png"), | 1257 ## UI.PixmapCache.getIcon("featurePermission.png"), |
1247 ## self.tr('Edit HTML5 Feature Permissions...'), 0, 0, self, | 1258 ## self.tr('Edit HTML5 Feature Permissions...'), 0, 0, self, |
1248 ## 'webbrowser_edit_feature_permissions') | 1259 ## 'webbrowser_edit_feature_permissions') |
1396 ## )) | 1407 ## )) |
1397 ## if not self.__initShortcutsOnly: | 1408 ## if not self.__initShortcutsOnly: |
1398 ## self.clearIconsAct.triggered.connect(self.__clearIconsDatabase) | 1409 ## self.clearIconsAct.triggered.connect(self.__clearIconsDatabase) |
1399 ## self.__actions.append(self.clearIconsAct) | 1410 ## self.__actions.append(self.clearIconsAct) |
1400 | 1411 |
1401 # TODO: re-enable once search engines have been done | 1412 # TODO: Open Search |
1402 ## self.searchEnginesAct = E5Action( | 1413 ## self.searchEnginesAct = E5Action( |
1403 ## self.tr('Configure Search Engines'), | 1414 ## self.tr('Configure Search Engines'), |
1404 ## self.tr('Configure Search &Engines...'), | 1415 ## self.tr('Configure Search &Engines...'), |
1405 ## 0, 0, | 1416 ## 0, 0, |
1406 ## self, 'webbrowser_search_engines') | 1417 ## self, 'webbrowser_search_engines') |
1414 ## if not self.__initShortcutsOnly: | 1425 ## if not self.__initShortcutsOnly: |
1415 ## self.searchEnginesAct.triggered.connect( | 1426 ## self.searchEnginesAct.triggered.connect( |
1416 ## self.__showEnginesConfigurationDialog) | 1427 ## self.__showEnginesConfigurationDialog) |
1417 ## self.__actions.append(self.searchEnginesAct) | 1428 ## self.__actions.append(self.searchEnginesAct) |
1418 | 1429 |
1430 # TODO: Passwords | |
1419 ## self.passwordsAct = E5Action( | 1431 ## self.passwordsAct = E5Action( |
1420 ## self.tr('Manage Saved Passwords'), | 1432 ## self.tr('Manage Saved Passwords'), |
1421 ## UI.PixmapCache.getIcon("passwords.png"), | 1433 ## UI.PixmapCache.getIcon("passwords.png"), |
1422 ## self.tr('Manage Saved Passwords...'), | 1434 ## self.tr('Manage Saved Passwords...'), |
1423 ## 0, 0, | 1435 ## 0, 0, |
1430 ## )) | 1442 ## )) |
1431 ## if not self.__initShortcutsOnly: | 1443 ## if not self.__initShortcutsOnly: |
1432 ## self.passwordsAct.triggered.connect(self.__showPasswordsDialog) | 1444 ## self.passwordsAct.triggered.connect(self.__showPasswordsDialog) |
1433 ## self.__actions.append(self.passwordsAct) | 1445 ## self.__actions.append(self.passwordsAct) |
1434 | 1446 |
1447 # TODO: AdBlock | |
1435 ## self.adblockAct = E5Action( | 1448 ## self.adblockAct = E5Action( |
1436 ## self.tr('Ad Block'), | 1449 ## self.tr('Ad Block'), |
1437 ## UI.PixmapCache.getIcon("adBlockPlus.png"), | 1450 ## UI.PixmapCache.getIcon("adBlockPlus.png"), |
1438 ## self.tr('&Ad Block...'), | 1451 ## self.tr('&Ad Block...'), |
1439 ## 0, 0, | 1452 ## 0, 0, |
1447 ## )) | 1460 ## )) |
1448 ## if not self.__initShortcutsOnly: | 1461 ## if not self.__initShortcutsOnly: |
1449 ## self.adblockAct.triggered.connect(self.__showAdBlockDialog) | 1462 ## self.adblockAct.triggered.connect(self.__showAdBlockDialog) |
1450 ## self.__actions.append(self.adblockAct) | 1463 ## self.__actions.append(self.adblockAct) |
1451 | 1464 |
1465 # TODO: Click2Flash (?) | |
1452 ## self.flashblockAct = E5Action( | 1466 ## self.flashblockAct = E5Action( |
1453 ## self.tr('ClickToFlash'), | 1467 ## self.tr('ClickToFlash'), |
1454 ## UI.PixmapCache.getIcon("flashBlock.png"), | 1468 ## UI.PixmapCache.getIcon("flashBlock.png"), |
1455 ## self.tr('&ClickToFlash...'), | 1469 ## self.tr('&ClickToFlash...'), |
1456 ## 0, 0, | 1470 ## 0, 0, |
1465 ## if not self.__initShortcutsOnly: | 1479 ## if not self.__initShortcutsOnly: |
1466 ## self.flashblockAct.triggered.connect( | 1480 ## self.flashblockAct.triggered.connect( |
1467 ## self.__showClickToFlashDialog) | 1481 ## self.__showClickToFlashDialog) |
1468 ## self.__actions.append(self.flashblockAct) | 1482 ## self.__actions.append(self.flashblockAct) |
1469 | 1483 |
1484 # TODO: Certificates | |
1470 ## if SSL_AVAILABLE: | 1485 ## if SSL_AVAILABLE: |
1471 ## self.certificatesAct = E5Action( | 1486 ## self.certificatesAct = E5Action( |
1472 ## self.tr('Manage SSL Certificates'), | 1487 ## self.tr('Manage SSL Certificates'), |
1473 ## UI.PixmapCache.getIcon("certificates.png"), | 1488 ## UI.PixmapCache.getIcon("certificates.png"), |
1474 ## self.tr('Manage SSL Certificates...'), | 1489 ## self.tr('Manage SSL Certificates...'), |
1484 ## if not self.__initShortcutsOnly: | 1499 ## if not self.__initShortcutsOnly: |
1485 ## self.certificatesAct.triggered.connect( | 1500 ## self.certificatesAct.triggered.connect( |
1486 ## self.__showCertificatesDialog) | 1501 ## self.__showCertificatesDialog) |
1487 ## self.__actions.append(self.certificatesAct) | 1502 ## self.__actions.append(self.certificatesAct) |
1488 | 1503 |
1504 # TODO: Network Monitor (?) | |
1489 ## self.toolsMonitorAct = E5Action( | 1505 ## self.toolsMonitorAct = E5Action( |
1490 ## self.tr('Network Monitor'), | 1506 ## self.tr('Network Monitor'), |
1491 ## self.tr('&Network Monitor...'), | 1507 ## self.tr('&Network Monitor...'), |
1492 ## 0, 0, | 1508 ## 0, 0, |
1493 ## self, 'webbrowser_tools_network_monitor') | 1509 ## self, 'webbrowser_tools_network_monitor') |
1500 ## if not self.__initShortcutsOnly: | 1516 ## if not self.__initShortcutsOnly: |
1501 ## self.toolsMonitorAct.triggered.connect( | 1517 ## self.toolsMonitorAct.triggered.connect( |
1502 ## self.__showNetworkMonitor) | 1518 ## self.__showNetworkMonitor) |
1503 ## self.__actions.append(self.toolsMonitorAct) | 1519 ## self.__actions.append(self.toolsMonitorAct) |
1504 | 1520 |
1505 # TODO: re-enable once Download Manager has been done | 1521 # TODO: Download Manager |
1506 ## self.showDownloadManagerAct = E5Action( | 1522 ## self.showDownloadManagerAct = E5Action( |
1507 ## self.tr('Downloads'), | 1523 ## self.tr('Downloads'), |
1508 ## self.tr('Downloads'), | 1524 ## self.tr('Downloads'), |
1509 ## 0, 0, self, 'webbrowser_show_downloads') | 1525 ## 0, 0, self, 'webbrowser_show_downloads') |
1510 ## self.showDownloadManagerAct.setStatusTip(self.tr( | 1526 ## self.showDownloadManagerAct.setStatusTip(self.tr( |
1516 ## if not self.__initShortcutsOnly: | 1532 ## if not self.__initShortcutsOnly: |
1517 ## self.showDownloadManagerAct.triggered.connect( | 1533 ## self.showDownloadManagerAct.triggered.connect( |
1518 ## self.__showDownloadsWindow) | 1534 ## self.__showDownloadsWindow) |
1519 ## self.__actions.append(self.showDownloadManagerAct) | 1535 ## self.__actions.append(self.showDownloadManagerAct) |
1520 | 1536 |
1521 # TODO: re-enable once RSS Feeds Manager has been done | 1537 # TODO: RSS Feeds Manager |
1522 ## self.feedsManagerAct = E5Action( | 1538 ## self.feedsManagerAct = E5Action( |
1523 ## self.tr('RSS Feeds Dialog'), | 1539 ## self.tr('RSS Feeds Dialog'), |
1524 ## UI.PixmapCache.getIcon("rss22.png"), | 1540 ## UI.PixmapCache.getIcon("rss22.png"), |
1525 ## self.tr('&RSS Feeds Dialog...'), | 1541 ## self.tr('&RSS Feeds Dialog...'), |
1526 ## QKeySequence(self.tr("Ctrl+Shift+F", "Help|RSS Feeds Dialog")), | 1542 ## QKeySequence(self.tr("Ctrl+Shift+F", "Help|RSS Feeds Dialog")), |
1535 ## )) | 1551 ## )) |
1536 ## if not self.__initShortcutsOnly: | 1552 ## if not self.__initShortcutsOnly: |
1537 ## self.feedsManagerAct.triggered.connect(self.__showFeedsManager) | 1553 ## self.feedsManagerAct.triggered.connect(self.__showFeedsManager) |
1538 ## self.__actions.append(self.feedsManagerAct) | 1554 ## self.__actions.append(self.feedsManagerAct) |
1539 | 1555 |
1556 # TODO: Site Info | |
1540 ## self.siteInfoAct = E5Action( | 1557 ## self.siteInfoAct = E5Action( |
1541 ## self.tr('Siteinfo Dialog'), | 1558 ## self.tr('Siteinfo Dialog'), |
1542 ## UI.PixmapCache.getIcon("helpAbout.png"), | 1559 ## UI.PixmapCache.getIcon("helpAbout.png"), |
1543 ## self.tr('&Siteinfo Dialog...'), | 1560 ## self.tr('&Siteinfo Dialog...'), |
1544 ## QKeySequence(self.tr("Ctrl+Shift+I", "Help|Siteinfo Dialog")), | 1561 ## QKeySequence(self.tr("Ctrl+Shift+I", "Help|Siteinfo Dialog")), |
1552 ## )) | 1569 ## )) |
1553 ## if not self.__initShortcutsOnly: | 1570 ## if not self.__initShortcutsOnly: |
1554 ## self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog) | 1571 ## self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog) |
1555 ## self.__actions.append(self.siteInfoAct) | 1572 ## self.__actions.append(self.siteInfoAct) |
1556 | 1573 |
1574 # TODO: User Agents | |
1557 ## self.userAgentManagerAct = E5Action( | 1575 ## self.userAgentManagerAct = E5Action( |
1558 ## self.tr('Manage User Agent Settings'), | 1576 ## self.tr('Manage User Agent Settings'), |
1559 ## self.tr('Manage &User Agent Settings'), | 1577 ## self.tr('Manage &User Agent Settings'), |
1560 ## 0, 0, self, 'webbrowser_user_agent_settings') | 1578 ## 0, 0, self, 'webbrowser_user_agent_settings') |
1561 ## self.userAgentManagerAct.setStatusTip(self.tr( | 1579 ## self.userAgentManagerAct.setStatusTip(self.tr( |
1567 ## if not self.__initShortcutsOnly: | 1585 ## if not self.__initShortcutsOnly: |
1568 ## self.userAgentManagerAct.triggered.connect( | 1586 ## self.userAgentManagerAct.triggered.connect( |
1569 ## self.__showUserAgentsDialog) | 1587 ## self.__showUserAgentsDialog) |
1570 ## self.__actions.append(self.userAgentManagerAct) | 1588 ## self.__actions.append(self.userAgentManagerAct) |
1571 | 1589 |
1590 # TODO: Synchronisation | |
1572 ## self.synchronizationAct = E5Action( | 1591 ## self.synchronizationAct = E5Action( |
1573 ## self.tr('Synchronize data'), | 1592 ## self.tr('Synchronize data'), |
1574 ## UI.PixmapCache.getIcon("sync.png"), | 1593 ## UI.PixmapCache.getIcon("sync.png"), |
1575 ## self.tr('&Synchronize Data...'), | 1594 ## self.tr('&Synchronize Data...'), |
1576 ## 0, 0, self, 'webbrowser_synchronize_data') | 1595 ## 0, 0, self, 'webbrowser_synchronize_data') |
1584 ## if not self.__initShortcutsOnly: | 1603 ## if not self.__initShortcutsOnly: |
1585 ## self.synchronizationAct.triggered.connect( | 1604 ## self.synchronizationAct.triggered.connect( |
1586 ## self.__showSyncDialog) | 1605 ## self.__showSyncDialog) |
1587 ## self.__actions.append(self.synchronizationAct) | 1606 ## self.__actions.append(self.synchronizationAct) |
1588 | 1607 |
1589 # TODO: re-enable once zoom stuff is done | 1608 # TODO: Zoom Manager |
1590 ## self.zoomValuesAct = E5Action( | 1609 ## self.zoomValuesAct = E5Action( |
1591 ## self.tr('Manage Saved Zoom Values'), | 1610 ## self.tr('Manage Saved Zoom Values'), |
1592 ## UI.PixmapCache.getIcon("zoomReset.png"), | 1611 ## UI.PixmapCache.getIcon("zoomReset.png"), |
1593 ## self.tr('Manage Saved Zoom Values...'), | 1612 ## self.tr('Manage Saved Zoom Values...'), |
1594 ## 0, 0, | 1613 ## 0, 0, |
1675 menu.addAction(self.forwardAct) | 1694 menu.addAction(self.forwardAct) |
1676 menu.addAction(self.homeAct) | 1695 menu.addAction(self.homeAct) |
1677 menu.addSeparator() | 1696 menu.addSeparator() |
1678 menu.addAction(self.stopAct) | 1697 menu.addAction(self.stopAct) |
1679 menu.addAction(self.reloadAct) | 1698 menu.addAction(self.reloadAct) |
1699 # TODO: QtHelp | |
1680 ## if WebBrowserWindow.UseQtHelp: | 1700 ## if WebBrowserWindow.UseQtHelp: |
1681 ## menu.addSeparator() | 1701 ## menu.addSeparator() |
1682 ## menu.addAction(self.syncTocAct) | 1702 ## menu.addAction(self.syncTocAct) |
1683 | 1703 |
1684 # TODO: re-enable once History stuff is done | 1704 # TODO: History |
1685 ## from .History.HistoryMenu import HistoryMenu | 1705 ## from .History.HistoryMenu import HistoryMenu |
1686 ## self.historyMenu = HistoryMenu(self, self.__tabWidget) | 1706 ## self.historyMenu = HistoryMenu(self, self.__tabWidget) |
1687 ## self.historyMenu.setTearOffEnabled(True) | 1707 ## self.historyMenu.setTearOffEnabled(True) |
1688 ## self.historyMenu.setTitle(self.tr('H&istory')) | 1708 ## self.historyMenu.setTitle(self.tr('H&istory')) |
1689 ## self.historyMenu.openUrl.connect(self.openUrl) | 1709 ## self.historyMenu.openUrl.connect(self.openUrl) |
1690 ## self.historyMenu.newUrl.connect(self.openUrlNewTab) | 1710 ## self.historyMenu.newUrl.connect(self.openUrlNewTab) |
1691 ## mb.addMenu(self.historyMenu) | 1711 ## mb.addMenu(self.historyMenu) |
1692 | 1712 |
1693 # TODO: re-enable once Bookmarks stuff is done | 1713 # TODO: Bookmarks |
1694 ## from .Bookmarks.BookmarksMenu import BookmarksMenuBarMenu | 1714 ## from .Bookmarks.BookmarksMenu import BookmarksMenuBarMenu |
1695 ## self.bookmarksMenu = BookmarksMenuBarMenu(self) | 1715 ## self.bookmarksMenu = BookmarksMenuBarMenu(self) |
1696 ## self.bookmarksMenu.setTearOffEnabled(True) | 1716 ## self.bookmarksMenu.setTearOffEnabled(True) |
1697 ## self.bookmarksMenu.setTitle(self.tr('&Bookmarks')) | 1717 ## self.bookmarksMenu.setTitle(self.tr('&Bookmarks')) |
1698 ## self.bookmarksMenu.openUrl.connect(self.openUrl) | 1718 ## self.bookmarksMenu.openUrl.connect(self.openUrl) |
1887 ## sizePolicy.setHorizontalStretch(2) | 1907 ## sizePolicy.setHorizontalStretch(2) |
1888 ## sizePolicy.setVerticalStretch(0) | 1908 ## sizePolicy.setVerticalStretch(0) |
1889 ## self.searchEdit.setSizePolicy(sizePolicy) | 1909 ## self.searchEdit.setSizePolicy(sizePolicy) |
1890 ## self.searchEdit.search.connect(self.__linkActivated) | 1910 ## self.searchEdit.search.connect(self.__linkActivated) |
1891 ## self.__navigationSplitter.addWidget(self.searchEdit) | 1911 ## self.__navigationSplitter.addWidget(self.searchEdit) |
1892 ## gotb.addWidget(self.__navigationSplitter) | 1912 gotb.addWidget(self.__navigationSplitter) |
1893 | 1913 |
1894 self.__navigationSplitter.setSizePolicy( | 1914 self.__navigationSplitter.setSizePolicy( |
1895 QSizePolicy.Expanding, QSizePolicy.Maximum) | 1915 QSizePolicy.Expanding, QSizePolicy.Maximum) |
1896 self.__navigationSplitter.setCollapsible(0, False) | 1916 self.__navigationSplitter.setCollapsible(0, False) |
1897 | 1917 |
2371 """ | 2391 """ |
2372 Private slot called to handle loading of the current page. | 2392 Private slot called to handle loading of the current page. |
2373 """ | 2393 """ |
2374 self.currentBrowser().stop() | 2394 self.currentBrowser().stop() |
2375 | 2395 |
2376 ## def __zoomValueChanged(self, value): | 2396 def __zoomValueChanged(self, value): |
2377 ## """ | 2397 """ |
2378 ## Private slot to handle value changes of the zoom widget. | 2398 Private slot to handle value changes of the zoom widget. |
2379 ## | 2399 |
2380 ## @param value zoom value (integer) | 2400 @param value zoom value (integer) |
2381 ## """ | 2401 """ |
2382 ## self.currentBrowser().setZoomValue(value) | 2402 self.currentBrowser().setZoomValue(value) |
2383 ## | 2403 |
2384 ## def __zoomIn(self): | 2404 def __zoomIn(self): |
2385 ## """ | 2405 """ |
2386 ## Private slot called to handle the zoom in action. | 2406 Private slot called to handle the zoom in action. |
2387 ## """ | 2407 """ |
2388 ## self.currentBrowser().zoomIn() | 2408 self.currentBrowser().zoomIn() |
2389 ## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) | 2409 self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) |
2390 ## | 2410 |
2391 ## def __zoomOut(self): | 2411 def __zoomOut(self): |
2392 ## """ | 2412 """ |
2393 ## Private slot called to handle the zoom out action. | 2413 Private slot called to handle the zoom out action. |
2394 ## """ | 2414 """ |
2395 ## self.currentBrowser().zoomOut() | 2415 self.currentBrowser().zoomOut() |
2396 ## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) | 2416 self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) |
2397 ## | 2417 |
2398 ## def __zoomReset(self): | 2418 def __zoomReset(self): |
2399 ## """ | 2419 """ |
2400 ## Private slot called to handle the zoom reset action. | 2420 Private slot called to handle the zoom reset action. |
2401 ## """ | 2421 """ |
2402 ## self.currentBrowser().zoomReset() | 2422 self.currentBrowser().zoomReset() |
2403 ## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) | 2423 self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) |
2404 ## | 2424 |
2405 ## def __zoomTextOnly(self, textOnly): | 2425 ## def __zoomTextOnly(self, textOnly): |
2406 ## """ | 2426 ## """ |
2407 ## Private slot called to handle the zoom text only action. | 2427 ## Private slot called to handle the zoom text only action. |
2408 ## | 2428 ## |
2409 ## @param textOnly flag indicating to zoom text only (boolean) | 2429 ## @param textOnly flag indicating to zoom text only (boolean) |
2519 cb = self.currentBrowser() | 2539 cb = self.currentBrowser() |
2520 if cb is not None: | 2540 if cb is not None: |
2521 self.setForwardAvailable(cb.isForwardAvailable()) | 2541 self.setForwardAvailable(cb.isForwardAvailable()) |
2522 self.setBackwardAvailable(cb.isBackwardAvailable()) | 2542 self.setBackwardAvailable(cb.isBackwardAvailable()) |
2523 self.setLoadingActions(cb.isLoading()) | 2543 self.setLoadingActions(cb.isLoading()) |
2524 ## | 2544 |
2525 ## # set value of zoom widget | 2545 # set value of zoom widget |
2526 ## self.__zoomWidget.setValue(cb.zoomValue()) | 2546 self.__zoomWidget.setValue(cb.zoomValue()) |
2527 | 2547 |
2528 def __showPreferences(self): | 2548 def __showPreferences(self): |
2529 """ | 2549 """ |
2530 Private slot to set the preferences. | 2550 Private slot to set the preferences. |
2531 """ | 2551 """ |