mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
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
This commit is contained in:
parent
6ef24739fc
commit
ffcc7612ab
1 changed files with 29 additions and 9 deletions
|
@ -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.log import ADDON_LOGGER_PREFIX, find_addon_logger, get_addon_logs_folder
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
from aqt.utils import (
|
from aqt.utils import (
|
||||||
|
addCloseShortcut,
|
||||||
askUser,
|
askUser,
|
||||||
disable_help_button,
|
disable_help_button,
|
||||||
getFile,
|
getFile,
|
||||||
is_win,
|
|
||||||
openFolder,
|
openFolder,
|
||||||
openLink,
|
openLink,
|
||||||
restoreGeom,
|
restoreGeom,
|
||||||
|
@ -821,12 +821,17 @@ class AddonsDialog(QDialog):
|
||||||
qconnect(f.config.clicked, self.onConfig)
|
qconnect(f.config.clicked, self.onConfig)
|
||||||
qconnect(self.form.addonList.itemDoubleClicked, self.onConfig)
|
qconnect(self.form.addonList.itemDoubleClicked, self.onConfig)
|
||||||
qconnect(self.form.addonList.currentRowChanged, self._onAddonItemSelected)
|
qconnect(self.form.addonList.currentRowChanged, self._onAddonItemSelected)
|
||||||
|
qconnect(
|
||||||
|
self.form.addonList.itemSelectionChanged, self._onAddonSelectionChanged
|
||||||
|
)
|
||||||
self.setWindowTitle(tr.addons_window_title())
|
self.setWindowTitle(tr.addons_window_title())
|
||||||
disable_help_button(self)
|
disable_help_button(self)
|
||||||
self.setAcceptDrops(True)
|
self.setAcceptDrops(True)
|
||||||
self.redrawAddons()
|
self.redrawAddons()
|
||||||
restoreGeom(self, "addons")
|
restoreGeom(self, "addons")
|
||||||
|
addCloseShortcut(self)
|
||||||
gui_hooks.addons_dialog_will_show(self)
|
gui_hooks.addons_dialog_will_show(self)
|
||||||
|
self._onAddonSelectionChanged()
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def dragEnterEvent(self, event: QDragEnterEvent) -> None:
|
def dragEnterEvent(self, event: QDragEnterEvent) -> None:
|
||||||
|
@ -902,11 +907,19 @@ class AddonsDialog(QDialog):
|
||||||
|
|
||||||
addonList.reset()
|
addonList.reset()
|
||||||
|
|
||||||
def _onAddonItemSelected(self, row_int: int) -> None:
|
def _onAddonSelectionChanged(self) -> None:
|
||||||
try:
|
self.form.viewFiles.setEnabled(False)
|
||||||
addon = self.addons[row_int]
|
self.form.viewPage.setEnabled(False)
|
||||||
except IndexError:
|
self.form.config.setEnabled(False)
|
||||||
return
|
|
||||||
|
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.viewPage.setEnabled(addon.page() is not None)
|
||||||
self.form.config.setEnabled(
|
self.form.config.setEnabled(
|
||||||
bool(
|
bool(
|
||||||
|
@ -914,6 +927,13 @@ class AddonsDialog(QDialog):
|
||||||
or self.mgr.configAction(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
|
||||||
gui_hooks.addons_dialog_did_change_selected_addon(self, addon)
|
gui_hooks.addons_dialog_did_change_selected_addon(self, addon)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -949,7 +969,7 @@ class AddonsDialog(QDialog):
|
||||||
openLink(page)
|
openLink(page)
|
||||||
|
|
||||||
def onViewFiles(self) -> None:
|
def onViewFiles(self) -> None:
|
||||||
# if nothing selected, open top level folder
|
# if nothing selected, open top-level folder
|
||||||
selected = self.selectedAddons()
|
selected = self.selectedAddons()
|
||||||
if not selected:
|
if not selected:
|
||||||
openFolder(self.mgr.addonsFolder())
|
openFolder(self.mgr.addonsFolder())
|
||||||
|
|
Loading…
Reference in a new issue