--- a/src/eric7/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/WebBrowser/GreaseMonkey/GreaseMonkeyDownloader.py Wed Jul 13 14:55:47 2022 +0200 @@ -19,21 +19,22 @@ class GreaseMonkeyDownloader(QObject): """ Class implementing the downloader for GreaseMonkey scripts. - + @signal finished(fileName) emitted to indicate the end of a script download (str) @signal error() emitted to indicate a script download error """ + finished = pyqtSignal(str) error = pyqtSignal() - + DownloadMainScript = 1 DownloadRequireScript = 2 - + def __init__(self, url, manager, mode): """ Constructor - + @param url URL to download script from @type QUrl @param manager reference to the GreaseMonkey manager @@ -42,27 +43,26 @@ @type int (one of DownloadMainScript, DownloadRequireScript) """ super().__init__() - + self.__manager = manager - - self.__reply = WebBrowserWindow.networkManager().get( - QNetworkRequest(url)) + + self.__reply = WebBrowserWindow.networkManager().get(QNetworkRequest(url)) if mode == GreaseMonkeyDownloader.DownloadMainScript: self.__reply.finished.connect(self.__scriptDownloaded) else: self.__reply.finished.connect(self.__requireDownloaded) - + self.__fileName = "" - + def updateScript(self, fileName): """ Public method to set the file name for the script to be downloaded. - + @param fileName file name for the script @type str """ self.__fileName = fileName - + @pyqtSlot() def __scriptDownloaded(self): """ @@ -70,33 +70,35 @@ """ self.deleteLater() self.__reply.deleteLater() - + if self.__reply.error() != QNetworkReply.NetworkError.NoError: self.error.emit() return - + response = bytes(self.__reply.readAll()).decode() - + if "// ==UserScript==" not in response: self.error.emit() return - + if not self.__fileName: from WebBrowser.Tools import WebBrowserTools + filePath = os.path.join( self.__manager.scriptsDirectory(), - WebBrowserTools.getFileNameFromUrl(self.__reply.url())) + WebBrowserTools.getFileNameFromUrl(self.__reply.url()), + ) self.__fileName = WebBrowserTools.ensureUniqueFilename(filePath) - + try: with open(self.__fileName, "w", encoding="utf-8") as f: f.write(response) except OSError: self.error.emit() return - + self.finished.emit(self.__fileName) - + @pyqtSlot() def __requireDownloaded(self): """ @@ -104,52 +106,49 @@ """ self.deleteLater() self.__reply.deleteLater() - + if self.__reply.error() != QNetworkReply.NetworkError.NoError: self.error.emit() return - + response = bytes(self.__reply.readAll()).decode() - + if not response: self.error.emit() return - + settings = QSettings( - os.path.join(self.__manager.requireScriptsDirectory(), - "requires.ini"), - QSettings.Format.IniFormat) + os.path.join(self.__manager.requireScriptsDirectory(), "requires.ini"), + QSettings.Format.IniFormat, + ) settings.beginGroup("Files") - + if not self.__fileName: - self.__fileName = settings.value( - self.__reply.request().url().toString()) + self.__fileName = settings.value(self.__reply.request().url().toString()) if not self.__fileName: - name = ( - pathlib.Path(self.__reply.request().url().path()).name - ) + name = pathlib.Path(self.__reply.request().url().path()).name if not name: name = "require.js" elif not name.endswith(".js"): name += ".js" - filePath = os.path.join( - self.__manager.requireScriptsDirectory(), name) + filePath = os.path.join(self.__manager.requireScriptsDirectory(), name) from WebBrowser.Tools import WebBrowserTools - self.__fileName = WebBrowserTools.ensureUniqueFilename( - filePath, "{0}") + + self.__fileName = WebBrowserTools.ensureUniqueFilename(filePath, "{0}") if not pathlib.Path(self.__fileName).is_absolute(): self.__fileName = os.path.join( - self.__manager.requireScriptsDirectory(), - self.__fileName) - + self.__manager.requireScriptsDirectory(), self.__fileName + ) + try: with open(self.__fileName, "w", encoding="utf-8") as f: f.write(response) except OSError: self.error.emit() return - - settings.setValue(self.__reply.request().url().toString(), - pathlib.Path(self.__fileName).name) - + + settings.setValue( + self.__reply.request().url().toString(), pathlib.Path(self.__fileName).name + ) + self.finished.emit(self.__fileName)