Merge pull request #935 from abdnh/sidebar-nt

Add manage note types menu item to the sidebar
This commit is contained in:
Damien Elmes 2021-01-22 14:21:28 +10:00 committed by GitHub
commit 0c35d30979
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 2 deletions

View file

@ -1230,6 +1230,7 @@ QTableView {{ gridline-color: {grid} }}
":/icons/notetype.svg", ":/icons/notetype.svg",
self._note_filter(m.name), self._note_filter(m.name),
item_type=SidebarItemType.NOTETYPE, item_type=SidebarItemType.NOTETYPE,
id=m.id,
) )
root.addChild(item) root.addChild(item)

View file

@ -28,10 +28,17 @@ from aqt.utils import (
class Models(QDialog): 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 self.mw = mw
parent = parent or mw parent = parent or mw
self.fromMain = fromMain self.fromMain = fromMain
self.selected_notetype_id = selected_notetype_id
QDialog.__init__(self, parent, Qt.Window) QDialog.__init__(self, parent, Qt.Window)
self.col = mw.col.weakref() self.col = mw.col.weakref()
assert self.col assert self.col
@ -51,6 +58,15 @@ class Models(QDialog):
# Models # 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: def setupModels(self) -> None:
self.model = None self.model = None
f = self.form f = self.form
@ -80,9 +96,9 @@ class Models(QDialog):
def on_done(fut) -> None: def on_done(fut) -> None:
self.updateModelsList(fut.result()) self.updateModelsList(fut.result())
self.maybe_select_provided_notetype()
self.mw.taskman.with_progress(self.col.models.all_use_counts, on_done, self) self.mw.taskman.with_progress(self.col.models.all_use_counts, on_done, self)
f.modelsList.setCurrentRow(0)
maybeHideClose(box) maybeHideClose(box)
def onRename(self) -> None: def onRename(self) -> None:

View file

@ -9,6 +9,7 @@ from enum import Enum
import aqt import aqt
from anki.errors import DeckRenameError from anki.errors import DeckRenameError
from aqt.main import ResetReason from aqt.main import ResetReason
from aqt.models import Models
from aqt.qt import * from aqt.qt import *
from aqt.utils import TR, getOnlyText, showInfo, showWarning, tr 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_RENAME), self.rename_filter),
(tr(TR.ACTIONS_DELETE), self.remove_filter), (tr(TR.ACTIONS_DELETE), self.remove_filter),
), ),
SidebarItemType.NOTETYPE: ((tr(TR.ACTIONS_MANAGE), self.manage_notetype),),
} }
def onContextMenu(self, point: QPoint) -> None: def onContextMenu(self, point: QPoint) -> None:
@ -192,3 +194,8 @@ class NewSidebarTreeView(SidebarTreeViewBase):
def rename_filter(self, item: "aqt.browser.SidebarItem") -> None: def rename_filter(self, item: "aqt.browser.SidebarItem") -> None:
self.browser.renameFilter(item.name) 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
)