WebBrowser/WebBrowserWindow.py

changeset 4979
7ac0959842f9
parent 4967
d9edf6517263
child 4990
2bca10fcfe80
diff -r 27fba2b81749 -r 7ac0959842f9 WebBrowser/WebBrowserWindow.py
--- a/WebBrowser/WebBrowserWindow.py	Sun May 08 19:42:41 2016 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Sun May 08 19:48:19 2016 +0200
@@ -66,9 +66,19 @@
     """
     Class implementing the web browser main window.
     
-    @signal webBrowserClosed() emitted after the window was requested to close
+    @signal webBrowserWindowOpened(window) emitted after a new web browser
+        window was opened
+    @signal webBrowserWindowClosed(window) emitted after the window was
+        requested to close
+    @signal webBrowserOpened(browser) emitted after a new web browser tab was
+        created
+    @signal webBrowserClosed(browser) emitted after a web browser tab was
+        closed
     """
-    webBrowserClosed = pyqtSignal()
+    webBrowserWindowClosed = pyqtSignal(E5MainWindow)
+    webBrowserWindowOpened = pyqtSignal(E5MainWindow)
+    webBrowserOpened = pyqtSignal(QWidget)
+    webBrowserClosed = pyqtSignal(QWidget)
     
     BrowserWindows = []
 
@@ -96,6 +106,7 @@
     _flashCookieManager = None
     _imageSearchEngine = None
     _autoScroller = None
+    _tabManager = None
     
     def __init__(self, home, path, parent, name, fromEric=False,
                  initShortcutsOnly=False, searchWord=None,
@@ -198,6 +209,8 @@
             self.__tabWidget.showMessage.connect(self.statusBar().showMessage)
             self.__tabWidget.browserZoomValueChanged.connect(
                 self.__zoomWidget.setValue)
+            self.__tabWidget.browserClosed.connect(self.webBrowserClosed)
+            self.__tabWidget.browserOpened.connect(self.webBrowserOpened)
             
             self.__searchWidget = SearchWidget(self, self)
             centralWidget = QWidget()
@@ -300,6 +313,9 @@
             self.__tabWidget.sourceChanged.connect(
                 self.__adBlockIcon.sourceChanged)
             
+            self.__tabManagerIcon = self.tabManager().createStatusBarIcon()
+            self.statusBar().addPermanentWidget(self.__tabManagerIcon)
+            
             self.networkIcon = E5NetworkIcon(self)
             self.statusBar().addPermanentWidget(self.networkIcon)
             
@@ -1667,6 +1683,20 @@
                 self.__toggleJavaScriptConsole)
         self.__actions.append(self.showJavaScriptConsoleAct)
         
+        self.showTabManagerAct = E5Action(
+            self.tr('Tab Manager'),
+            self.tr('Tab Manager'),
+            0, 0, self, 'webbrowser_show_tab_manager')
+        self.showTabManagerAct.setStatusTip(self.tr(
+            'Shows the tab manager window'))
+        self.showTabManagerAct.setWhatsThis(self.tr(
+            """<b>Tab Manager</b>"""
+            """<p>Shows the tab manager window.</p>"""
+        ))
+        if not self.__initShortcutsOnly:
+            self.showTabManagerAct.triggered.connect(self.__showTabManager)
+        self.__actions.append(self.showTabManagerAct)
+        
         self.backAct.setEnabled(False)
         self.forwardAct.setEnabled(False)
         
@@ -1829,6 +1859,7 @@
         menu.setTearOffEnabled(True)
         menu.addAction(self.showDownloadManagerAct)
         menu.addAction(self.showJavaScriptConsoleAct)
+        menu.addAction(self.showTabManagerAct)
         if WebBrowserWindow.useQtHelp:
             menu.addSeparator()
             menu.addAction(self.showTocAct)
@@ -2096,6 +2127,8 @@
         h = WebBrowserWindow(linkName, ".", self.parent(), "webbrowser",
                              self.__fromEric, private=self.isPrivate())
         h.show()
+        
+        self.webBrowserWindowOpened.emit(h)
     
     @pyqtSlot()
     def newPrivateWindow(self, link=None):
@@ -2395,7 +2428,7 @@
             
             if res:
                 e.accept()
-                self.webBrowserClosed.emit()
+                self.webBrowserWindowClosed.emit(self)
             else:
                 e.ignore()
         else:
@@ -2442,6 +2475,10 @@
         
         self.searchEdit.openSearchManager().close()
         
+        if len(WebBrowserWindow.BrowserWindows) == 1:
+            # it is the last window
+            self.tabManager().close()
+        
         if WebBrowserWindow.useQtHelp:
             self.__searchEngine.cancelIndexing()
             self.__searchEngine.cancelSearching()
@@ -3497,6 +3534,32 @@
         return cls._autoScroller
         
     @classmethod
+    def tabManager(cls):
+        """
+        Class method to get a reference to the tab manager widget.
+        
+        @return reference to the tab manager widget
+        @rtype TabManagerWidget
+        """
+        if cls._tabManager is None:
+            from .TabManager.TabManagerWidget import TabManagerWidget
+            cls._tabManager = TabManagerWidget(cls.mainWindow())
+            
+            # do the connections
+            for window in cls.mainWindows():
+                cls._tabManager.mainWindowCreated(window, False)
+            
+            cls._tabManager.delayedRefreshTree()
+        
+        return cls._tabManager
+    
+    def __showTabManager(self):
+        """
+        Private method to show the tab manager window.
+        """
+        self.tabManager().raiseTabManager()
+    
+    @classmethod
     def mainWindow(cls):
         """
         Class method to get a reference to the main window.

eric ide

mercurial