Wed, 07 Feb 2018 18:57:46 +0100
Continued removing the use of QObject.sender().
--- 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)