diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index d18348dc5..d6acff4b6 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1230,6 +1230,7 @@ QTableView {{ gridline-color: {grid} }} ":/icons/notetype.svg", self._note_filter(m.name), item_type=SidebarItemType.NOTETYPE, + id=m.id, ) root.addChild(item) diff --git a/qt/aqt/models.py b/qt/aqt/models.py index 572ec2e42..f4f49d8c0 100644 --- a/qt/aqt/models.py +++ b/qt/aqt/models.py @@ -28,10 +28,17 @@ from aqt.utils import ( class Models(QDialog): - def __init__(self, mw: AnkiQt, parent=None, fromMain=False): + def __init__( + self, + mw: AnkiQt, + parent=None, + fromMain=False, + selected_notetype_id: Optional[int] = None, + ): self.mw = mw parent = parent or mw self.fromMain = fromMain + self.selected_notetype_id = selected_notetype_id QDialog.__init__(self, parent, Qt.Window) self.col = mw.col.weakref() assert self.col @@ -51,6 +58,15 @@ class Models(QDialog): # Models ########################################################################## + def maybe_select_provided_notetype(self): + if not self.selected_notetype_id: + self.form.modelsList.setCurrentRow(0) + return + for i, m in enumerate(self.models): + if m.id == self.selected_notetype_id: + self.form.modelsList.setCurrentRow(i) + break + def setupModels(self) -> None: self.model = None f = self.form @@ -80,9 +96,9 @@ class Models(QDialog): def on_done(fut) -> None: self.updateModelsList(fut.result()) + self.maybe_select_provided_notetype() self.mw.taskman.with_progress(self.col.models.all_use_counts, on_done, self) - f.modelsList.setCurrentRow(0) maybeHideClose(box) def onRename(self) -> None: diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index 79c4baac2..e3658ecd7 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -9,6 +9,7 @@ from enum import Enum import aqt from anki.errors import DeckRenameError from aqt.main import ResetReason +from aqt.models import Models from aqt.qt import * from aqt.utils import TR, getOnlyText, showInfo, showWarning, tr @@ -84,6 +85,7 @@ class NewSidebarTreeView(SidebarTreeViewBase): (tr(TR.ACTIONS_RENAME), self.rename_filter), (tr(TR.ACTIONS_DELETE), self.remove_filter), ), + SidebarItemType.NOTETYPE: ((tr(TR.ACTIONS_MANAGE), self.manage_notetype),), } def onContextMenu(self, point: QPoint) -> None: @@ -192,3 +194,8 @@ class NewSidebarTreeView(SidebarTreeViewBase): def rename_filter(self, item: "aqt.browser.SidebarItem") -> None: self.browser.renameFilter(item.name) + + def manage_notetype(self, item: "aqt.browser.SidebarItem") -> None: + Models( + self.mw, parent=self.browser, fromMain=True, selected_notetype_id=item.id + )