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 ## |