diff -r b4d0cddecd64 -r 433187e73c0f WebBrowser/WebBrowserWindow.py --- a/WebBrowser/WebBrowserWindow.py Sat Apr 29 20:07:34 2017 +0200 +++ b/WebBrowser/WebBrowserWindow.py Mon May 01 16:44:28 2017 +0200 @@ -21,9 +21,8 @@ QUrl, QTextCodec, QProcess, QEvent, qVersion from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ - QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \ - QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QAction, \ - QInputDialog + QComboBox, QLabel, QMenu, QToolButton, QLineEdit, QApplication, \ + QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QInputDialog from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEnginePage, \ QWebEngineProfile, QWebEngineScript try: @@ -180,6 +179,9 @@ from .StatusBar.JavaScriptIcon import JavaScriptIcon from .StatusBar.ImagesIcon import ImagesIcon from .VirusTotal.VirusTotalApi import VirusTotalAPI + from .Navigation.NavigationBar import NavigationBar + from .Navigation.NavigationContainer import NavigationContainer + from .Bookmarks.BookmarksToolBar import BookmarksToolBar if not self.__fromEric: self.setStyle(Preferences.getUI("Style"), @@ -218,9 +220,28 @@ self.__tabWidget.browserOpened.connect(self.webBrowserOpened) self.__searchWidget = SearchWidget(self, self) + + self.__setIconDatabasePath() + + bookmarksModel = self.bookmarksManager().bookmarksModel() + self.__bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, + self) + self.__bookmarksToolBar.setIconSize(UI.Config.ToolBarIconSize) + self.__bookmarksToolBar.openUrl.connect(self.openUrl) + self.__bookmarksToolBar.newTab.connect(self.openUrlNewTab) + self.__bookmarksToolBar.newWindow.connect(self.openUrlNewWindow) + + self.__navigationBar = NavigationBar(self) + + self.__navigationContainer = NavigationContainer(self) + self.__navigationContainer.addWidget(self.__navigationBar) + self.__navigationContainer.addWidget(self.__bookmarksToolBar) + centralWidget = QWidget() layout = QVBoxLayout() layout.setContentsMargins(1, 1, 1, 1) + layout.setSpacing(0) + layout.addWidget(self.__navigationContainer) layout.addWidget(self.__tabWidget) layout.addWidget(self.__searchWidget) self.__tabWidget.setSizePolicy( @@ -284,7 +305,6 @@ WebBrowserWindow.BrowserWindows.append(self) - self.__setIconDatabasePath() self.__initWebEngineSettings() # initialize some of our class objects @@ -874,7 +894,7 @@ QKeySequence(self.tr("Ctrl+Home", "Go|Home")), 0, self, 'webbrowser_go_home') self.homeAct.setStatusTip(self.tr( - 'Move to the initial help screen')) + 'Move to the initial screen')) self.homeAct.setWhatsThis(self.tr( """<b>Home</b>""" """<p>Moves to the initial screen.</p>""" @@ -1251,9 +1271,9 @@ UI.PixmapCache.getIcon("windowFullscreen.png"), self.tr('&Full Screen'), QKeySequence(self.tr('F11')), 0, - self, 'webbrowser_view_full_scree') + self, 'webbrowser_view_full_screen') if not self.__initShortcutsOnly: - self.fullScreenAct.triggered.connect(self.__viewFullScreen) + self.fullScreenAct.triggered.connect(self.toggleFullScreen) self.__actions.append(self.fullScreenAct) self.addAction(self.fullScreenAct) @@ -2070,65 +2090,6 @@ self.__toolbars.append(helptb) self.addToolBarBreak() - - gotb = self.addToolBar(self.tr("Go")) - gotb.setObjectName("GoToolBar") - gotb.setIconSize(UI.Config.ToolBarIconSize) - gotb.addAction(self.backAct) - gotb.addAction(self.forwardAct) - gotb.addAction(self.reloadAct) - gotb.addAction(self.stopAct) - gotb.addAction(self.homeAct) - gotb.addSeparator() - - self.__navigationSplitter = QSplitter(gotb) - self.__navigationSplitter.addWidget(self.__tabWidget.stackedUrlBar()) - - from .WebBrowserWebSearchWidget import WebBrowserWebSearchWidget - self.searchEdit = WebBrowserWebSearchWidget(self) - sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(2) - sizePolicy.setVerticalStretch(0) - self.searchEdit.setSizePolicy(sizePolicy) - self.searchEdit.search.connect(self.__linkActivated) - self.__navigationSplitter.addWidget(self.searchEdit) - gotb.addWidget(self.__navigationSplitter) - - self.__navigationSplitter.setSizePolicy( - QSizePolicy.Expanding, QSizePolicy.Maximum) - self.__navigationSplitter.setCollapsible(0, False) - - self.backMenu = QMenu(self) - self.backMenu.aboutToShow.connect(self.__showBackMenu) - self.backMenu.triggered.connect(self.__navigationMenuActionTriggered) - backButton = gotb.widgetForAction(self.backAct) - backButton.setMenu(self.backMenu) - backButton.setPopupMode(QToolButton.MenuButtonPopup) - - self.forwardMenu = QMenu(self) - self.forwardMenu.aboutToShow.connect(self.__showForwardMenu) - self.forwardMenu.triggered.connect( - self.__navigationMenuActionTriggered) - forwardButton = gotb.widgetForAction(self.forwardAct) - forwardButton.setMenu(self.forwardMenu) - forwardButton.setPopupMode(QToolButton.MenuButtonPopup) - - self.__toolbars.append(gotb) - self.__gotb = gotb - - from .Bookmarks.BookmarksToolBar import BookmarksToolBar - bookmarksModel = self.bookmarksManager().bookmarksModel() - self.bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, self) - self.bookmarksToolBar.setObjectName("BookmarksToolBar") - self.bookmarksToolBar.setIconSize(UI.Config.ToolBarIconSize) - self.bookmarksToolBar.openUrl.connect(self.openUrl) - self.bookmarksToolBar.newTab.connect(self.openUrlNewTab) - self.bookmarksToolBar.newWindow.connect(self.openUrlNewWindow) - self.addToolBarBreak() - self.addToolBar(self.bookmarksToolBar) - self.__toolbars.append(self.bookmarksToolBar) - - self.addToolBarBreak() vttb = self.addToolBar(self.tr("VirusTotal")) vttb.setObjectName("VirusTotalToolBar") vttb.setIconSize(UI.Config.ToolBarIconSize) @@ -2377,6 +2338,7 @@ @param b flag indicating availability of the backwards action (boolean) """ self.backAct.setEnabled(b) + self.__navigationBar.backButton().setEnabled(b) def setForwardAvailable(self, b): """ @@ -2386,6 +2348,7 @@ (boolean) """ self.forwardAct.setEnabled(b) + self.__navigationBar.forwardButton().setEnabled(b) def setLoadingActions(self, b): """ @@ -2396,6 +2359,9 @@ self.reloadAct.setEnabled(not b) self.stopAct.setEnabled(b) + self.__navigationBar.reloadButton().setEnabled(not b) + self.__navigationBar.stopButton().setEnabled(b) + def __addBookmark(self): """ Private slot called to add the displayed file to the bookmarks. @@ -2569,7 +2535,7 @@ self.cookieJar().close() - self.bookmarksToolBar.setModel(None) + self.__bookmarksToolBar.setModel(None) self.bookmarksManager().close() self.historyManager().close() @@ -2592,7 +2558,7 @@ self.flashCookieManager().shutdown() - self.searchEdit.openSearchManager().close() + self.__navigationBar.searchEdit().openSearchManager().close() if len(WebBrowserWindow.BrowserWindows) == 1: # it is the last window @@ -2605,7 +2571,7 @@ if self.__helpInstaller: self.__helpInstaller.stop() - self.searchEdit.saveSearches() + self.__navigationBar.searchEdit().saveSearches() self.__tabWidget.closeAllBrowsers(shutdown=True) @@ -2693,9 +2659,9 @@ self.currentBrowser().zoomReset() self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) - def __viewFullScreen(self): - """ - Private slot called to toggle fullscreen mode. + def toggleFullScreen(self): + """ + Public slot called to toggle the full screen mode. """ if self.__htmlFullScreen: self.currentBrowser().triggerPageAction( @@ -2720,9 +2686,12 @@ def isFullScreenNavigationVisible(self): """ Public method to check, if full screen navigation is active. - """ - # TODO: change this to navigation widget - return self.isFullScreen() and self.__gotb.isVisible() + + @return flag indicating visibility of the navigation container in full + screen mode + @rtype bool + """ + return self.isFullScreen() and self.__navigationContainer.isVisible() def showFullScreenNavigation(self): """ @@ -2734,8 +2703,7 @@ if self.__hideNavigationTimer.isActive(): self.__hideNavigationTimer.stop() - # TODO: change this to navigation widget - self.__gotb.show() + self.__navigationContainer.show() def hideFullScreenNavigation(self): """ @@ -2752,8 +2720,7 @@ mouseInBrowser = browser and browser.underMouse() if self.isFullScreen() and mouseInBrowser: - # TODO: change this to navigation widget - self.__gotb.hide() + self.__navigationContainer.hide() def __copy(self): """ @@ -2888,7 +2855,7 @@ self.__tabWidget.preferencesChanged() - self.searchEdit.preferencesChanged() + self.__navigationBar.searchEdit().preferencesChanged() self.autoScroller().preferencesChanged() @@ -3306,57 +3273,6 @@ self.editMessageFilterAct.setEnabled( E5ErrorMessage.messageHandlerInstalled()) - def __showBackMenu(self): - """ - Private slot showing the backwards navigation menu. - """ - self.backMenu.clear() - history = self.currentBrowser().history() - historyCount = history.count() - backItems = history.backItems(historyCount) - for index in range(len(backItems) - 1, -1, -1): - item = backItems[index] - act = QAction(self) - act.setData(-1 * (index + 1)) - icon = WebBrowserWindow.icon(item.url()) - act.setIcon(icon) - act.setText(item.title()) - self.backMenu.addAction(act) - - def __showForwardMenu(self): - """ - Private slot showing the forwards navigation menu. - """ - self.forwardMenu.clear() - history = self.currentBrowser().history() - historyCount = history.count() - forwardItems = history.forwardItems(historyCount) - for index in range(len(forwardItems)): - item = forwardItems[index] - act = QAction(self) - act.setData(index + 1) - icon = WebBrowserWindow.icon(item.url()) - act.setIcon(icon) - act.setText(item.title()) - self.forwardMenu.addAction(act) - - def __navigationMenuActionTriggered(self, act): - """ - Private slot to go to the selected page. - - @param act reference to the action selected in the navigation menu - (QAction) - """ - offset = act.data() - history = self.currentBrowser().history() - historyCount = history.count() - if offset < 0: - # go back - history.goToItem(history.backItems(historyCount)[-1 * offset - 1]) - else: - # go forward - history.goToItem(history.forwardItems(historyCount)[offset - 1]) - def __clearPrivateData(self): """ Private slot to clear the private data. @@ -3375,7 +3291,7 @@ self.__tabWidget.clearClosedTabsList() self.webProfile().clearAllVisitedLinks() if searches: - self.searchEdit.clear() + self.__navigationBar.searchEdit().clear() if downloads: self.downloadManager().cleanup() self.downloadManager().hide() @@ -3800,7 +3716,7 @@ @return reference to the opensearch manager object (OpenSearchManager) """ - return self.searchEdit.openSearchManager() + return self.__navigationBar.searchEdit().openSearchManager() def __aboutToShowTextEncodingMenu(self): """ @@ -4080,13 +3996,12 @@ self.__toolbarStates = self.saveState() self.menuBar().hide() self.statusBar().hide() + self.__searchWidget.hide() + self.__tabWidget.tabBar().hide() for toolbar in self.__toolbars: toolbar.hide() - self.__tabWidget.tabBar().hide() - self.__searchWidget.hide() -## self.fullScreenAct.setIcon( -## UI.PixmapCache.getIcon("windowRestore.png")) -## self.fullScreenAct.setIconText(self.tr('Restore Window')) + self.__navigationBar.exitFullScreenButton().setVisible(True) + self.__navigationContainer.hide() elif bool(evt.oldState() & Qt.WindowFullScreen) and \ not bool(self.windowState() & Qt.WindowFullScreen): @@ -4097,9 +4012,8 @@ self.statusBar().show() self.restoreState(self.__toolbarStates) self.__tabWidget.tabBar().show() -## self.fullScreenAct.setIcon( -## UI.PixmapCache.getIcon("windowFullscreen.png")) -## self.fullScreenAct.setIconText(self.tr('Full Screen')) + self.__navigationBar.exitFullScreenButton().setVisible(False) + self.__navigationContainer.show() if self.__hideNavigationTimer: self.__hideNavigationTimer.stop()