From 6ef24739fcad8dea6c73afd2cd077c428db8f17a Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Wed, 19 Mar 2025 02:14:13 +0100 Subject: [PATCH 1/2] NF: sligthly optimize cards.py (#3870) As AnkiDroid wants to be similar to Anki, instead of making AnkiDroid slightly less efficient, I prefer to slightly improve Anki. AnkiDroid related PR: https://github.com/ankidroid/Anki-Android/pull/18112. --- pylib/anki/cards.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pylib/anki/cards.py b/pylib/anki/cards.py index 8a822a7f1..dafc29145 100644 --- a/pylib/anki/cards.py +++ b/pylib/anki/cards.py @@ -172,10 +172,11 @@ class Card(DeprecatedNamesMixin): def template(self) -> TemplateDict: notetype = self.note_type() + templates = notetype["tmpls"] if notetype["type"] == MODEL_STD: - return self.note_type()["tmpls"][self.ord] + return templates[self.ord] else: - return self.note_type()["tmpls"][0] + return templates[0] def start_timer(self) -> None: self.timer_started = time.time() From ffcc7612ab3accc88b8214047e72f3b6d6167442 Mon Sep 17 00:00:00 2001 From: Evgeny Kulikov <248055+beyondcompute@users.noreply.github.com> Date: Wed, 19 Mar 2025 03:27:34 +0200 Subject: [PATCH 2/2] Add-ons Dialog: disable View Config/Page/Files buttons when clicking them would not lead to useful result (#3869) * Remove unused import * Nit-pick on code comment * Enable View Page/Config buttons only when 1 add-on selected * Enable Cmd+W shortcut (on Mac only) to close Add-ons dialog --- qt/aqt/addons.py | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index 84ceac21f..92965e4e9 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -40,10 +40,10 @@ from aqt import gui_hooks from aqt.log import ADDON_LOGGER_PREFIX, find_addon_logger, get_addon_logs_folder from aqt.qt import * from aqt.utils import ( + addCloseShortcut, askUser, disable_help_button, getFile, - is_win, openFolder, openLink, restoreGeom, @@ -821,12 +821,17 @@ class AddonsDialog(QDialog): qconnect(f.config.clicked, self.onConfig) qconnect(self.form.addonList.itemDoubleClicked, self.onConfig) qconnect(self.form.addonList.currentRowChanged, self._onAddonItemSelected) + qconnect( + self.form.addonList.itemSelectionChanged, self._onAddonSelectionChanged + ) self.setWindowTitle(tr.addons_window_title()) disable_help_button(self) self.setAcceptDrops(True) self.redrawAddons() restoreGeom(self, "addons") + addCloseShortcut(self) gui_hooks.addons_dialog_will_show(self) + self._onAddonSelectionChanged() self.show() def dragEnterEvent(self, event: QDragEnterEvent) -> None: @@ -902,18 +907,33 @@ class AddonsDialog(QDialog): addonList.reset() + def _onAddonSelectionChanged(self) -> None: + self.form.viewFiles.setEnabled(False) + self.form.viewPage.setEnabled(False) + self.form.config.setEnabled(False) + + selected_count = len(self.selectedAddons()) + if selected_count == 0: + # View Files button shows top-level add-ons directory when nothing is selected + self.form.viewFiles.setEnabled(True) + elif selected_count == 1: + addon = self.addons[self.form.addonList.currentRow()] + + self.form.viewFiles.setEnabled(True) + self.form.viewPage.setEnabled(addon.page() is not None) + self.form.config.setEnabled( + bool( + self.mgr.getConfig(addon.dir_name) + or self.mgr.configAction(addon.dir_name) + ) + ) + return + def _onAddonItemSelected(self, row_int: int) -> None: try: addon = self.addons[row_int] except IndexError: return - self.form.viewPage.setEnabled(addon.page() is not None) - self.form.config.setEnabled( - bool( - self.mgr.getConfig(addon.dir_name) - or self.mgr.configAction(addon.dir_name) - ) - ) gui_hooks.addons_dialog_did_change_selected_addon(self, addon) return @@ -949,7 +969,7 @@ class AddonsDialog(QDialog): openLink(page) def onViewFiles(self) -> None: - # if nothing selected, open top level folder + # if nothing selected, open top-level folder selected = self.selectedAddons() if not selected: openFolder(self.mgr.addonsFolder())