notetype rename+options undo

This commit is contained in:
Damien Elmes 2021-04-30 16:09:44 +10:00
parent 394fe86f8f
commit b9417fc583

View file

@ -3,7 +3,7 @@
from concurrent.futures import Future from concurrent.futures import Future
from operator import itemgetter from operator import itemgetter
from typing import List, Optional, Sequence from typing import Any, List, Optional, Sequence
import aqt.clayout import aqt.clayout
from anki import Collection, stdmodels from anki import Collection, stdmodels
@ -11,7 +11,11 @@ from anki.lang import without_unicode_isolation
from anki.models import NotetypeDict, NotetypeId, NotetypeNameIdUseCount from anki.models import NotetypeDict, NotetypeId, NotetypeNameIdUseCount
from anki.notes import Note from anki.notes import Note
from aqt import AnkiQt, gui_hooks from aqt import AnkiQt, gui_hooks
from aqt.operations.notetype import add_notetype_legacy, remove_notetype from aqt.operations.notetype import (
add_notetype_legacy,
remove_notetype,
update_notetype_legacy,
)
from aqt.qt import * from aqt.qt import *
from aqt.schema_change_tracker import ChangeTracker from aqt.schema_change_tracker import ChangeTracker
from aqt.utils import ( from aqt.utils import (
@ -102,7 +106,7 @@ class Models(QDialog):
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)
maybeHideClose(box) maybeHideClose(box)
def refresh_list(self) -> None: def refresh_list(self, *ignored_args: Any) -> None:
self.mw.query_op( self.mw.query_op(
self.col.models.all_use_counts, self.col.models.all_use_counts,
success=self.updateModelsList, success=self.updateModelsList,
@ -110,21 +114,13 @@ class Models(QDialog):
def onRename(self) -> None: def onRename(self) -> None:
nt = self.current_notetype() nt = self.current_notetype()
txt = getText(tr.actions_new_name(), default=nt["name"]) text, ok = getText(tr.actions_new_name(), default=nt["name"])
name = txt[0].replace('"', "") if ok and text.strip():
if txt[1] and name: nt["name"] = text
nt["name"] = name
self.saveAndRefresh(nt)
def saveAndRefresh(self, nt: NotetypeDict) -> None: update_notetype_legacy(parent=self, notetype=nt).success(
def save() -> Sequence[NotetypeNameIdUseCount]: self.refresh_list
self.mm.save(nt) ).run_in_background()
return self.col.models.all_use_counts()
def on_done(fut: Future) -> None:
self.updateModelsList(fut.result())
self.mw.taskman.with_progress(save, on_done, self)
def updateModelsList(self, notetypes: Sequence[NotetypeNameIdUseCount]) -> None: def updateModelsList(self, notetypes: Sequence[NotetypeNameIdUseCount]) -> None:
row = self.form.modelsList.currentRow() row = self.form.modelsList.currentRow()
@ -157,7 +153,7 @@ class Models(QDialog):
m["name"] = text m["name"] = text
add_notetype_legacy(parent=self, notetype=m).success( add_notetype_legacy(parent=self, notetype=m).success(
lambda _: self.refresh_list() self.refresh_list
).run_in_background() ).run_in_background()
def onDelete(self) -> None: def onDelete(self) -> None:
@ -201,7 +197,9 @@ class Models(QDialog):
nt["latexsvg"] = frm.latexsvg.isChecked() nt["latexsvg"] = frm.latexsvg.isChecked()
nt["latexPre"] = str(frm.latexHeader.toPlainText()) nt["latexPre"] = str(frm.latexHeader.toPlainText())
nt["latexPost"] = str(frm.latexFooter.toPlainText()) nt["latexPost"] = str(frm.latexFooter.toPlainText())
self.saveAndRefresh(nt) update_notetype_legacy(parent=self, notetype=nt).success(
self.refresh_list
).run_in_background()
def _tmpNote(self) -> Note: def _tmpNote(self) -> Note:
nt = self.current_notetype() nt = self.current_notetype()