WebBrowser/WebBrowserWindow.py

changeset 5722
433187e73c0f
parent 5721
b4d0cddecd64
child 5734
d8b99b5fa673
--- 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()

eric ide

mercurial