From 0c271268170185cf25b997bc89c57c81991df44a Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 11 Feb 2020 16:46:57 +1000 Subject: [PATCH] fix latex render progress; display more frequently --- pylib/anki/media.py | 22 +++++++++++----------- qt/aqt/mediacheck.py | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/pylib/anki/media.py b/pylib/anki/media.py index 091b477e1..291a27f9f 100644 --- a/pylib/anki/media.py +++ b/pylib/anki/media.py @@ -6,6 +6,7 @@ from __future__ import annotations import os import re import sys +import time import urllib.error import urllib.parse import urllib.request @@ -176,24 +177,23 @@ class MediaManager: If an error is encountered, returns (note_id, error_message) """ - last_progress = intTime() - for c, (nid, mid, flds) in enumerate( - self.col.db.execute("select id, mid, flds from notes") + last_progress = time.time() + checked = 0 + for (nid, mid, flds) in self.col.db.execute( + "select id, mid, flds from notes where flds like '%[%'" ): - if "[" not in flds: - continue model = self.col.models.get(mid) _html, errors = render_latex_returning_errors(flds, model, self.col) if errors: return (nid, "\n".join(errors)) - if c % 10 == 0: - elap = last_progress - intTime() - if elap >= 1 and progress_cb is not None: - last_progress = intTime() - if not progress_cb(c + 1): - return None + checked += 1 + elap = time.time() - last_progress + if elap >= 0.3 and progress_cb is not None: + last_progress = intTime() + if not progress_cb(checked): + return None return None diff --git a/qt/aqt/mediacheck.py b/qt/aqt/mediacheck.py index 5b6ef4c6b..eb596d06d 100644 --- a/qt/aqt/mediacheck.py +++ b/qt/aqt/mediacheck.py @@ -98,8 +98,11 @@ class MediaChecker: self.progress_dialog = self.mw.progress.start() try: out = self.mw.col.media.render_all_latex(self._on_render_latex_progress) + if self.progress_dialog.wantCancel: + return finally: self.mw.progress.finish() + self.progress_dialog = None if out is not None: nid, err = out