From d7d9361fbb7325c06a7b5063427649c445088dc9 Mon Sep 17 00:00:00 2001 From: beyondcompute Date: Mon, 17 Mar 2025 00:58:18 +0200 Subject: [PATCH 1/4] Remove unused import --- qt/aqt/addons.py | 1 - 1 file changed, 1 deletion(-) diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index 84ceac21fbf..f67dd214b61 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -43,7 +43,6 @@ askUser, disable_help_button, getFile, - is_win, openFolder, openLink, restoreGeom, From 897e99ce1f7788500326dc813c4b36c894827612 Mon Sep 17 00:00:00 2001 From: beyondcompute Date: Mon, 17 Mar 2025 00:58:31 +0200 Subject: [PATCH 2/4] Nit-pick on code comment --- qt/aqt/addons.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index f67dd214b61..2638ce4adc1 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -948,7 +948,7 @@ def onViewPage(self) -> None: 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()) From cc83ec4b2b80c9ee4f6092dfea05840985c70839 Mon Sep 17 00:00:00 2001 From: beyondcompute Date: Mon, 17 Mar 2025 00:59:01 +0200 Subject: [PATCH 3/4] Enable View Page/Config buttons only when 1 add-on selected --- qt/aqt/addons.py | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index 2638ce4adc1..42886e79229 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -820,12 +820,16 @@ def __init__(self, addonsManager: AddonManager) -> None: 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") gui_hooks.addons_dialog_will_show(self) + self._onAddonSelectionChanged() self.show() def dragEnterEvent(self, event: QDragEnterEvent) -> None: @@ -901,18 +905,33 @@ def redrawAddons( 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 From 581ef7df19bea280a4ee0e0fe68dc81b5bf31dbe Mon Sep 17 00:00:00 2001 From: beyondcompute Date: Mon, 17 Mar 2025 01:11:19 +0200 Subject: [PATCH 4/4] Enable Cmd+W shortcut (on Mac only) to close Add-ons dialog --- qt/aqt/addons.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qt/aqt/addons.py b/qt/aqt/addons.py index 42886e79229..92965e4e9ec 100644 --- a/qt/aqt/addons.py +++ b/qt/aqt/addons.py @@ -40,6 +40,7 @@ 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, @@ -828,6 +829,7 @@ def __init__(self, addonsManager: AddonManager) -> None: self.setAcceptDrops(True) self.redrawAddons() restoreGeom(self, "addons") + addCloseShortcut(self) gui_hooks.addons_dialog_will_show(self) self._onAddonSelectionChanged() self.show()