From 1080ae10f98d242556ca71af9bed4513b6fe60e8 Mon Sep 17 00:00:00 2001 From: Glutanimate Date: Sat, 23 Feb 2019 09:02:06 +0100 Subject: [PATCH 1/5] Store addonconf geom and splitter. Tweak font sizes and margins. --- aqt/addons.py | 17 +++++++++++++++-- designer/addonconf.ui | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/aqt/addons.py b/aqt/addons.py index 665a6aea2..1de5ff064 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -11,7 +11,8 @@ from send2trash import send2trash from aqt.qt import * from aqt.utils import showInfo, openFolder, isWin, openLink, \ - askUser, restoreGeom, saveGeom, showWarning, tooltip, getFile + askUser, restoreGeom, saveGeom, restoreSplitter, saveSplitter, \ + showWarning, tooltip, getFile from zipfile import ZipFile import aqt.forms import aqt @@ -640,6 +641,8 @@ class ConfigEditor(QDialog): self.setupFonts() self.updateHelp() self.updateText(self.conf) + restoreGeom(self, "addonconf") + restoreSplitter(self.form.splitter, "addonconf") self.show() def onRestoreDefaults(self): @@ -648,6 +651,7 @@ class ConfigEditor(QDialog): def setupFonts(self): font_mono = QFontDatabase.systemFont(QFontDatabase.FixedFont) + font_mono.setPointSize(font_mono.pointSize() + 1) self.form.editor.setFont(font_mono) def updateHelp(self): @@ -662,6 +666,14 @@ class ConfigEditor(QDialog): json.dumps(conf, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))) + def onClose(self): + saveGeom(self, "addonconf") + saveSplitter(self.form.splitter, "addonconf") + + def reject(self): + self.onClose() + super().reject() + def accept(self): txt = self.form.editor.toPlainText() try: @@ -680,5 +692,6 @@ class ConfigEditor(QDialog): act = self.mgr.configUpdatedAction(self.addon) if act: act(new_conf) - + + self.onClose() super().accept() diff --git a/designer/addonconf.ui b/designer/addonconf.ui index 0ad52e196..d671c1dbd 100644 --- a/designer/addonconf.ui +++ b/designer/addonconf.ui @@ -57,7 +57,7 @@ - 4 + 6 0 From d02fd025e14940e60dc613d79795e07b34b77967 Mon Sep 17 00:00:00 2001 From: Glutanimate Date: Sat, 23 Feb 2019 09:06:46 +0100 Subject: [PATCH 2/5] Enable non-contiguous multi-selection in add-on list --- designer/addons.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/addons.ui b/designer/addons.ui index 0c620349c..8ac9b40c8 100644 --- a/designer/addons.ui +++ b/designer/addons.ui @@ -32,7 +32,7 @@ - QAbstractItemView::ContiguousSelection + QAbstractItemView::ExtendedSelection From 8725583c97ffcea0c4e1c958fe1d69f8f3fedf22 Mon Sep 17 00:00:00 2001 From: Glutanimate Date: Sat, 23 Feb 2019 09:12:55 +0100 Subject: [PATCH 3/5] Add tooltip feedback for restoring defaults Changes might not always be apparent, so a tooltip might help. --- aqt/addons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aqt/addons.py b/aqt/addons.py index 1de5ff064..c6ba47c47 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -648,6 +648,7 @@ class ConfigEditor(QDialog): def onRestoreDefaults(self): default_conf = self.mgr.addonConfigDefaults(self.addon) self.updateText(default_conf) + tooltip(_("Restored defaults"), parent=self) def setupFonts(self): font_mono = QFontDatabase.systemFont(QFontDatabase.FixedFont) From 15a83df12619478d21dee19c4a4edd3f579e134b Mon Sep 17 00:00:00 2001 From: Glutanimate Date: Sat, 23 Feb 2019 10:04:45 +0100 Subject: [PATCH 4/5] Colour disabled add-ons gray --- aqt/addons.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/aqt/addons.py b/aqt/addons.py index c6ba47c47..ea23e68e2 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -453,14 +453,22 @@ class AddonsDialog(QDialog): return QDialog.reject(self) def redrawAddons(self): - self.addons = [(self.annotatedName(d), d) for d in self.mgr.allAddons()] + addonList = self.form.addonList + mgr = self.mgr + + self.addons = [(self.annotatedName(d), d) for d in mgr.allAddons()] self.addons.sort() - self.form.addonList.clear() - self.form.addonList.addItems([r[0] for r in self.addons]) - if self.addons: - self.form.addonList.setCurrentRow(0) + + addonList.clear() + for name, dir in self.addons: + item = QListWidgetItem(name, addonList) + if not mgr.isEnabled(dir): + item.setForeground(Qt.gray) - self.form.addonList.repaint() + if self.addons: + addonList.setCurrentRow(0) + + addonList.repaint() def _onAddonItemSelected(self, row_int): try: @@ -470,9 +478,8 @@ class AddonsDialog(QDialog): self.form.viewPage.setEnabled(bool (re.match(r"^\d+$", addon))) def annotatedName(self, dir): - meta = self.mgr.addonMeta(dir) buf = self.mgr.addonName(dir) - if meta.get('disabled'): + if not self.mgr.isEnabled(dir): buf += _(" (disabled)") return buf From 195ca93cfe561964f8402b9ad22920bf0c289cac Mon Sep 17 00:00:00 2001 From: Glutanimate Date: Sat, 23 Feb 2019 10:10:05 +0100 Subject: [PATCH 5/5] Preserve selected add-ons --- aqt/addons.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aqt/addons.py b/aqt/addons.py index ea23e68e2..9410d689c 100644 --- a/aqt/addons.py +++ b/aqt/addons.py @@ -458,15 +458,15 @@ class AddonsDialog(QDialog): self.addons = [(self.annotatedName(d), d) for d in mgr.allAddons()] self.addons.sort() - + + selected = set(self.selectedAddons()) addonList.clear() for name, dir in self.addons: item = QListWidgetItem(name, addonList) if not mgr.isEnabled(dir): item.setForeground(Qt.gray) - - if self.addons: - addonList.setCurrentRow(0) + if dir in selected: + item.setSelected(True) addonList.repaint()