WebBrowser/WebBrowserTabWidget.py

changeset 6122
e7d98249f393
parent 6048
82ad8ec9548c
child 6221
35ec993034e1
diff -r d3d64f3128b3 -r e7d98249f393 WebBrowser/WebBrowserTabWidget.py
--- a/WebBrowser/WebBrowserTabWidget.py	Wed Feb 07 20:14:09 2018 +0100
+++ b/WebBrowser/WebBrowserTabWidget.py	Thu Feb 08 18:57:11 2018 +0100
@@ -226,9 +226,11 @@
         self.__tabBackContextMenu.addSeparator()
         self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction(
             UI.PixmapCache.getIcon("trash.png"),
-            self.tr('Restore Closed Tab'), self.restoreClosedTab)
+            self.tr('Restore Closed Tab'))
         self.__restoreClosedTabAct.setEnabled(False)
         self.__restoreClosedTabAct.setData(0)
+        self.__restoreClosedTabAct.triggered.connect(
+            lambda: self.restoreClosedTab(self.__restoreClosedTabAct))
     
     def __showContextMenu(self, coord, index):
         """
@@ -332,17 +334,15 @@
         page.setAudioMuted(not muted)
     
     @pyqtSlot(bool)
-    def __recentlyAudibleChanged(self, recentlyAudible):
+    def __recentlyAudibleChanged(self, recentlyAudible, page):
         """
         Private slot to react on the audible state of a page.
         
         @param recentlyAudible flag indicating the new audible state
         @type bool
+        @param page reference to the web page
+        @type WebBrowserPage
         """
-        page = self.sender()
-        if page is None:
-            return
-        
         browser = page.view()
         if browser is None:
             return
@@ -412,7 +412,8 @@
                 self.__historyCompletionModel, self)
             self.__historyCompleter.activated[str].connect(self.__pathSelected)
         urlbar.setCompleter(self.__historyCompleter)
-        urlbar.returnPressed.connect(self.__lineEditReturnPressed)
+        urlbar.returnPressed.connect(
+            lambda: self.__lineEditReturnPressed(urlbar))
         if position == -1:
             self.__stackedUrlBar.addWidget(urlbar)
         else:
@@ -421,22 +422,28 @@
         browser = WebBrowserView(self.__mainWindow, self)
         urlbar.setBrowser(browser)
         
-        browser.sourceChanged.connect(self.__sourceChanged)
-        browser.titleChanged.connect(self.__titleChanged)
+        browser.sourceChanged.connect(
+            lambda url: self.__sourceChanged(url, browser))
+        browser.titleChanged.connect(
+            lambda title: self.__titleChanged(title, browser))
         browser.highlighted.connect(self.showMessage)
         browser.backwardAvailable.connect(
             self.__mainWindow.setBackwardAvailable)
         browser.forwardAvailable.connect(self.__mainWindow.setForwardAvailable)
-        browser.loadStarted.connect(self.__loadStarted)
-        browser.loadFinished.connect(self.__loadFinished)
-        browser.faviconChanged.connect(self.__iconChanged)
+        browser.loadStarted.connect(
+            lambda: self.__loadStarted(browser))
+        browser.loadFinished.connect(
+            lambda ok: self.__loadFinished(ok, browser))
+        browser.faviconChanged.connect(
+            lambda: self.__iconChanged(browser))
         browser.search.connect(self.newBrowser)
         browser.page().windowCloseRequested.connect(
-            self.__windowCloseRequested)
+            lambda: self.__windowCloseRequested(browser.page()))
         browser.zoomValueChanged.connect(self.browserZoomValueChanged)
         if hasattr(WebBrowserPage, "recentlyAudibleChanged"):
             browser.page().recentlyAudibleChanged.connect(
-                self.__recentlyAudibleChanged)
+                lambda audible: self.__recentlyAudibleChanged(
+                    audible, browser.page()))
         
         if position == -1:
             index = self.addTab(browser, self.tr("..."))
@@ -514,14 +521,13 @@
         if index is not None:
             self.setCurrentIndex(index)
     
-    def __windowCloseRequested(self):
+    def __windowCloseRequested(self, page):
         """
         Private slot to handle the windowCloseRequested signal of a browser.
+        
+        @param page reference to the web page
+        @type WebBrowserPage
         """
-        page = self.sender()
-        if page is None:
-            return
-        
         browser = page.view()
         if browser is None:
             return
@@ -844,37 +850,37 @@
         browser.page().execPrintPage(printer, 10 * 1000)
         QApplication.restoreOverrideCursor()
     
-    def __sourceChanged(self, url):
+    def __sourceChanged(self, url, browser):
         """
         Private slot to handle a change of a browsers source.
         
-        @param url URL of the new site (QUrl)
+        @param url URL of the new site
+        @type QUrl
+        @param browser reference to the web browser
+        @type WebBrowserView
         """
-        browser = self.sender()
+        self.sourceChanged.emit(browser, url)
         
-        if browser is not None:
-            self.sourceChanged.emit(browser, url)
-            
-            if browser == self.currentBrowser():
-                self.currentUrlChanged.emit(url)
+        if browser == self.currentBrowser():
+            self.currentUrlChanged.emit(url)
     
-    def __titleChanged(self, title):
+    def __titleChanged(self, title, browser):
         """
         Private slot to handle a change of a browsers title.
         
-        @param title new title (string)
+        @param title new title
+        @type str
+        @param browser reference to the web browser
+        @type WebBrowserView
         """
-        browser = self.sender()
+        index = self.indexOf(browser)
+        if title == "":
+            title = browser.url().toString()
         
-        if browser is not None and isinstance(browser, QWidget):
-            index = self.indexOf(browser)
-            if title == "":
-                title = browser.url().toString()
-            
-            self.setTabText(index, self.__elide(title.replace("&", "&&")))
-            self.setTabToolTip(index, title)
-        
-            self.titleChanged.emit(browser, title)
+        self.setTabText(index, self.__elide(title.replace("&", "&&")))
+        self.setTabToolTip(index, title)
+    
+        self.titleChanged.emit(browser, title)
     
     def __elide(self, txt, mode=Qt.ElideRight, length=40):
         """
@@ -919,64 +925,62 @@
             self.tabCloseRequested.connect(self.closeBrowserAt)
             self.__closeButton.hide()
     
-    def __loadStarted(self):
+    def __loadStarted(self, browser):
         """
         Private method to handle the loadStarted signal.
-        """
-        browser = self.sender()
         
-        if browser is not None:
-            index = self.indexOf(browser)
-            anim = self.animationLabel(
-                index, os.path.join(getConfig("ericPixDir"), "loading.gif"),
-                100)
-            if not anim:
-                loading = QIcon(os.path.join(getConfig("ericPixDir"),
-                                "loading.gif"))
-                self.setTabIcon(index, loading)
-            else:
-                self.setTabIcon(index, QIcon())
-            self.setTabText(index, self.tr("Loading..."))
-            self.setTabToolTip(index, self.tr("Loading..."))
-            self.showMessage.emit(self.tr("Loading..."))
-            
-            self.__mainWindow.setLoadingActions(True)
+        @param browser reference to the web browser
+        @type WebBrowserView
+        """
+        index = self.indexOf(browser)
+        anim = self.animationLabel(
+            index, os.path.join(getConfig("ericPixDir"), "loading.gif"),
+            100)
+        if not anim:
+            loading = QIcon(os.path.join(getConfig("ericPixDir"),
+                            "loading.gif"))
+            self.setTabIcon(index, loading)
+        else:
+            self.setTabIcon(index, QIcon())
+        self.setTabText(index, self.tr("Loading..."))
+        self.setTabToolTip(index, self.tr("Loading..."))
+        self.showMessage.emit(self.tr("Loading..."))
+        
+        self.__mainWindow.setLoadingActions(True)
     
-    def __loadFinished(self, ok):
+    def __loadFinished(self, ok, browser):
         """
         Private method to handle the loadFinished signal.
         
-        @param ok flag indicating the result (boolean)
+        @param ok flag indicating the result
+        @type bool
+        @param browser reference to the web browser
+        @type WebBrowserView
         """
-        browser = self.sender()
-        if not isinstance(browser, WebBrowserView):
-            return
+        import WebBrowser.WebBrowserWindow
+        index = self.indexOf(browser)
+        self.resetAnimation(index)
+        self.setTabIcon(
+            index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon(
+                browser.url()))
+        if ok:
+            self.showMessage.emit(self.tr("Finished loading"))
+        else:
+            self.showMessage.emit(self.tr("Failed to load"))
         
-        if browser is not None:
-            import WebBrowser.WebBrowserWindow
-            index = self.indexOf(browser)
-            self.resetAnimation(index)
-            self.setTabIcon(
-                index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon(
-                    browser.url()))
-            if ok:
-                self.showMessage.emit(self.tr("Finished loading"))
-            else:
-                self.showMessage.emit(self.tr("Failed to load"))
-            
-            self.__mainWindow.setLoadingActions(False)
+        self.__mainWindow.setLoadingActions(False)
     
-    def __iconChanged(self):
+    def __iconChanged(self, browser):
         """
         Private slot to handle a change of the web site icon.
+        
+        @param browser reference to the web browser
+        @type WebBrowserView
         """
-        browser = self.sender()
-        
-        if browser is not None and isinstance(browser, QWidget):
-            self.setTabIcon(
-                self.indexOf(browser),
-                browser.icon())
-            self.__mainWindow.bookmarksManager().faviconChanged(browser.url())
+        self.setTabIcon(
+            self.indexOf(browser),
+            browser.icon())
+        self.__mainWindow.bookmarksManager().faviconChanged(browser.url())
     
     def getSourceFileList(self):
         """
@@ -1046,11 +1050,13 @@
         """
         return self.__stackedUrlBar.currentWidget()
     
-    def __lineEditReturnPressed(self):
+    def __lineEditReturnPressed(self, edit):
         """
         Private slot to handle the entering of an URL.
+        
+        @param edit reference to the line edit
+        @type UrlBar
         """
-        edit = self.sender()
         url = self.__guessUrlFromPath(edit.text())
         if e5App().keyboardModifiers() == Qt.AltModifier:
             self.newBrowser(url)
@@ -1116,14 +1122,16 @@
             elif browser.url() != "":
                 browser.setFocus()
     
-    def restoreClosedTab(self):
+    def restoreClosedTab(self, act):
         """
         Public slot to restore the most recently closed tab.
+        
+        @param act reference to the action that triggered
+        @type QAction
         """
         if not self.canRestoreClosedTab():
             return
         
-        act = self.sender()
         tab = self.__closedTabsManager.getClosedTabAt(act.data())
         
         self.newBrowser(tab.url.toString(), position=tab.position)
@@ -1164,9 +1172,10 @@
         index = 0
         for tab in self.__closedTabsManager.allClosedTabs():
             title = fm.elidedText(tab.title, Qt.ElideRight, maxWidth)
-            self.__closedTabsMenu.addAction(
-                self.__mainWindow.icon(tab.url), title,
-                self.restoreClosedTab).setData(index)
+            act = self.__closedTabsMenu.addAction(
+                self.__mainWindow.icon(tab.url), title)
+            act.setData(index)
+            act.triggered.connect(lambda: self.restoreClosedTab(act))
             index += 1
         self.__closedTabsMenu.addSeparator()
         self.__closedTabsMenu.addAction(

eric ide

mercurial