--- 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))