Continued removing the use of QObject.sender().

Wed, 07 Feb 2018 18:57:46 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 07 Feb 2018 18:57:46 +0100
changeset 6120
4c60a21ce6dd
parent 6119
18fb5d765f3a
child 6121
d3d64f3128b3

Continued removing the use of QObject.sender().

Helpviewer/AdBlock/AdBlockIcon.py file | annotate | diff | comparison | revisions
Helpviewer/AdBlock/AdBlockManager.py file | annotate | diff | comparison | revisions
Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py file | annotate | diff | comparison | revisions
Helpviewer/GreaseMonkey/GreaseMonkeyManager.py file | annotate | diff | comparison | revisions
WebBrowser/AdBlock/AdBlockIcon.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyManager.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyScript.py file | annotate | diff | comparison | revisions
WebBrowser/Network/EricSchemeHandler.py file | annotate | diff | comparison | revisions
WebBrowser/Network/NetworkManager.py file | annotate | diff | comparison | revisions
WebBrowser/Network/QtHelpSchemeHandler.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserPage.py file | annotate | diff | comparison | revisions
--- a/Helpviewer/AdBlock/AdBlockIcon.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockIcon.py	Wed Feb 07 18:57:46 2018 +0100
@@ -53,45 +53,45 @@
             self.setPixmap(
                 UI.PixmapCache.getPixmap("adBlockPlusDisabled16.png"))
     
-    def __createMenu(self, menu=None):
+    def __createMenu(self, menu):
         """
         Private slot to create the context menu.
         
-        @param menu parent menu (QMenu)
+        @param menu parent menu
+        @type QMenu
         """
-        if menu is None:
-            menu = self.sender()
-            if menu is None:
-                return
-        
         menu.clear()
         
         import Helpviewer.HelpWindow
         manager = Helpviewer.HelpWindow.HelpWindow.adBlockManager()
         
         if manager.isEnabled():
-            menu.addAction(
+            act = menu.addAction(
                 UI.PixmapCache.getIcon("adBlockPlusDisabled.png"),
-                self.tr("Disable AdBlock"),
-                self.__enableAdBlock).setData(False)
+                self.tr("Disable AdBlock"))
+            act.setData(False)
+            act.triggered.connect(lambda: self.__enableAdBlock(act))
         else:
-            menu.addAction(
+            act = menu.addAction(
                 UI.PixmapCache.getIcon("adBlockPlus.png"),
-                self.tr("Enable AdBlock"),
-                self.__enableAdBlock).setData(True)
+                self.tr("Enable AdBlock"))
+            act.setData(True)
+            act.triggered.connect(lambda: self.__enableAdBlock(act))
         menu.addSeparator()
         if manager.isEnabled() and \
            self.__mw.currentBrowser().page().url().host():
             if self.__isCurrentHostExcepted():
-                menu.addAction(
+                act = menu.addAction(
                     UI.PixmapCache.getIcon("adBlockPlus.png"),
-                    self.tr("Remove AdBlock Exception"),
-                    self.__setException).setData(False)
+                    self.tr("Remove AdBlock Exception"))
+                act.setData(False)
+                act.triggered.connect(lambda: self.__setException(act))
             else:
-                menu.addAction(
+                act = menu.addAction(
                     UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
-                    self.tr("Add AdBlock Exception"),
-                    self.__setException).setData(True)
+                    self.tr("Add AdBlock Exception"))
+                act.setData(True)
+                act.triggered.connect(lambda: self.__setException(act))
         menu.addAction(
             UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
             self.tr("AdBlock Exceptions..."), manager.showExceptionsDialog)
@@ -110,8 +110,9 @@
                 address = entry.urlString()[-55:]
                 actionText = self.tr("{0} with ({1})").format(
                     address, entry.rule.filter()).replace("&", "&&")
-                act = menu.addAction(actionText, manager.showRule)
+                act = menu.addAction(actionText)
                 act.setData(entry.rule)
+                act.triggered.connect(lambda: manager.showRule(act))
         else:
             menu.addAction(self.tr("No content blocked")).setEnabled(False)
     
@@ -124,7 +125,8 @@
         if not self.__menuAction:
             self.__menuAction = QAction(self.tr("AdBlock"), self)
             self.__menuAction.setMenu(QMenu())
-            self.__menuAction.menu().aboutToShow.connect(self.__createMenu)
+            self.__menuAction.menu().aboutToShow.connect(
+                lambda: self.__createMenu(self.__menuAction.menu()))
         
         if self.__enabled:
             self.__menuAction.setIcon(
@@ -145,15 +147,16 @@
         self.__createMenu(menu)
         menu.exec_(pos)
     
-    def __enableAdBlock(self):
+    def __enableAdBlock(self, act):
         """
         Private slot to enable or disable AdBlock.
+        
+        @param act reference to the action
+        @type QAction
         """
-        act = self.sender()
-        if act is not None:
-            import Helpviewer.HelpWindow
-            Helpviewer.HelpWindow.HelpWindow.adBlockManager().setEnabled(
-                act.data())
+        import Helpviewer.HelpWindow
+        Helpviewer.HelpWindow.HelpWindow.adBlockManager().setEnabled(
+            act.data())
     
     def __isCurrentHostExcepted(self):
         """
@@ -184,22 +187,23 @@
             else:
                 self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus16.png"))
     
-    def __setException(self):
+    def __setException(self, act):
         """
         Private slot to add or remove the current host from the list of
         exceptions.
+        
+        @param act referenced to the action
+        @type QAction
         """
-        act = self.sender()
-        if act is not None:
-            import Helpviewer.HelpWindow
-            urlHost = self.__mw.currentBrowser().page().url().host()
-            if act.data():
-                Helpviewer.HelpWindow.HelpWindow.adBlockManager()\
-                    .addException(urlHost)
-            else:
-                Helpviewer.HelpWindow.HelpWindow.adBlockManager()\
-                    .removeException(urlHost)
-            self.currentChanged()
+        import Helpviewer.HelpWindow
+        urlHost = self.__mw.currentBrowser().page().url().host()
+        if act.data():
+            Helpviewer.HelpWindow.HelpWindow.adBlockManager()\
+                .addException(urlHost)
+        else:
+            Helpviewer.HelpWindow.HelpWindow.adBlockManager()\
+                .removeException(urlHost)
+        self.currentChanged()
     
     def sourceChanged(self, browser, url):
         """
--- a/Helpviewer/AdBlock/AdBlockManager.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockManager.py	Wed Feb 07 18:57:46 2018 +0100
@@ -364,15 +364,16 @@
         self.__adBlockDialog.show()
         return self.__adBlockDialog
     
-    def showRule(self):
+    def showRule(self, act):
         """
         Public slot to show an AdBlock rule.
+        
+        @param act reference to the action
+        @type QAction
         """
-        act = self.sender()
-        if act is not None:
-            rule = act.data()
-            if rule:
-                self.showDialog().showRule(rule)
+        rule = act.data()
+        if rule:
+            self.showDialog().showRule(rule)
     
     def elementHidingRules(self):
         """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Wed Feb 07 18:57:46 2018 +0100
@@ -53,10 +53,6 @@
         """
         Private slot to handle the finished download of a script.
         """
-        if self.sender() != self.__reply:
-            self.finished.emit()
-            return
-        
         response = bytes(self.__reply.readAll()).decode()
         
         if self.__reply.error() == QNetworkReply.NoError and \
@@ -106,10 +102,6 @@
         """
         Private slot to handle the finished download of a required script.
         """
-        if self.sender() != self.__reply:
-            self.finished.emit()
-            return
-        
         response = bytes(self.__reply.readAll()).decode()
         
         if self.__reply.error() == QNetworkReply.NoError and response:
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Wed Feb 07 18:57:46 2018 +0100
@@ -61,18 +61,19 @@
         """
         from .GreaseMonkeyDownloader import GreaseMonkeyDownloader
         downloader = GreaseMonkeyDownloader(request, self)
-        downloader.finished.connect(self.__downloaderFinished)
+        downloader.finished.connect(
+            lambda: self.__downloaderFinished(downloader))
         self.__downloaders.append(downloader)
     
-    def __downloaderFinished(self):
+    def __downloaderFinished(self, downloader):
         """
         Private slot to handle the completion of a script download.
+        
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
-        if downloader is None or downloader not in self.__downloaders:
-            return
-        
-        self.__downloaders.remove(downloader)
+        if downloader in self.__downloaders:
+            self.__downloaders.remove(downloader)
     
     def scriptsDirectory(self):
         """
@@ -231,14 +232,13 @@
         """
         return scheme in ["http", "https", "data", "ftp"]
     
-    def pageLoadStarted(self):
+    def pageLoadStarted(self, frame):
         """
         Public slot to handle the start of loading a page.
+        
+        @param frame reference to the main frame of the loading page
+        @type QWebFrame
         """
-        frame = self.sender()
-        if not frame:
-            return
-        
         urlScheme = frame.url().scheme()
         urlString = bytes(frame.url().toEncoded()).decode()
         
@@ -290,8 +290,9 @@
         
         @param page reference to the web page (HelpWebPage)
         """
-        page.mainFrame().javaScriptWindowObjectCleared.connect(
-            self.pageLoadStarted)
+        mainFrame = page.mainFrame()
+        mainFrame.javaScriptWindowObjectCleared.connect(
+            lambda: self.pageLoadStarted(mainFrame))
     
     def createRequest(self, op, request, outgoingData=None):
         """
--- a/WebBrowser/AdBlock/AdBlockIcon.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/AdBlock/AdBlockIcon.py	Wed Feb 07 18:57:46 2018 +0100
@@ -55,44 +55,43 @@
             self.setPixmap(
                 UI.PixmapCache.getPixmap("adBlockPlusDisabled16.png"))
     
-    def __createMenu(self, menu=None):
+    def __createMenu(self, menu):
         """
         Private slot to create the context menu.
         
         @param menu parent menu
         @type QMenu
         """
-        if menu is None:
-            menu = self.sender()
-            if menu is None:
-                return
-        
         menu.clear()
         
         manager = self.__mw.adBlockManager()
         
         if manager.isEnabled():
-            menu.addAction(
+            act = menu.addAction(
                 UI.PixmapCache.getIcon("adBlockPlusDisabled.png"),
-                self.tr("Disable AdBlock"),
-                self.__enableAdBlock).setData(False)
+                self.tr("Disable AdBlock"))
+            act.setData(False)
+            act.triggered.connect(lambda: self.__enableAdBlock(act))
         else:
-            menu.addAction(
+            act = menu.addAction(
                 UI.PixmapCache.getIcon("adBlockPlus.png"),
-                self.tr("Enable AdBlock"),
-                self.__enableAdBlock).setData(True)
+                self.tr("Enable AdBlock"))
+            act.setData(True)
+            act.triggered.connect(lambda: self.__enableAdBlock(act))
         menu.addSeparator()
         if manager.isEnabled() and self.__mw.currentBrowser().url().host():
             if self.__isCurrentHostExcepted():
-                menu.addAction(
+                act = menu.addAction(
                     UI.PixmapCache.getIcon("adBlockPlus.png"),
-                    self.tr("Remove AdBlock Exception"),
-                    self.__setException).setData(False)
+                    self.tr("Remove AdBlock Exception"))
+                act.setData(False)
+                act.triggered.connect(lambda: self.__setException(act))
             else:
-                menu.addAction(
+                act = menu.addAction(
                     UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
-                    self.tr("Add AdBlock Exception"),
-                    self.__setException).setData(True)
+                    self.tr("Add AdBlock Exception"))
+                act.setData(True)
+                act.triggered.connect(lambda: self.__setException(act))
         menu.addAction(
             UI.PixmapCache.getIcon("adBlockPlusGreen.png"),
             self.tr("AdBlock Exceptions..."), manager.showExceptionsDialog)
@@ -111,7 +110,8 @@
         if not self.__menuAction:
             self.__menuAction = QAction(self.tr("AdBlock"), self)
             self.__menuAction.setMenu(QMenu())
-            self.__menuAction.menu().aboutToShow.connect(self.__createMenu)
+            self.__menuAction.menu().aboutToShow.connect(
+                lambda: self.__createMenu(self.__menuAction.menu()))
         
         if self.__enabled:
             self.__menuAction.setIcon(
@@ -133,13 +133,14 @@
         self.__createMenu(menu)
         menu.exec_(pos)
     
-    def __enableAdBlock(self):
+    def __enableAdBlock(self, act):
         """
         Private slot to enable or disable AdBlock.
+        
+        @param act reference to the action
+        @type QAction
         """
-        act = self.sender()
-        if act is not None:
-            self.__mw.adBlockManager().setEnabled(act.data())
+        self.__mw.adBlockManager().setEnabled(act.data())
     
     def __isCurrentHostExcepted(self):
         """
@@ -169,19 +170,20 @@
             else:
                 self.setPixmap(UI.PixmapCache.getPixmap("adBlockPlus16.png"))
     
-    def __setException(self):
+    def __setException(self, act):
         """
         Private slot to add or remove the current host from the list of
         exceptions.
+        
+        @param act referenced to the action
+        @type QAction
         """
-        act = self.sender()
-        if act is not None:
-            urlHost = self.__mw.currentBrowser().url().host()
-            if act.data():
-                self.__mw.adBlockManager().addException(urlHost)
-            else:
-                self.__mw.adBlockManager().removeException(urlHost)
-            self.currentChanged()
+        urlHost = self.__mw.currentBrowser().url().host()
+        if act.data():
+            self.__mw.adBlockManager().addException(urlHost)
+        else:
+            self.__mw.adBlockManager().removeException(urlHost)
+        self.currentChanged()
     
     def sourceChanged(self, browser, url):
         """
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py	Wed Feb 07 18:57:46 2018 +0100
@@ -72,10 +72,6 @@
         self.deleteLater()
         self.__reply.deleteLater()
         
-        if self.sender() != self.__reply:
-            self.error.emit()
-            return
-        
         if self.__reply.error() != QNetworkReply.NoError:
             self.error.emit()
             return
@@ -111,10 +107,6 @@
         self.deleteLater()
         self.__reply.deleteLater()
         
-        if self.sender() != self.__reply:
-            self.error.emit()
-            return
-        
         if self.__reply.error() != QNetworkReply.NoError:
             self.error.emit()
             return
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/GreaseMonkey/GreaseMonkeyManager.py	Wed Feb 07 18:57:46 2018 +0100
@@ -82,49 +82,49 @@
         from .GreaseMonkeyDownloader import GreaseMonkeyDownloader
         downloader = GreaseMonkeyDownloader(
             url, self, GreaseMonkeyDownloader.DownloadMainScript)
-        downloader.finished.connect(self.__downloaderFinished)
+        downloader.finished.connect(
+            lambda f: self.__downloaderFinished(f, downloader))
         self.__downloaders.append(downloader)
     
-    def __downloaderFinished(self, fileName):
+    def __downloaderFinished(self, fileName, downloader):
         """
         Private slot to handle the completion of a script download.
         
         @param fileName name of the downloaded script
         @type str
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
-        if downloader is None or downloader not in self.__downloaders:
-            return
-        
-        self.__downloaders.remove(downloader)
-        
-        deleteScript = True
-        from .GreaseMonkeyScript import GreaseMonkeyScript
-        script = GreaseMonkeyScript(self, fileName)
-        if script.isValid():
-            if not self.containsScript(script.fullName()):
-                from .GreaseMonkeyAddScriptDialog import \
-                    GreaseMonkeyAddScriptDialog
-                dlg = GreaseMonkeyAddScriptDialog(self, script)
-                deleteScript = dlg.exec_() != QDialog.Accepted
-            else:
-                E5MessageBox.information(
-                    None,
-                    QCoreApplication.translate(
-                        "GreaseMonkeyManager",
-                        "Install GreaseMonkey Script"),
-                    QCoreApplication.translate(
-                        "GreaseMonkeyManager",
-                        """'{0}' is already installed.""").format(
-                        script.fullName())
-                )
-        
-        if deleteScript:
-            try:
-                os.remove(fileName)
-            except (IOError, OSError):
-                # ignore
-                pass
+        if downloader in self.__downloaders:
+            self.__downloaders.remove(downloader)
+            
+            deleteScript = True
+            from .GreaseMonkeyScript import GreaseMonkeyScript
+            script = GreaseMonkeyScript(self, fileName)
+            if script.isValid():
+                if not self.containsScript(script.fullName()):
+                    from .GreaseMonkeyAddScriptDialog import \
+                        GreaseMonkeyAddScriptDialog
+                    dlg = GreaseMonkeyAddScriptDialog(self, script)
+                    deleteScript = dlg.exec_() != QDialog.Accepted
+                else:
+                    E5MessageBox.information(
+                        None,
+                        QCoreApplication.translate(
+                            "GreaseMonkeyManager",
+                            "Install GreaseMonkey Script"),
+                        QCoreApplication.translate(
+                            "GreaseMonkeyManager",
+                            """'{0}' is already installed.""").format(
+                            script.fullName())
+                    )
+            
+            if deleteScript:
+                try:
+                    os.remove(fileName)
+                except (IOError, OSError):
+                    # ignore
+                    pass
     
     def scriptsDirectory(self):
         """
@@ -244,7 +244,7 @@
             return False
         
         self.__scripts.append(script)
-        script.scriptChanged.connect(self.__scriptChanged)
+        script.scriptChanged.connect(lambda: self.__scriptChanged(script))
         
         collection = WebBrowserWindow.webProfile().scripts()
         collection.insert(script.webScript())
@@ -323,14 +323,13 @@
                 collection = WebBrowserWindow.webProfile().scripts()
                 collection.insert(script.webScript())
     
-    def __scriptChanged(self):
+    def __scriptChanged(self, script):
         """
         Private slot handling a changed script.
+        
+        @param script reference to the changed script
+        @type GreaseMonkeyScript
         """
-        script = self.sender()
-        if not script:
-            return
-        
         fullName = script.fullName()
         collection = WebBrowserWindow.webProfile().scripts()
         collection.remove(collection.findScript(fullName))
--- a/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/GreaseMonkey/GreaseMonkeyScript.py	Wed Feb 07 18:57:46 2018 +0100
@@ -434,27 +434,33 @@
             self.__manager,
             GreaseMonkeyDownloader.DownloadMainScript)
         downloader.updateScript(self.__fileName)
-        downloader.finished.connect(self.__downloaderFinished)
-        downloader.error.connect(self.__downloaderError)
+        downloader.finished.connect(
+            lambda: self.__downloaderFinished(downloader))
+        downloader.error.connect(
+            lambda: self.__downloaderError(downloader))
         self.__downloaders.append(downloader)
         
         self.__downloadRequires()
     
-    def __downloaderFinished(self):
+    def __downloaderFinished(self, downloader):
         """
         Private slot to handle a finished download.
+        
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
         if downloader in self.__downloaders:
             self.__downloaders.remove(downloader)
         self.__updating = False
         self.updatingChanged.emit(self.__updating)
     
-    def __downloaderError(self):
+    def __downloaderError(self, downloader):
         """
         Private slot to handle a downloader error.
+        
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
         if downloader in self.__downloaders:
             self.__downloaders.remove(downloader)
         self.__updating = False
@@ -481,24 +487,30 @@
                     QUrl(urlStr),
                     self.__manager,
                     GreaseMonkeyDownloader.DownloadRequireScript)
-                downloader.finished.connect(self.__requireDownloaded)
-                downloader.error.connect(self.__requireDownloadError)
+                downloader.finished.connect(
+                    lambda: self.__requireDownloaded(downloader))
+                downloader.error.connect(
+                    lambda: self.__requireDownloadError(downloader))
                 self.__downloaders.append(downloader)
     
-    def __requireDownloaded(self):
+    def __requireDownloaded(self, downloader):
         """
         Private slot to handle a finished download of a required script.
+        
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
         if downloader in self.__downloaders:
             self.__downloaders.remove(downloader)
         
         self.__reloadScript()
     
-    def __requireDownloadError(self):
+    def __requireDownloadError(self, downloader):
         """
         Private slot to handle a downloader error.
+        
+        @param downloader reference to the downloader object
+        @type GreaseMonkeyDownloader
         """
-        downloader = self.sender()
         if downloader in self.__downloaders:
             self.__downloaders.remove(downloader)
--- a/WebBrowser/Network/EricSchemeHandler.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/Network/EricSchemeHandler.py	Wed Feb 07 18:57:46 2018 +0100
@@ -47,19 +47,21 @@
         """
         if job.requestUrl().path() in self.SupportedPages:
             reply = EricSchemeReply(job)
-            reply.closed.connect(self.__replyClosed)
+            reply.closed.connect(lambda: self.__replyClosed(reply))
             self.__replies.append(reply)
             job.reply(b"text/html", reply)
         else:
             job.reply(QByteArray(), QBuffer())
             # job.fail(QWebEngineUrlRequestJob.UrlNotFound)
     
-    def __replyClosed(self):
+    def __replyClosed(self, reply):
         """
         Private slot handling the closed signal of a reply.
+        
+        @param reply reference to the network reply
+        @type EricSchemeReply
         """
-        reply = self.sender()
-        if reply and reply in self.__replies:
+        if reply in self.__replies:
             self.__replies.remove(reply)
 
 
--- a/WebBrowser/Network/NetworkManager.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/Network/NetworkManager.py	Wed Feb 07 18:57:46 2018 +0100
@@ -15,7 +15,6 @@
 from PyQt5.QtWidgets import qApp, QStyle, QDialog
 from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkProxy, \
     QNetworkProxyFactory, QNetworkRequest
-from PyQt5.QtWebEngineWidgets import QWebEnginePage
 
 from E5Gui import E5MessageBox
 
@@ -210,12 +209,16 @@
         else:
             return False
     
-    def authentication(self, url, auth):
+    def authentication(self, url, auth, page=None):
         """
         Public slot to handle an authentication request.
         
-        @param url URL requesting authentication (QUrl)
-        @param auth reference to the authenticator object (QAuthenticator)
+        @param url URL requesting authentication
+        @type QUrl
+        @param auth reference to the authenticator object
+        @type QAuthenticator
+        @param page reference to the web page
+        @type QWebEnginePage or None
         """
         urlRoot = "{0}://{1}"\
             .format(url.scheme(), url.authority())
@@ -249,8 +252,7 @@
                 WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\
                     .setLogin(url, realm, username, password)
         else:
-            page = self.sender()
-            if isinstance(page, QWebEnginePage):
+            if page is not None:
                 self.__showAuthenticationErrorPage(page, url)
     
     def __showAuthenticationErrorPage(self, page, url):
--- a/WebBrowser/Network/QtHelpSchemeHandler.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/Network/QtHelpSchemeHandler.py	Wed Feb 07 18:57:46 2018 +0100
@@ -79,18 +79,20 @@
         """
         if job.requestUrl().scheme() == "qthelp":
             reply = QtHelpSchemeReply(job, self.__engine)
-            reply.closed.connect(self.__replyClosed)
+            reply.closed.connect(lambda: self.__replyClosed(reply))
             self.__replies.append(reply)
             job.reply(reply.mimeType(), reply)
         else:
             job.fail(QWebEngineUrlRequestJob.UrlInvalid)
     
-    def __replyClosed(self):
+    def __replyClosed(self, reply):
         """
         Private slot handling the closed signal of a reply.
+        
+        @param reply reference to the network reply
+        @type QtHelpSchemeReply
         """
-        reply = self.sender()
-        if reply and reply in self.__replies:
+        if reply in self.__replies:
             self.__replies.remove(reply)
 
 
--- a/WebBrowser/WebBrowserPage.py	Tue Feb 06 19:21:00 2018 +0100
+++ b/WebBrowser/WebBrowserPage.py	Wed Feb 07 18:57:46 2018 +0100
@@ -66,7 +66,8 @@
             self.__featurePermissionRequested)
         
         self.authenticationRequired.connect(
-            WebBrowserWindow.networkManager().authentication)
+            lambda url, auth: WebBrowserWindow.networkManager().authentication(
+                url, auth, self))
         
         self.proxyAuthenticationRequired.connect(
             WebBrowserWindow.networkManager().proxyAuthentication)

eric ide

mercurial