diff --git a/aqt/addons.py b/aqt/addons.py index e4eb35266..b72b477af 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -164,13 +164,26 @@ class GetAddons(QDialog): def accept(self): QDialog.accept(self) - # create downloader thread - txt = self.form.code.text().split() - for x in txt: - ret = download(self.mw, x) - if not ret: - return + + # get codes + try: + ids = [int(n) for n in self.form.code.text().split()] + except ValueError: + showWarning(_("Invalid code.")) + return + + errors = [] + + self.mw.progress.start(immediate=True) + for n in ids: + ret = download(self.mw, n) + if ret[0] == "error": + errors.append(_("Error downloading %(id)s: %(error)s") % dict(id=n, error=ret[1])) + continue data, fname = ret self.mw.addonManager.install(data, fname) - self.mw.progress.finish() - tooltip(_("Download successful. Please restart Anki."), period=3000) + self.mw.progress.finish() + if not errors: + tooltip(_("Download successful. Please restart Anki."), period=3000) + else: + showWarning("\n".join(errors)) diff --git a/aqt/downloader.py b/aqt/downloader.py index 66faf075a..3eae5c263 100644 --- a/aqt/downloader.py +++ b/aqt/downloader.py @@ -10,13 +10,7 @@ from anki.hooks import addHook, remHook import aqt def download(mw, code): - "Download addon/deck from AnkiWeb. On success caller must stop progress diag." - # check code is valid - try: - code = int(code) - except ValueError: - showWarning(_("Invalid code.")) - return + "Download addon/deck from AnkiWeb. Caller must start & stop progress diag." # create downloading thread thread = Downloader(code) def onRecv(): @@ -30,7 +24,6 @@ def download(mw, code): pass thread.recv.connect(onRecv) thread.start() - mw.progress.start(immediate=True) while not thread.isFinished(): mw.app.processEvents() thread.wait(100) @@ -38,8 +31,7 @@ def download(mw, code): # success return thread.data, thread.fname else: - mw.progress.finish() - showWarning(_("Download failed: %s") % thread.error) + return "error", thread.error class Downloader(QThread): diff --git a/designer/getaddons.ui b/designer/getaddons.ui index 6ad8ab28c..c0fbb068a 100644 --- a/designer/getaddons.ui +++ b/designer/getaddons.ui @@ -17,7 +17,7 @@ - To browse add-ons, please click the browse button below.<br><br>When you've found an add-on you like, please paste its code below. + To browse add-ons, please click the browse button below.<br><br>When you've found an add-on you like, please paste its code below. You can paste multiple codes, separated by spaces. true