WebBrowser/WebBrowserWindow.py

changeset 5721
b4d0cddecd64
parent 5627
fcffc4cd5e5c
child 5722
433187e73c0f
equal deleted inserted replaced
5720:fc72c0c81a0f 5721:b4d0cddecd64
125 @keyparam searchWord word to search for (string) 125 @keyparam searchWord word to search for (string)
126 @keyparam private flag indicating a private browsing window (bool) 126 @keyparam private flag indicating a private browsing window (bool)
127 @keyparam qthelp flag indicating to enable the QtHelp support (bool) 127 @keyparam qthelp flag indicating to enable the QtHelp support (bool)
128 @keyparam settingsDir directory to be used for the settings files (str) 128 @keyparam settingsDir directory to be used for the settings files (str)
129 """ 129 """
130 self.__hideNavigationTimer = None
131
130 super(WebBrowserWindow, self).__init__(parent) 132 super(WebBrowserWindow, self).__init__(parent)
131 self.setObjectName(name) 133 self.setObjectName(name)
132 if private: 134 if private:
133 self.setWindowTitle(self.tr("eric6 Web Browser (Private Mode)")) 135 self.setWindowTitle(self.tr("eric6 Web Browser (Private Mode)"))
134 else: 136 else:
376 if self.__searchWord is not None: 378 if self.__searchWord is not None:
377 QTimer.singleShot(0, self.__searchForWord) 379 QTimer.singleShot(0, self.__searchForWord)
378 380
379 e5App().focusChanged.connect(self.__appFocusChanged) 381 e5App().focusChanged.connect(self.__appFocusChanged)
380 382
383 self.__toolbarStates = self.saveState()
384
385 self.__hideNavigationTimer = QTimer(self)
386 self.__hideNavigationTimer.setInterval(1000)
387 self.__hideNavigationTimer.setSingleShot(True)
388 self.__hideNavigationTimer.timeout.connect(self.__hideNavigation)
389
381 QTimer.singleShot(0, syncMgr.loadSettings) 390 QTimer.singleShot(0, syncMgr.loadSettings)
382 391
383 def __del__(self): 392 def __del__(self):
384 """ 393 """
385 Special method called during object destruction. 394 Special method called during object destruction.
1950 1959
1951 def __initToolbars(self): 1960 def __initToolbars(self):
1952 """ 1961 """
1953 Private method to create the toolbars. 1962 Private method to create the toolbars.
1954 """ 1963 """
1964 # save references to toolbars in order to hide them
1965 # when going full screen
1966 self.__toolbars = []
1967
1955 filetb = self.addToolBar(self.tr("File")) 1968 filetb = self.addToolBar(self.tr("File"))
1956 filetb.setObjectName("FileToolBar") 1969 filetb.setObjectName("FileToolBar")
1957 filetb.setIconSize(UI.Config.ToolBarIconSize) 1970 filetb.setIconSize(UI.Config.ToolBarIconSize)
1958 filetb.addAction(self.newTabAct) 1971 filetb.addAction(self.newTabAct)
1959 filetb.addAction(self.newAct) 1972 filetb.addAction(self.newAct)
1973 filetb.addAction(self.printPdfAct) 1986 filetb.addAction(self.printPdfAct)
1974 if self.printPreviewAct or self.printAct or self.printPdfAct: 1987 if self.printPreviewAct or self.printAct or self.printPdfAct:
1975 filetb.addSeparator() 1988 filetb.addSeparator()
1976 filetb.addAction(self.closeAct) 1989 filetb.addAction(self.closeAct)
1977 filetb.addAction(self.exitAct) 1990 filetb.addAction(self.exitAct)
1991 self.__toolbars.append(filetb)
1978 1992
1979 self.savePageScreenMenu = QMenu(self) 1993 self.savePageScreenMenu = QMenu(self)
1980 self.savePageScreenMenu.addAction(self.savePageScreenAct) 1994 self.savePageScreenMenu.addAction(self.savePageScreenAct)
1981 self.savePageScreenMenu.addAction(self.saveVisiblePageScreenAct) 1995 self.savePageScreenMenu.addAction(self.saveVisiblePageScreenAct)
1982 savePageScreenButton = filetb.widgetForAction(self.savePageScreenAct) 1996 savePageScreenButton = filetb.widgetForAction(self.savePageScreenAct)
1992 edittb.addAction(self.copyAct) 2006 edittb.addAction(self.copyAct)
1993 edittb.addAction(self.cutAct) 2007 edittb.addAction(self.cutAct)
1994 edittb.addAction(self.pasteAct) 2008 edittb.addAction(self.pasteAct)
1995 edittb.addSeparator() 2009 edittb.addSeparator()
1996 edittb.addAction(self.selectAllAct) 2010 edittb.addAction(self.selectAllAct)
2011 self.__toolbars.append(edittb)
1997 2012
1998 viewtb = self.addToolBar(self.tr("View")) 2013 viewtb = self.addToolBar(self.tr("View"))
1999 viewtb.setObjectName("ViewToolBar") 2014 viewtb.setObjectName("ViewToolBar")
2000 viewtb.setIconSize(UI.Config.ToolBarIconSize) 2015 viewtb.setIconSize(UI.Config.ToolBarIconSize)
2001 viewtb.addAction(self.zoomInAct) 2016 viewtb.addAction(self.zoomInAct)
2002 viewtb.addAction(self.zoomResetAct) 2017 viewtb.addAction(self.zoomResetAct)
2003 viewtb.addAction(self.zoomOutAct) 2018 viewtb.addAction(self.zoomOutAct)
2004 viewtb.addSeparator() 2019 viewtb.addSeparator()
2005 viewtb.addAction(self.fullScreenAct) 2020 viewtb.addAction(self.fullScreenAct)
2021 self.__toolbars.append(viewtb)
2006 2022
2007 findtb = self.addToolBar(self.tr("Find")) 2023 findtb = self.addToolBar(self.tr("Find"))
2008 findtb.setObjectName("FindToolBar") 2024 findtb.setObjectName("FindToolBar")
2009 findtb.setIconSize(UI.Config.ToolBarIconSize) 2025 findtb.setIconSize(UI.Config.ToolBarIconSize)
2010 findtb.addAction(self.findAct) 2026 findtb.addAction(self.findAct)
2011 findtb.addAction(self.findNextAct) 2027 findtb.addAction(self.findNextAct)
2012 findtb.addAction(self.findPrevAct) 2028 findtb.addAction(self.findPrevAct)
2029 self.__toolbars.append(findtb)
2013 2030
2014 if WebBrowserWindow._useQtHelp: 2031 if WebBrowserWindow._useQtHelp:
2015 filtertb = self.addToolBar(self.tr("Filter")) 2032 filtertb = self.addToolBar(self.tr("Filter"))
2016 filtertb.setObjectName("FilterToolBar") 2033 filtertb.setObjectName("FilterToolBar")
2017 self.filterCombo = QComboBox() 2034 self.filterCombo = QComboBox()
2021 filtertb.addWidget(self.filterCombo) 2038 filtertb.addWidget(self.filterCombo)
2022 self.__helpEngine.setupFinished.connect(self.__setupFilterCombo) 2039 self.__helpEngine.setupFinished.connect(self.__setupFilterCombo)
2023 self.filterCombo.activated[str].connect( 2040 self.filterCombo.activated[str].connect(
2024 self.__filterQtHelpDocumentation) 2041 self.__filterQtHelpDocumentation)
2025 self.__setupFilterCombo() 2042 self.__setupFilterCombo()
2043 self.__toolbars.append(filtertb)
2026 2044
2027 settingstb = self.addToolBar(self.tr("Settings")) 2045 settingstb = self.addToolBar(self.tr("Settings"))
2028 settingstb.setObjectName("SettingsToolBar") 2046 settingstb.setObjectName("SettingsToolBar")
2029 settingstb.setIconSize(UI.Config.ToolBarIconSize) 2047 settingstb.setIconSize(UI.Config.ToolBarIconSize)
2030 settingstb.addAction(self.prefAct) 2048 settingstb.addAction(self.prefAct)
2032 settingstb.addAction(self.cookiesAct) 2050 settingstb.addAction(self.cookiesAct)
2033 settingstb.addAction(self.flashCookiesAct) 2051 settingstb.addAction(self.flashCookiesAct)
2034 settingstb.addAction(self.personalDataAct) 2052 settingstb.addAction(self.personalDataAct)
2035 settingstb.addAction(self.greaseMonkeyAct) 2053 settingstb.addAction(self.greaseMonkeyAct)
2036 settingstb.addAction(self.featurePermissionAct) 2054 settingstb.addAction(self.featurePermissionAct)
2055 self.__toolbars.append(settingstb)
2037 2056
2038 toolstb = self.addToolBar(self.tr("Tools")) 2057 toolstb = self.addToolBar(self.tr("Tools"))
2039 toolstb.setObjectName("ToolsToolBar") 2058 toolstb.setObjectName("ToolsToolBar")
2040 toolstb.setIconSize(UI.Config.ToolBarIconSize) 2059 toolstb.setIconSize(UI.Config.ToolBarIconSize)
2041 toolstb.addAction(self.feedsManagerAct) 2060 toolstb.addAction(self.feedsManagerAct)
2042 toolstb.addAction(self.siteInfoAct) 2061 toolstb.addAction(self.siteInfoAct)
2043 toolstb.addSeparator() 2062 toolstb.addSeparator()
2044 toolstb.addAction(self.synchronizationAct) 2063 toolstb.addAction(self.synchronizationAct)
2064 self.__toolbars.append(toolstb)
2045 2065
2046 helptb = self.addToolBar(self.tr("Help")) 2066 helptb = self.addToolBar(self.tr("Help"))
2047 helptb.setObjectName("HelpToolBar") 2067 helptb.setObjectName("HelpToolBar")
2048 helptb.setIconSize(UI.Config.ToolBarIconSize) 2068 helptb.setIconSize(UI.Config.ToolBarIconSize)
2049 helptb.addAction(self.whatsThisAct) 2069 helptb.addAction(self.whatsThisAct)
2070 self.__toolbars.append(helptb)
2050 2071
2051 self.addToolBarBreak() 2072 self.addToolBarBreak()
2052 2073
2053 gotb = self.addToolBar(self.tr("Go")) 2074 gotb = self.addToolBar(self.tr("Go"))
2054 gotb.setObjectName("GoToolBar") 2075 gotb.setObjectName("GoToolBar")
2089 self.forwardMenu.triggered.connect( 2110 self.forwardMenu.triggered.connect(
2090 self.__navigationMenuActionTriggered) 2111 self.__navigationMenuActionTriggered)
2091 forwardButton = gotb.widgetForAction(self.forwardAct) 2112 forwardButton = gotb.widgetForAction(self.forwardAct)
2092 forwardButton.setMenu(self.forwardMenu) 2113 forwardButton.setMenu(self.forwardMenu)
2093 forwardButton.setPopupMode(QToolButton.MenuButtonPopup) 2114 forwardButton.setPopupMode(QToolButton.MenuButtonPopup)
2115
2116 self.__toolbars.append(gotb)
2117 self.__gotb = gotb
2094 2118
2095 from .Bookmarks.BookmarksToolBar import BookmarksToolBar 2119 from .Bookmarks.BookmarksToolBar import BookmarksToolBar
2096 bookmarksModel = self.bookmarksManager().bookmarksModel() 2120 bookmarksModel = self.bookmarksManager().bookmarksModel()
2097 self.bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, self) 2121 self.bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, self)
2098 self.bookmarksToolBar.setObjectName("BookmarksToolBar") 2122 self.bookmarksToolBar.setObjectName("BookmarksToolBar")
2100 self.bookmarksToolBar.openUrl.connect(self.openUrl) 2124 self.bookmarksToolBar.openUrl.connect(self.openUrl)
2101 self.bookmarksToolBar.newTab.connect(self.openUrlNewTab) 2125 self.bookmarksToolBar.newTab.connect(self.openUrlNewTab)
2102 self.bookmarksToolBar.newWindow.connect(self.openUrlNewWindow) 2126 self.bookmarksToolBar.newWindow.connect(self.openUrlNewWindow)
2103 self.addToolBarBreak() 2127 self.addToolBarBreak()
2104 self.addToolBar(self.bookmarksToolBar) 2128 self.addToolBar(self.bookmarksToolBar)
2129 self.__toolbars.append(self.bookmarksToolBar)
2105 2130
2106 self.addToolBarBreak() 2131 self.addToolBarBreak()
2107 vttb = self.addToolBar(self.tr("VirusTotal")) 2132 vttb = self.addToolBar(self.tr("VirusTotal"))
2108 vttb.setObjectName("VirusTotalToolBar") 2133 vttb.setObjectName("VirusTotalToolBar")
2109 vttb.setIconSize(UI.Config.ToolBarIconSize) 2134 vttb.setIconSize(UI.Config.ToolBarIconSize)
2123 if not Preferences.getWebBrowser("VirusTotalEnabled") or \ 2148 if not Preferences.getWebBrowser("VirusTotalEnabled") or \
2124 Preferences.getWebBrowser("VirusTotalServiceKey") == "": 2149 Preferences.getWebBrowser("VirusTotalServiceKey") == "":
2125 self.virustotalScanCurrentAct.setEnabled(False) 2150 self.virustotalScanCurrentAct.setEnabled(False)
2126 self.virustotalIpReportAct.setEnabled(False) 2151 self.virustotalIpReportAct.setEnabled(False)
2127 self.virustotalDomainReportAct.setEnabled(False) 2152 self.virustotalDomainReportAct.setEnabled(False)
2153 self.__toolbars.append(vttb)
2128 2154
2129 def __nextTab(self): 2155 def __nextTab(self):
2130 """ 2156 """
2131 Private slot used to show the next tab. 2157 Private slot used to show the next tab.
2132 """ 2158 """
2677 return 2703 return
2678 2704
2679 if self.isFullScreen(): 2705 if self.isFullScreen():
2680 # switch back to normal 2706 # switch back to normal
2681 self.showNormal() 2707 self.showNormal()
2682 self.menuBar().show()
2683 self.fullScreenAct.setIcon(
2684 UI.PixmapCache.getIcon("windowFullscreen.png"))
2685 self.fullScreenAct.setIconText(self.tr('Full Screen'))
2686 else: 2708 else:
2687 # switch to full screen 2709 # switch to full screen
2688 self.showFullScreen() 2710 self.showFullScreen()
2689 self.menuBar().hide()
2690 self.fullScreenAct.setIcon(
2691 UI.PixmapCache.getIcon("windowRestore.png"))
2692 self.fullScreenAct.setIconText(self.tr('Restore Window'))
2693 2711
2694 def enterHtmlFullScreen(self): 2712 def enterHtmlFullScreen(self):
2695 """ 2713 """
2696 Public method to switch to full screen initiated by the 2714 Public method to switch to full screen initiated by the
2697 HTML page. 2715 HTML page.
2698 """ 2716 """
2699 self.showFullScreen() 2717 self.showFullScreen()
2700 self.__htmlFullScreen = True 2718 self.__htmlFullScreen = True
2719
2720 def isFullScreenNavigationVisible(self):
2721 """
2722 Public method to check, if full screen navigation is active.
2723 """
2724 # TODO: change this to navigation widget
2725 return self.isFullScreen() and self.__gotb.isVisible()
2726
2727 def showFullScreenNavigation(self):
2728 """
2729 Public slot to show full screen navigation.
2730 """
2731 if self.__htmlFullScreen:
2732 return
2733
2734 if self.__hideNavigationTimer.isActive():
2735 self.__hideNavigationTimer.stop()
2736
2737 # TODO: change this to navigation widget
2738 self.__gotb.show()
2739
2740 def hideFullScreenNavigation(self):
2741 """
2742 Public slot to hide full screen navigation.
2743 """
2744 if not self.__hideNavigationTimer.isActive():
2745 self.__hideNavigationTimer.start()
2746
2747 def __hideNavigation(self):
2748 """
2749 Private slot to hide full screen navigation by timer.
2750 """
2751 browser = self.currentBrowser()
2752 mouseInBrowser = browser and browser.underMouse()
2753
2754 if self.isFullScreen() and mouseInBrowser:
2755 # TODO: change this to navigation widget
2756 self.__gotb.hide()
2701 2757
2702 def __copy(self): 2758 def __copy(self):
2703 """ 2759 """
2704 Private slot called to handle the copy action. 2760 Private slot called to handle the copy action.
2705 """ 2761 """
4019 if evt.type() == QEvent.WindowStateChange: 4075 if evt.type() == QEvent.WindowStateChange:
4020 if not bool(evt.oldState() & Qt.WindowFullScreen) and \ 4076 if not bool(evt.oldState() & Qt.WindowFullScreen) and \
4021 bool(self.windowState() & Qt.WindowFullScreen): 4077 bool(self.windowState() & Qt.WindowFullScreen):
4022 # enter full screen mode 4078 # enter full screen mode
4023 self.__windowStates = evt.oldState() 4079 self.__windowStates = evt.oldState()
4080 self.__toolbarStates = self.saveState()
4081 self.menuBar().hide()
4082 self.statusBar().hide()
4083 for toolbar in self.__toolbars:
4084 toolbar.hide()
4085 self.__tabWidget.tabBar().hide()
4086 self.__searchWidget.hide()
4087 ## self.fullScreenAct.setIcon(
4088 ## UI.PixmapCache.getIcon("windowRestore.png"))
4089 ## self.fullScreenAct.setIconText(self.tr('Restore Window'))
4090
4024 elif bool(evt.oldState() & Qt.WindowFullScreen) and \ 4091 elif bool(evt.oldState() & Qt.WindowFullScreen) and \
4025 not bool(self.windowState() & Qt.WindowFullScreen): 4092 not bool(self.windowState() & Qt.WindowFullScreen):
4026 # leave full screen mode 4093 # leave full screen mode
4027 self.setWindowState(self.__windowStates) 4094 self.setWindowState(self.__windowStates)
4028 self.__htmlFullScreen = False 4095 self.__htmlFullScreen = False
4096 self.menuBar().show()
4097 self.statusBar().show()
4098 self.restoreState(self.__toolbarStates)
4099 self.__tabWidget.tabBar().show()
4100 ## self.fullScreenAct.setIcon(
4101 ## UI.PixmapCache.getIcon("windowFullscreen.png"))
4102 ## self.fullScreenAct.setIconText(self.tr('Full Screen'))
4103
4104 if self.__hideNavigationTimer:
4105 self.__hideNavigationTimer.stop()
4029 4106
4030 return super(WebBrowserWindow, self).event(evt) 4107 return super(WebBrowserWindow, self).event(evt)
4031 4108
4032 ########################################################################### 4109 ###########################################################################
4033 ## Interface to VirusTotal below ## 4110 ## Interface to VirusTotal below ##

eric ide

mercurial