WebBrowser/GreaseMonkey/GreaseMonkeyManager.py

changeset 6120
4c60a21ce6dd
parent 6048
82ad8ec9548c
child 6128
afc2cda1a743
diff -r 18fb5d765f3a -r 4c60a21ce6dd WebBrowser/GreaseMonkey/GreaseMonkeyManager.py
--- 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))

eric ide

mercurial