Helpviewer/HelpTabWidget.py

changeset 6122
e7d98249f393
parent 6048
82ad8ec9548c
child 6157
708a22e46bbd
--- a/Helpviewer/HelpTabWidget.py	Wed Feb 07 20:14:09 2018 +0100
+++ b/Helpviewer/HelpTabWidget.py	Thu Feb 08 18:57:11 2018 +0100
@@ -203,9 +203,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):
         """
@@ -328,7 +330,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:
@@ -337,18 +340,23 @@
         browser = HelpBrowser(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.iconChanged.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.page().printRequested.connect(self.__printRequested)
         browser.zoomValueChanged.connect(self.browserZoomValueChanged)
         
@@ -417,14 +425,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 HelpWebPage
         """
-        page = self.sender()
-        if page is None:
-            return
-        
         browser = page.view()
         if browser is None:
             return
@@ -672,34 +679,34 @@
                     """Please upgrade.</p>"""))
             return
     
-    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 HelpBrowser
         """
-        browser = self.sender()
-        
-        if browser is not None:
-            self.sourceChanged.emit(browser, url)
+        self.sourceChanged.emit(browser, 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 HelpBrowser
         """
-        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):
         """
@@ -746,65 +753,63 @@
             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 HelpBrowser
+        """
+        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 HelpBrowser
         """
-        browser = self.sender()
-        if not isinstance(browser, HelpBrowser):
-            return
+        import Helpviewer.HelpWindow
+        index = self.indexOf(browser)
+        self.resetAnimation(index)
+        self.setTabIcon(
+            index, Helpviewer.HelpWindow.HelpWindow.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 Helpviewer.HelpWindow
-            index = self.indexOf(browser)
-            self.resetAnimation(index)
-            self.setTabIcon(
-                index, Helpviewer.HelpWindow.HelpWindow.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 the icon change.
+        
+        @param browser reference to the web browser
+        @type HelpBrowser
         """
-        browser = self.sender()
-        
-        if browser is not None and isinstance(browser, QWidget):
-            import Helpviewer.HelpWindow
-            self.setTabIcon(
-                self.indexOf(browser),
-                Helpviewer.HelpWindow.HelpWindow.icon(browser.url()))
-            Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
-                .iconChanged(browser.url())
+        import Helpviewer.HelpWindow
+        self.setTabIcon(
+            self.indexOf(browser),
+            Helpviewer.HelpWindow.HelpWindow.icon(browser.url()))
+        Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
+            .iconChanged(browser.url())
     
     def getSourceFileList(self):
         """
@@ -873,11 +878,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())
         request = QNetworkRequest(url)
         request.setRawHeader(b"X-Eric6-UserLoadAction", b"1")
@@ -947,14 +954,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)
@@ -995,9 +1004,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