WebBrowser/WebBrowserWindow.py

branch
QtWebEngine
changeset 4753
8d2ea02ed785
parent 4752
a3bcc42a82a9
child 4754
1ff6d0ecb2fd
equal deleted inserted replaced
4752:a3bcc42a82a9 4753:8d2ea02ed785
36 from E5Gui import E5MessageBox, E5FileDialog, E5ErrorMessage 36 from E5Gui import E5MessageBox, E5FileDialog, E5ErrorMessage
37 from E5Gui.E5MainWindow import E5MainWindow 37 from E5Gui.E5MainWindow import E5MainWindow
38 from E5Gui.E5Application import e5App 38 from E5Gui.E5Application import e5App
39 from E5Gui.E5ZoomWidget import E5ZoomWidget 39 from E5Gui.E5ZoomWidget import E5ZoomWidget
40 40
41 ##from E5Network.E5NetworkIcon import E5NetworkIcon 41 from E5Network.E5NetworkIcon import E5NetworkIcon
42 42
43 import Preferences 43 import Preferences
44 from Preferences import Shortcuts 44 from Preferences import Shortcuts
45 45
46 import Utilities 46 import Utilities
135 135
136 if self.__initShortcutsOnly: 136 if self.__initShortcutsOnly:
137 self.__initActions() 137 self.__initActions()
138 else: 138 else:
139 self.webProfile(private) 139 self.webProfile(private)
140 ## if self.isPrivate():
141 ## self.__webProfile = QWebEngineProfile(self)
142 ## else:
143 ## self.__webProfile = QWebEngineProfile.defaultProfile()
144 ## self.__webProfile.downloadRequested.connect(
145 ## self.__downloadRequested)
146 ##
147 ## # Setup QWebChannel user script
148 ## script = QWebEngineScript()
149 ## script.setName("_eric_webchannel")
150 ## script.setInjectionPoint(QWebEngineScript.DocumentCreation)
151 ## script.setWorldId(QWebEngineScript.MainWorld)
152 ## script.setRunsOnSubFrames(True)
153 ## script.setSourceCode(Scripts.setupWebChannel())
154 ## self.__webProfile.scripts().insert(script)
155 140
156 from .SearchWidget import SearchWidget 141 from .SearchWidget import SearchWidget
157 # TODO: QtHelp 142 # TODO: QtHelp
158 ## from .HelpTocWidget import HelpTocWidget 143 ## from .HelpTocWidget import HelpTocWidget
159 ## from .HelpIndexWidget import HelpIndexWidget 144 ## from .HelpIndexWidget import HelpIndexWidget
160 ## from .HelpSearchWidget import HelpSearchWidget 145 ## from .HelpSearchWidget import HelpSearchWidget
161 from .WebBrowserView import WebBrowserView 146 from .WebBrowserView import WebBrowserView
162 from .WebBrowserTabWidget import WebBrowserTabWidget 147 from .WebBrowserTabWidget import WebBrowserTabWidget
163 # TODO: AdBlock 148 # TODO: AdBlock
164 ## from .AdBlock.AdBlockIcon import AdBlockIcon 149 ## from .AdBlock.AdBlockIcon import AdBlockIcon
165 # TODO: VirusTotal 150 from .VirusTotal.VirusTotalApi import VirusTotalAPI
166 ## from .VirusTotal.VirusTotalApi import VirusTotalAPI
167 151
168 # TODO: allow using Qt Help even if not called from eric6 152 # TODO: allow using Qt Help even if not called from eric6
169 WebBrowserWindow.setUseQtHelp(self.__fromEric) 153 WebBrowserWindow.setUseQtHelp(self.__fromEric)
170 154
171 if not self.__fromEric: 155 if not self.__fromEric:
266 250
267 self.__initActions() 251 self.__initActions()
268 self.__initMenus() 252 self.__initMenus()
269 self.__initToolbars() 253 self.__initToolbars()
270 254
271 ## self.historyManager() 255 self.historyManager()
272 ## 256
257 # TODO: Sync
273 ## syncMgr = self.syncManager() 258 ## syncMgr = self.syncManager()
274 ## syncMgr.syncMessage.connect(self.statusBar().showMessage) 259 ## syncMgr.syncMessage.connect(self.statusBar().showMessage)
275 ## syncMgr.syncError.connect(self.statusBar().showMessage) 260 ## syncMgr.syncError.connect(self.statusBar().showMessage)
276 ## 261 ##
277 self.__tabWidget.newBrowser(home) 262 self.__tabWidget.newBrowser(home)
278 self.__tabWidget.currentBrowser().setFocus() 263 self.__tabWidget.currentBrowser().setFocus()
279 264
280 WebBrowserWindow.BrowserWindows.append(self) 265 WebBrowserWindow.BrowserWindows.append(self)
281 266
267 # TODO: AdBlock
282 ## self.__adBlockIcon = AdBlockIcon(self) 268 ## self.__adBlockIcon = AdBlockIcon(self)
283 ## self.statusBar().addPermanentWidget(self.__adBlockIcon) 269 ## self.statusBar().addPermanentWidget(self.__adBlockIcon)
284 ## self.__adBlockIcon.setEnabled( 270 ## self.__adBlockIcon.setEnabled(
285 ## Preferences.getWebBrowser("AdBlockEnabled")) 271 ## Preferences.getWebBrowser("AdBlockEnabled"))
286 ## self.__tabWidget.currentChanged[int].connect( 272 ## self.__tabWidget.currentChanged[int].connect(
287 ## self.__adBlockIcon.currentChanged) 273 ## self.__adBlockIcon.currentChanged)
288 ## self.__tabWidget.sourceChanged.connect( 274 ## self.__tabWidget.sourceChanged.connect(
289 ## self.__adBlockIcon.sourceChanged) 275 ## self.__adBlockIcon.sourceChanged)
290 ## 276 ##
291 ## self.networkIcon = E5NetworkIcon(self) 277 self.networkIcon = E5NetworkIcon(self)
292 ## self.statusBar().addPermanentWidget(self.networkIcon) 278 self.statusBar().addPermanentWidget(self.networkIcon)
293 ## 279
294 QDesktopServices.setUrlHandler("http", self.__linkActivated) 280 QDesktopServices.setUrlHandler("http", self.__linkActivated)
295 QDesktopServices.setUrlHandler("https", self.__linkActivated) 281 QDesktopServices.setUrlHandler("https", self.__linkActivated)
296 282
297 # setup connections 283 # setup connections
298 self.__activating = False 284 self.__activating = False
315 ## self.__activateCurrentBrowser) 301 ## self.__activateCurrentBrowser)
316 302
317 state = Preferences.getWebBrowser("WebBrowserState") 303 state = Preferences.getWebBrowser("WebBrowserState")
318 self.restoreState(state) 304 self.restoreState(state)
319 305
306 # TODO: QtHelp
320 ## self.__initHelpDb() 307 ## self.__initHelpDb()
321 308
322 ## self.__virusTotal = VirusTotalAPI(self) 309 self.__virusTotal = VirusTotalAPI(self)
323 ## self.__virusTotal.submitUrlError.connect( 310 self.__virusTotal.submitUrlError.connect(
324 ## self.__virusTotalSubmitUrlError) 311 self.__virusTotalSubmitUrlError)
325 ## self.__virusTotal.urlScanReport.connect( 312 self.__virusTotal.urlScanReport.connect(
326 ## self.__virusTotalUrlScanReport) 313 self.__virusTotalUrlScanReport)
327 ## self.__virusTotal.fileScanReport.connect( 314 self.__virusTotal.fileScanReport.connect(
328 ## self.__virusTotalFileScanReport) 315 self.__virusTotalFileScanReport)
329 ## 316
330 self.__previewer = None 317 self.__previewer = None
331 self.__shutdownCalled = False 318 self.__shutdownCalled = False
332 319
333 ## self.flashCookieManager() 320 self.flashCookieManager()
334 ## 321
335 # TODO: QtHelp, do these once Qt 5.6 is available 322 # TODO: QtHelp, do these once Qt 5.6 is available
336 ## if WebBrowserWindow.UseQtHelp: 323 ## if WebBrowserWindow.UseQtHelp:
337 ## QTimer.singleShot(0, self.__lookForNewDocumentation) 324 ## QTimer.singleShot(0, self.__lookForNewDocumentation)
338 ## if self.__searchWord is not None: 325 ## if self.__searchWord is not None:
339 ## QTimer.singleShot(0, self.__searchForWord) 326 ## QTimer.singleShot(0, self.__searchForWord)
340 ## 327 ##
341 self.__lastActiveWindow = None 328 self.__lastActiveWindow = None
342 e5App().focusChanged[QWidget, QWidget].connect( 329 e5App().focusChanged[QWidget, QWidget].connect(
343 self.__appFocusChanged) 330 self.__appFocusChanged)
331 #TODO: Sync
344 ## 332 ##
345 ## QTimer.singleShot(0, syncMgr.loadSettings) 333 ## QTimer.singleShot(0, syncMgr.loadSettings)
346 334
347 def __del__(self): 335 def __del__(self):
348 """ 336 """
384 """ 372 """
385 Private method to set the global web settings. 373 Private method to set the global web settings.
386 """ 374 """
387 standardFont = Preferences.getWebBrowser("StandardFont") 375 standardFont = Preferences.getWebBrowser("StandardFont")
388 fixedFont = Preferences.getWebBrowser("FixedFont") 376 fixedFont = Preferences.getWebBrowser("FixedFont")
377 # TODO: Fonts: add support for other font types
389 378
390 settings = QWebEngineSettings.globalSettings() 379 settings = QWebEngineSettings.globalSettings()
391 ## settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True) 380 ## settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
392 381
393 settings.setFontFamily(QWebEngineSettings.StandardFont, 382 settings.setFontFamily(QWebEngineSettings.StandardFont,
576 """ It pops up a file selection dialog.</p>""" 565 """ It pops up a file selection dialog.</p>"""
577 )) 566 ))
578 if not self.__initShortcutsOnly: 567 if not self.__initShortcutsOnly:
579 self.openTabAct.triggered.connect(self.__openFileNewTab) 568 self.openTabAct.triggered.connect(self.__openFileNewTab)
580 self.__actions.append(self.openTabAct) 569 self.__actions.append(self.openTabAct)
570 # TODO: Save
581 ## 571 ##
582 ## self.saveAsAct = E5Action( 572 ## self.saveAsAct = E5Action(
583 ## self.tr('Save As'), 573 ## self.tr('Save As'),
584 ## UI.PixmapCache.getIcon("fileSaveAs.png"), 574 ## UI.PixmapCache.getIcon("fileSaveAs.png"),
585 ## self.tr('&Save As...'), 575 ## self.tr('&Save As...'),
1384 if not self.__initShortcutsOnly: 1374 if not self.__initShortcutsOnly:
1385 self.featurePermissionAct.triggered.connect( 1375 self.featurePermissionAct.triggered.connect(
1386 self.__showFeaturePermissionDialog) 1376 self.__showFeaturePermissionDialog)
1387 self.__actions.append(self.featurePermissionAct) 1377 self.__actions.append(self.featurePermissionAct)
1388 1378
1389 # TODO: re-enable once Qt 5.6 is available 1379 # TODO: QtHelp: re-enable once Qt 5.6 is available
1390 ## if WebBrowserWindow.UseQtHelp or self.__initShortcutsOnly: 1380 ## if WebBrowserWindow.UseQtHelp or self.__initShortcutsOnly:
1391 ## self.syncTocAct = E5Action( 1381 ## self.syncTocAct = E5Action(
1392 ## self.tr('Sync with Table of Contents'), 1382 ## self.tr('Sync with Table of Contents'),
1393 ## UI.PixmapCache.getIcon("syncToc.png"), 1383 ## UI.PixmapCache.getIcon("syncToc.png"),
1394 ## self.tr('Sync with Table of Contents'), 1384 ## self.tr('Sync with Table of Contents'),
1881 ## self.__userAgentMenu = UserAgentMenu(self.tr("Global User Agent")) 1871 ## self.__userAgentMenu = UserAgentMenu(self.tr("Global User Agent"))
1882 ## menu.addMenu(self.__userAgentMenu) 1872 ## menu.addMenu(self.__userAgentMenu)
1883 ## menu.addAction(self.userAgentManagerAct) 1873 ## menu.addAction(self.userAgentManagerAct)
1884 ## menu.addSeparator() 1874 ## menu.addSeparator()
1885 1875
1876 # TODO: QtHelp
1886 ## if WebBrowserWindow.UseQtHelp: 1877 ## if WebBrowserWindow.UseQtHelp:
1887 ## menu.addAction(self.manageQtHelpDocsAct) 1878 ## menu.addAction(self.manageQtHelpDocsAct)
1888 ## menu.addAction(self.manageQtHelpFiltersAct) 1879 ## menu.addAction(self.manageQtHelpFiltersAct)
1889 ## menu.addAction(self.reindexDocumentationAct) 1880 ## menu.addAction(self.reindexDocumentationAct)
1890 ## menu.addSeparator() 1881 ## menu.addSeparator()
1891 menu.addAction(self.clearPrivateDataAct) 1882 menu.addAction(self.clearPrivateDataAct)
1892 menu.addAction(self.clearIconsAct) 1883 menu.addAction(self.clearIconsAct)
1893 1884
1894 ## menu = mb.addMenu(self.tr("&Tools")) 1885 menu = mb.addMenu(self.tr("&Tools"))
1895 ## menu.setTearOffEnabled(True) 1886 menu.setTearOffEnabled(True)
1896 ## menu.addAction(self.feedsManagerAct) 1887 ## menu.addAction(self.feedsManagerAct)
1897 ## menu.addAction(self.siteInfoAct) 1888 ## menu.addAction(self.siteInfoAct)
1898 ## menu.addSeparator() 1889 ## menu.addSeparator()
1899 ## menu.addAction(self.synchronizationAct) 1890 ## menu.addAction(self.synchronizationAct)
1900 ## menu.addSeparator() 1891 ## menu.addSeparator()
1973 findtb.setIconSize(UI.Config.ToolBarIconSize) 1964 findtb.setIconSize(UI.Config.ToolBarIconSize)
1974 findtb.addAction(self.findAct) 1965 findtb.addAction(self.findAct)
1975 findtb.addAction(self.findNextAct) 1966 findtb.addAction(self.findNextAct)
1976 findtb.addAction(self.findPrevAct) 1967 findtb.addAction(self.findPrevAct)
1977 1968
1969 # TODO: QtHelp
1978 ## if WebBrowserWindow.UseQtHelp: 1970 ## if WebBrowserWindow.UseQtHelp:
1979 ## filtertb = self.addToolBar(self.tr("Filter")) 1971 ## filtertb = self.addToolBar(self.tr("Filter"))
1980 ## filtertb.setObjectName("FilterToolBar") 1972 ## filtertb.setObjectName("FilterToolBar")
1981 ## self.filterCombo = QComboBox() 1973 ## self.filterCombo = QComboBox()
1982 ## self.filterCombo.setMinimumWidth( 1974 ## self.filterCombo.setMinimumWidth(
1998 ## settingstb.addAction(self.offlineStorageAct) 1990 ## settingstb.addAction(self.offlineStorageAct)
1999 settingstb.addAction(self.personalDataAct) 1991 settingstb.addAction(self.personalDataAct)
2000 ## settingstb.addAction(self.greaseMonkeyAct) 1992 ## settingstb.addAction(self.greaseMonkeyAct)
2001 settingstb.addAction(self.featurePermissionAct) 1993 settingstb.addAction(self.featurePermissionAct)
2002 1994
2003 ## toolstb = self.addToolBar(self.tr("Tools")) 1995 toolstb = self.addToolBar(self.tr("Tools"))
2004 ## toolstb.setObjectName("ToolsToolBar") 1996 toolstb.setObjectName("ToolsToolBar")
2005 ## toolstb.setIconSize(UI.Config.ToolBarIconSize) 1997 toolstb.setIconSize(UI.Config.ToolBarIconSize)
2006 ## toolstb.addAction(self.feedsManagerAct) 1998 ## toolstb.addAction(self.feedsManagerAct)
2007 ## toolstb.addAction(self.siteInfoAct) 1999 ## toolstb.addAction(self.siteInfoAct)
2008 ## toolstb.addSeparator() 2000 ## toolstb.addSeparator()
2009 ## toolstb.addAction(self.synchronizationAct) 2001 ## toolstb.addAction(self.synchronizationAct)
2010 2002
2065 self.bookmarksToolBar.openUrl.connect(self.openUrl) 2057 self.bookmarksToolBar.openUrl.connect(self.openUrl)
2066 self.bookmarksToolBar.newUrl.connect(self.openUrlNewTab) 2058 self.bookmarksToolBar.newUrl.connect(self.openUrlNewTab)
2067 self.addToolBarBreak() 2059 self.addToolBarBreak()
2068 self.addToolBar(self.bookmarksToolBar) 2060 self.addToolBar(self.bookmarksToolBar)
2069 2061
2070 ## self.addToolBarBreak() 2062 self.addToolBarBreak()
2071 ## vttb = self.addToolBar(self.tr("VirusTotal")) 2063 vttb = self.addToolBar(self.tr("VirusTotal"))
2072 ## vttb.setObjectName("VirusTotalToolBar") 2064 vttb.setObjectName("VirusTotalToolBar")
2073 ## vttb.setIconSize(UI.Config.ToolBarIconSize) 2065 vttb.setIconSize(UI.Config.ToolBarIconSize)
2074 ## vttb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) 2066 vttb.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
2075 ## self.virustotalScanCurrentAct = vttb.addAction( 2067 self.virustotalScanCurrentAct = vttb.addAction(
2076 ## UI.PixmapCache.getIcon("virustotal.png"), 2068 UI.PixmapCache.getIcon("virustotal.png"),
2077 ## self.tr("Scan current site"), 2069 self.tr("Scan current site"),
2078 ## self.__virusTotalScanCurrentSite) 2070 self.__virusTotalScanCurrentSite)
2079 ## self.virustotalIpReportAct = vttb.addAction( 2071 self.virustotalIpReportAct = vttb.addAction(
2080 ## UI.PixmapCache.getIcon("virustotal.png"), 2072 UI.PixmapCache.getIcon("virustotal.png"),
2081 ## self.tr("IP Address Report"), 2073 self.tr("IP Address Report"),
2082 ## self.__virusTotalIpAddressReport) 2074 self.__virusTotalIpAddressReport)
2083 ## self.virustotalDomainReportAct = vttb.addAction( 2075 self.virustotalDomainReportAct = vttb.addAction(
2084 ## UI.PixmapCache.getIcon("virustotal.png"), 2076 UI.PixmapCache.getIcon("virustotal.png"),
2085 ## self.tr("Domain Report"), 2077 self.tr("Domain Report"),
2086 ## self.__virusTotalDomainReport) 2078 self.__virusTotalDomainReport)
2087 ## if not Preferences.getWebBrowser("VirusTotalEnabled") or \ 2079 if not Preferences.getWebBrowser("VirusTotalEnabled") or \
2088 ## Preferences.getWebBrowser("VirusTotalServiceKey") == "": 2080 Preferences.getWebBrowser("VirusTotalServiceKey") == "":
2089 ## self.virustotalScanCurrentAct.setEnabled(False) 2081 self.virustotalScanCurrentAct.setEnabled(False)
2090 ## self.virustotalIpReportAct.setEnabled(False) 2082 self.virustotalIpReportAct.setEnabled(False)
2091 ## self.virustotalDomainReportAct.setEnabled(False) 2083 self.virustotalDomainReportAct.setEnabled(False)
2092 2084
2093 def __nextTab(self): 2085 def __nextTab(self):
2094 """ 2086 """
2095 Private slot used to show the next tab. 2087 Private slot used to show the next tab.
2096 """ 2088 """
2478 ## self.cookieJar().close() 2470 ## self.cookieJar().close()
2479 ## 2471 ##
2480 self.bookmarksToolBar.setModel(None) 2472 self.bookmarksToolBar.setModel(None)
2481 self.bookmarksManager().close() 2473 self.bookmarksManager().close()
2482 2474
2483 ## self.historyManager().close() 2475 self.historyManager().close()
2484 ## 2476
2485 self.passwordManager().close() 2477 self.passwordManager().close()
2486 2478
2487 ## self.adBlockManager().close() 2479 ## self.adBlockManager().close()
2488 ## 2480 ##
2489 ## self.userAgentsManager().close() 2481 ## self.userAgentsManager().close()
2493 ## self.syncManager().close() 2485 ## self.syncManager().close()
2494 2486
2495 ZoomManager.instance().close() 2487 ZoomManager.instance().close()
2496 2488
2497 WebIconProvider.instance().close() 2489 WebIconProvider.instance().close()
2498 ## 2490
2499 ## self.__virusTotal.close() 2491 self.__virusTotal.close()
2500 ## 2492
2501 ## self.flashCookieManager().shutdown() 2493 self.flashCookieManager().shutdown()
2502 ## 2494
2503 self.searchEdit.openSearchManager().close() 2495 self.searchEdit.openSearchManager().close()
2504 2496
2497 # TODO: QtHelp
2505 ## if WebBrowserWindow.UseQtHelp: 2498 ## if WebBrowserWindow.UseQtHelp:
2506 ## self.__searchEngine.cancelIndexing() 2499 ## self.__searchEngine.cancelIndexing()
2507 ## self.__searchEngine.cancelSearching() 2500 ## self.__searchEngine.cancelSearching()
2508 ## 2501 ##
2509 ## if self.__helpInstaller: 2502 ## if self.__helpInstaller:
2667 def __selectAll(self): 2660 def __selectAll(self):
2668 """ 2661 """
2669 Private slot to handle the select all action. 2662 Private slot to handle the select all action.
2670 """ 2663 """
2671 self.currentBrowser().selectAll() 2664 self.currentBrowser().selectAll()
2665 # TODO: Private Browsing
2672 ## 2666 ##
2673 ## def __privateBrowsing(self): 2667 ## def __privateBrowsing(self):
2674 ## """ 2668 ## """
2675 ## Private slot to switch private browsing. 2669 ## Private slot to switch private browsing.
2676 ## """ 2670 ## """
2801 2795
2802 self.__tabWidget.preferencesChanged() 2796 self.__tabWidget.preferencesChanged()
2803 2797
2804 self.searchEdit.preferencesChanged() 2798 self.searchEdit.preferencesChanged()
2805 2799
2806 # TODO: VirusTotal 2800 self.__virusTotal.preferencesChanged()
2807 ## self.__virusTotal.preferencesChanged() 2801 if not Preferences.getWebBrowser("VirusTotalEnabled") or \
2808 ## if not Preferences.getWebBrowser("VirusTotalEnabled") or \ 2802 Preferences.getWebBrowser("VirusTotalServiceKey") == "":
2809 ## Preferences.getWebBrowser("VirusTotalServiceKey") == "": 2803 self.virustotalScanCurrentAct.setEnabled(False)
2810 ## self.virustotalScanCurrentAct.setEnabled(False) 2804 self.virustotalIpReportAct.setEnabled(False)
2811 ## self.virustotalIpReportAct.setEnabled(False) 2805 self.virustotalDomainReportAct.setEnabled(False)
2812 ## self.virustotalDomainReportAct.setEnabled(False) 2806 else:
2813 ## else: 2807 self.virustotalScanCurrentAct.setEnabled(True)
2814 ## self.virustotalScanCurrentAct.setEnabled(True) 2808 self.virustotalIpReportAct.setEnabled(True)
2815 ## self.virustotalIpReportAct.setEnabled(True) 2809 self.virustotalDomainReportAct.setEnabled(True)
2816 ## self.virustotalDomainReportAct.setEnabled(True)
2817 2810
2818 def masterPasswordChanged(self, oldPassword, newPassword): 2811 def masterPasswordChanged(self, oldPassword, newPassword):
2819 """ 2812 """
2820 Public slot to handle the change of the master password. 2813 Public slot to handle the change of the master password.
2821 2814
2874 if use: 2867 if use:
2875 cls.useQtHelp = use and QTHELP_AVAILABLE 2868 cls.useQtHelp = use and QTHELP_AVAILABLE
2876 else: 2869 else:
2877 cls.useQtHelp = False 2870 cls.useQtHelp = False
2878 2871
2872 # TODO: QtHelp
2879 ## @classmethod 2873 ## @classmethod
2880 ## def helpEngine(cls): 2874 ## def helpEngine(cls):
2881 ## """ 2875 ## """
2882 ## Class method to get a reference to the help engine. 2876 ## Class method to get a reference to the help engine.
2883 ## 2877 ##
2936 ## self.currentBrowser().setSource( 2930 ## self.currentBrowser().setSource(
2937 ## None, (req, QNetworkAccessManager.GetOperation, b"")) 2931 ## None, (req, QNetworkAccessManager.GetOperation, b""))
2938 self.currentBrowser().setUrl(url) 2932 self.currentBrowser().setUrl(url)
2939 self.__activating = False 2933 self.__activating = False
2940 2934
2935 # TODO: QtHelp
2941 ## def __linksActivated(self, links, keyword): 2936 ## def __linksActivated(self, links, keyword):
2942 ## """ 2937 ## """
2943 ## Private slot to select a topic to be shown. 2938 ## Private slot to select a topic to be shown.
2944 ## 2939 ##
2945 ## @param links dictionary with help topic as key (string) and 2940 ## @param links dictionary with help topic as key (string) and
2958 """ 2953 """
2959 Private slot to activate the current browser. 2954 Private slot to activate the current browser.
2960 """ 2955 """
2961 self.currentBrowser().setFocus() 2956 self.currentBrowser().setFocus()
2962 2957
2958 # TODO: QtHelp
2963 ## def __syncTOC(self): 2959 ## def __syncTOC(self):
2964 ## """ 2960 ## """
2965 ## Private slot to synchronize the TOC with the currently shown page. 2961 ## Private slot to synchronize the TOC with the currently shown page.
2966 ## """ 2962 ## """
2967 ## if WebBrowserWindow.UseQtHelp: 2963 ## if WebBrowserWindow.UseQtHelp:
3769 self.currentBrowser().triggerPageAction(QWebEnginePage.Back) 3765 self.currentBrowser().triggerPageAction(QWebEnginePage.Back)
3770 elif evt.button() == Qt.XButton2: 3766 elif evt.button() == Qt.XButton2:
3771 self.currentBrowser().triggerPageAction(QWebEnginePage.Forward) 3767 self.currentBrowser().triggerPageAction(QWebEnginePage.Forward)
3772 else: 3768 else:
3773 super(WebBrowserWindow, self).mousePressEvent(evt) 3769 super(WebBrowserWindow, self).mousePressEvent(evt)
3774 3770
3771 # TODO: RSS
3775 ## @classmethod 3772 ## @classmethod
3776 ## def feedsManager(cls): 3773 ## def feedsManager(cls):
3777 ## """ 3774 ## """
3778 ## Class method to get a reference to the RSS feeds manager. 3775 ## Class method to get a reference to the RSS feeds manager.
3779 ## 3776 ##
3802 ## feedsManager = self.sender() 3799 ## feedsManager = self.sender()
3803 ## feedsManager.openUrl.disconnect(self.openUrl) 3800 ## feedsManager.openUrl.disconnect(self.openUrl)
3804 ## feedsManager.newUrl.disconnect(self.openUrlNewTab) 3801 ## feedsManager.newUrl.disconnect(self.openUrlNewTab)
3805 ## feedsManager.rejected.disconnect(self.__feedsManagerClosed) 3802 ## feedsManager.rejected.disconnect(self.__feedsManagerClosed)
3806 ## 3803 ##
3804 # TODO: Site Info
3807 ## def __showSiteinfoDialog(self): 3805 ## def __showSiteinfoDialog(self):
3808 ## """ 3806 ## """
3809 ## Private slot to show the site info dialog. 3807 ## Private slot to show the site info dialog.
3810 ## """ 3808 ## """
3811 ## from .SiteInfo.SiteInfoDialog import SiteInfoDialog 3809 ## from .SiteInfo.SiteInfoDialog import SiteInfoDialog
3812 ## self.__siteinfoDialog = SiteInfoDialog(self.currentBrowser(), self) 3810 ## self.__siteinfoDialog = SiteInfoDialog(self.currentBrowser(), self)
3813 ## self.__siteinfoDialog.show() 3811 ## self.__siteinfoDialog.show()
3814 ## 3812 ##
3813 # TODO: User Agents
3815 ## @classmethod 3814 ## @classmethod
3816 ## def userAgentsManager(cls): 3815 ## def userAgentsManager(cls):
3817 ## """ 3816 ## """
3818 ## Class method to get a reference to the user agents manager. 3817 ## Class method to get a reference to the user agents manager.
3819 ## 3818 ##
3832 ## from .UserAgent.UserAgentsDialog import UserAgentsDialog 3831 ## from .UserAgent.UserAgentsDialog import UserAgentsDialog
3833 ## 3832 ##
3834 ## dlg = UserAgentsDialog(self) 3833 ## dlg = UserAgentsDialog(self)
3835 ## dlg.exec_() 3834 ## dlg.exec_()
3836 ## 3835 ##
3836 # TODO: Sync
3837 ## @classmethod 3837 ## @classmethod
3838 ## def syncManager(cls): 3838 ## def syncManager(cls):
3839 ## """ 3839 ## """
3840 ## Class method to get a reference to the data synchronization manager. 3840 ## Class method to get a reference to the data synchronization manager.
3841 ## 3841 ##
3851 ## """ 3851 ## """
3852 ## Private slot to show the synchronization dialog. 3852 ## Private slot to show the synchronization dialog.
3853 ## """ 3853 ## """
3854 ## self.syncManager().showSyncDialog() 3854 ## self.syncManager().showSyncDialog()
3855 ## 3855 ##
3856 # TODO: SpeedDial
3856 ## @classmethod 3857 ## @classmethod
3857 ## def speedDial(cls): 3858 ## def speedDial(cls):
3858 ## """ 3859 ## """
3859 ## Class methdo to get a reference to the speed dial. 3860 ## Class methdo to get a reference to the speed dial.
3860 ## 3861 ##
3900 if evt.modifiers() == Qt.KeyboardModifiers(Qt.AltModifier): 3901 if evt.modifiers() == Qt.KeyboardModifiers(Qt.AltModifier):
3901 if number == 10: 3902 if number == 10:
3902 number = self.__tabWidget.count() 3903 number = self.__tabWidget.count()
3903 self.__tabWidget.setCurrentIndex(number - 1) 3904 self.__tabWidget.setCurrentIndex(number - 1)
3904 return 3905 return
3906 # TODO: SpeeedDial
3905 ## 3907 ##
3906 ## if evt.modifiers() == Qt.KeyboardModifiers(Qt.MetaModifier): 3908 ## if evt.modifiers() == Qt.KeyboardModifiers(Qt.MetaModifier):
3907 ## url = self.speedDial().urlForShortcut(number - 1) 3909 ## url = self.speedDial().urlForShortcut(number - 1)
3908 ## if url.isValid(): 3910 ## if url.isValid():
3909 ## self.__linkActivated(url) 3911 ## self.__linkActivated(url)
3910 ## return 3912 ## return
3911 3913
3912 super(WebBrowserWindow, self).keyPressEvent(evt) 3914 super(WebBrowserWindow, self).keyPressEvent(evt)
3913 3915
3914 ## ########################################################################### 3916 ###########################################################################
3915 ## ## Interface to VirusTotal below ## 3917 ## Interface to VirusTotal below ##
3916 ## ########################################################################### 3918 ###########################################################################
3917 ## 3919
3918 ## def __virusTotalScanCurrentSite(self): 3920 def __virusTotalScanCurrentSite(self):
3919 ## """ 3921 """
3920 ## Private slot to ask VirusTotal for a scan of the URL of the current 3922 Private slot to ask VirusTotal for a scan of the URL of the current
3921 ## browser. 3923 browser.
3922 ## """ 3924 """
3923 ## cb = self.currentBrowser() 3925 cb = self.currentBrowser()
3924 ## if cb is not None: 3926 if cb is not None:
3925 ## url = cb.url() 3927 url = cb.url()
3926 ## if url.scheme() in ["http", "https", "ftp"]: 3928 if url.scheme() in ["http", "https", "ftp"]:
3927 ## self.requestVirusTotalScan(url) 3929 self.requestVirusTotalScan(url)
3928 ## 3930
3929 ## def requestVirusTotalScan(self, url): 3931 def requestVirusTotalScan(self, url):
3930 ## """ 3932 """
3931 ## Public method to submit a request to scan an URL by VirusTotal. 3933 Public method to submit a request to scan an URL by VirusTotal.
3932 ## 3934
3933 ## @param url URL to be scanned (QUrl) 3935 @param url URL to be scanned (QUrl)
3934 ## """ 3936 """
3935 ## self.__virusTotal.submitUrl(url) 3937 self.__virusTotal.submitUrl(url)
3936 ## 3938
3937 ## def __virusTotalSubmitUrlError(self, msg): 3939 def __virusTotalSubmitUrlError(self, msg):
3938 ## """ 3940 """
3939 ## Private slot to handle an URL scan submission error. 3941 Private slot to handle an URL scan submission error.
3940 ## 3942
3941 ## @param msg error message (str) 3943 @param msg error message (str)
3942 ## """ 3944 """
3943 ## E5MessageBox.critical( 3945 E5MessageBox.critical(
3944 ## self, 3946 self,
3945 ## self.tr("VirusTotal Scan"), 3947 self.tr("VirusTotal Scan"),
3946 ## self.tr("""<p>The VirusTotal scan could not be""" 3948 self.tr("""<p>The VirusTotal scan could not be"""
3947 ## """ scheduled.<p>\n<p>Reason: {0}</p>""").format(msg)) 3949 """ scheduled.<p>\n<p>Reason: {0}</p>""").format(msg))
3948 ## 3950
3949 ## def __virusTotalUrlScanReport(self, url): 3951 def __virusTotalUrlScanReport(self, url):
3950 ## """ 3952 """
3951 ## Private slot to initiate the display of the URL scan report page. 3953 Private slot to initiate the display of the URL scan report page.
3952 ## 3954
3953 ## @param url URL of the URL scan report page (string) 3955 @param url URL of the URL scan report page (string)
3954 ## """ 3956 """
3955 ## self.newTab(url) 3957 self.newTab(url)
3956 ## 3958
3957 ## def __virusTotalFileScanReport(self, url): 3959 def __virusTotalFileScanReport(self, url):
3958 ## """ 3960 """
3959 ## Private slot to initiate the display of the file scan report page. 3961 Private slot to initiate the display of the file scan report page.
3960 ## 3962
3961 ## @param url URL of the file scan report page (string) 3963 @param url URL of the file scan report page (string)
3962 ## """ 3964 """
3963 ## self.newTab(url) 3965 self.newTab(url)
3964 ## 3966
3965 ## def __virusTotalIpAddressReport(self): 3967 def __virusTotalIpAddressReport(self):
3966 ## """ 3968 """
3967 ## Private slot to retrieve an IP address report. 3969 Private slot to retrieve an IP address report.
3968 ## """ 3970 """
3969 ## ip, ok = QInputDialog.getText( 3971 ip, ok = QInputDialog.getText(
3970 ## self, 3972 self,
3971 ## self.tr("IP Address Report"), 3973 self.tr("IP Address Report"),
3972 ## self.tr("Enter a valid IPv4 address in dotted quad notation:"), 3974 self.tr("Enter a valid IPv4 address in dotted quad notation:"),
3973 ## QLineEdit.Normal) 3975 QLineEdit.Normal)
3974 ## if ok and ip: 3976 if ok and ip:
3975 ## if ip.count(".") == 3: 3977 if ip.count(".") == 3:
3976 ## self.__virusTotal.getIpAddressReport(ip) 3978 self.__virusTotal.getIpAddressReport(ip)
3977 ## else: 3979 else:
3978 ## E5MessageBox.information( 3980 E5MessageBox.information(
3979 ## self, 3981 self,
3980 ## self.tr("IP Address Report"), 3982 self.tr("IP Address Report"),
3981 ## self.tr("""The given IP address is not in dotted quad""" 3983 self.tr("""The given IP address is not in dotted quad"""
3982 ## """ notation.""")) 3984 """ notation."""))
3983 ## 3985
3984 ## def __virusTotalDomainReport(self): 3986 def __virusTotalDomainReport(self):
3985 ## """ 3987 """
3986 ## Private slot to retrieve a domain report. 3988 Private slot to retrieve a domain report.
3987 ## """ 3989 """
3988 ## domain, ok = QInputDialog.getText( 3990 domain, ok = QInputDialog.getText(
3989 ## self, 3991 self,
3990 ## self.tr("Domain Report"), 3992 self.tr("Domain Report"),
3991 ## self.tr("Enter a valid domain name:"), 3993 self.tr("Enter a valid domain name:"),
3992 ## QLineEdit.Normal) 3994 QLineEdit.Normal)
3993 ## if ok and domain: 3995 if ok and domain:
3994 ## self.__virusTotal.getDomainReport(domain) 3996 self.__virusTotal.getDomainReport(domain)
3995 3997
3996 ########################################################################### 3998 ###########################################################################
3997 ## Style sheet handling below ## 3999 ## Style sheet handling below ##
3998 ########################################################################### 4000 ###########################################################################
3999 4001

eric ide

mercurial