mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
Remove editor.note refs and fix some lint errors
This commit is contained in:
parent
dabd0def55
commit
c4a9ba254e
5 changed files with 17 additions and 97 deletions
|
@ -11,26 +11,21 @@ from anki._legacy import deprecated
|
|||
from anki.collection import OpChanges, SearchNode
|
||||
from anki.decks import DeckId
|
||||
from anki.models import NotetypeId
|
||||
from anki.notes import Note, NoteFieldsCheckResult, NoteId
|
||||
from anki.notes import Note, NoteId
|
||||
from anki.utils import html_to_text_line, is_mac
|
||||
from aqt import AnkiQt, gui_hooks
|
||||
from aqt.deckchooser import DeckChooser
|
||||
from aqt.notetypechooser import NotetypeChooser
|
||||
from aqt.operations.note import add_note
|
||||
from aqt.qt import *
|
||||
from aqt.sound import av_player
|
||||
from aqt.utils import (
|
||||
HelpPage,
|
||||
add_close_shortcut,
|
||||
ask_user_dialog,
|
||||
askUser,
|
||||
downArrow,
|
||||
openHelp,
|
||||
restoreGeom,
|
||||
saveGeom,
|
||||
shortcut,
|
||||
showWarning,
|
||||
tooltip,
|
||||
tr,
|
||||
)
|
||||
|
||||
|
@ -228,59 +223,6 @@ class AddCards(QMainWindow):
|
|||
def add_current_note(self) -> None:
|
||||
self.editor.web.eval(f"addCurrentNote({self.deck_chooser.selected_deck_id})")
|
||||
|
||||
def _add_current_note(self) -> None:
|
||||
note = self.editor.note
|
||||
|
||||
if not self._note_can_be_added(note):
|
||||
return
|
||||
|
||||
target_deck_id = self.deck_chooser.selected_deck_id
|
||||
|
||||
def on_success(changes: OpChanges) -> None:
|
||||
# only used for detecting changed sticky fields on close
|
||||
self._last_added_note = note
|
||||
|
||||
self.addHistory(note)
|
||||
|
||||
tooltip(tr.adding_added(), period=500)
|
||||
av_player.stop_and_clear_queue()
|
||||
self._load_new_note(sticky_fields_from=note)
|
||||
gui_hooks.add_cards_did_add_note(note)
|
||||
|
||||
add_note(parent=self, note=note, target_deck_id=target_deck_id).success(
|
||||
on_success
|
||||
).run_in_background()
|
||||
|
||||
def _note_can_be_added(self, note: Note) -> bool:
|
||||
result = note.fields_check()
|
||||
# no problem, duplicate, and confirmed cloze cases
|
||||
problem = None
|
||||
if result == NoteFieldsCheckResult.EMPTY:
|
||||
if self.editor.current_notetype_is_image_occlusion():
|
||||
problem = tr.notetypes_no_occlusion_created2()
|
||||
else:
|
||||
problem = tr.adding_the_first_field_is_empty()
|
||||
elif result == NoteFieldsCheckResult.MISSING_CLOZE:
|
||||
if not askUser(tr.adding_you_have_a_cloze_deletion_note()):
|
||||
return False
|
||||
elif result == NoteFieldsCheckResult.NOTETYPE_NOT_CLOZE:
|
||||
problem = tr.adding_cloze_outside_cloze_notetype()
|
||||
elif result == NoteFieldsCheckResult.FIELD_NOT_CLOZE:
|
||||
problem = tr.adding_cloze_outside_cloze_field()
|
||||
|
||||
# filter problem through add-ons
|
||||
problem = gui_hooks.add_cards_will_add_note(problem, note)
|
||||
if problem is not None:
|
||||
showWarning(problem, help=HelpPage.ADDING_CARD_AND_NOTE)
|
||||
return False
|
||||
|
||||
optional_problems: list[str] = []
|
||||
gui_hooks.add_cards_might_add_note(optional_problems, note)
|
||||
if not all(askUser(op) for op in optional_problems):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def keyPressEvent(self, evt: QKeyEvent) -> None:
|
||||
if evt.key() == Qt.Key.Key_Escape:
|
||||
self.close()
|
||||
|
@ -340,10 +282,6 @@ class AddCards(QMainWindow):
|
|||
print("deckChooser is deprecated; use deck_chooser instead")
|
||||
return self.deck_chooser
|
||||
|
||||
addCards = add_current_note
|
||||
_addCards = _add_current_note
|
||||
onModelChange = on_notetype_change
|
||||
|
||||
@deprecated(info="obsolete")
|
||||
def addNote(self, note: Note) -> None:
|
||||
pass
|
||||
|
|
|
@ -20,7 +20,6 @@ from anki.cards import Card, CardId
|
|||
from anki.collection import Collection, Config, OpChanges, SearchNode
|
||||
from anki.consts import *
|
||||
from anki.decks import DeckId
|
||||
from anki.errors import NotFoundError
|
||||
from anki.lang import without_unicode_isolation
|
||||
from anki.models import NotetypeId
|
||||
from anki.notes import NoteId
|
||||
|
@ -190,15 +189,7 @@ class Browser(QMainWindow):
|
|||
# fixme: this will leave the splitter shown, but with no current
|
||||
# note being edited
|
||||
assert self.editor is not None
|
||||
|
||||
note = self.editor.note
|
||||
if note:
|
||||
try:
|
||||
note.load()
|
||||
except NotFoundError:
|
||||
self.editor.set_note(None)
|
||||
return
|
||||
self.editor.set_note(note)
|
||||
self.editor.reload_note()
|
||||
|
||||
if changes.browser_table and changes.card:
|
||||
self.card = self.table.get_single_selected_card()
|
||||
|
@ -839,7 +830,7 @@ class Browser(QMainWindow):
|
|||
|
||||
if self._previewer:
|
||||
self._previewer.close()
|
||||
elif self.editor.note:
|
||||
else:
|
||||
self._previewer = PreviewDialog(self, self.mw, self._on_preview_closed)
|
||||
self._previewer.open()
|
||||
self.toggle_preview_button_state(True)
|
||||
|
@ -1261,7 +1252,7 @@ class Browser(QMainWindow):
|
|||
def cb():
|
||||
assert self.editor is not None and self.editor.web is not None
|
||||
self.editor.web.setFocus()
|
||||
self.editor.loadNote(focusTo=0)
|
||||
self.editor.reload_note()
|
||||
|
||||
assert self.editor is not None
|
||||
self.editor.call_after_note_saved(cb)
|
||||
|
|
|
@ -6,7 +6,6 @@ from collections.abc import Callable
|
|||
|
||||
import aqt.editor
|
||||
from anki.collection import OpChanges
|
||||
from anki.errors import NotFoundError
|
||||
from aqt import gui_hooks
|
||||
from aqt.qt import *
|
||||
from aqt.utils import add_close_shortcut, restoreGeom, saveGeom, tr
|
||||
|
@ -47,18 +46,7 @@ class EditCurrent(QMainWindow):
|
|||
self, changes: OpChanges, handler: object | None
|
||||
) -> None:
|
||||
if changes.note_text and handler is not self.editor:
|
||||
# reload note
|
||||
note = self.editor.note
|
||||
try:
|
||||
assert note is not None
|
||||
note.load()
|
||||
except NotFoundError:
|
||||
# note's been deleted
|
||||
self.cleanup()
|
||||
self.close()
|
||||
return
|
||||
|
||||
self.editor.set_note(note)
|
||||
self.editor.reload_note()
|
||||
|
||||
def cleanup(self) -> None:
|
||||
gui_hooks.operation_did_execute.remove(self.on_operation_did_execute)
|
||||
|
|
|
@ -17,11 +17,10 @@ from typing import Any
|
|||
from anki._legacy import deprecated
|
||||
from anki.cards import Card
|
||||
from anki.hooks import runFilter
|
||||
from anki.models import NotetypeDict, NotetypeId, StockNotetype
|
||||
from anki.models import NotetypeId
|
||||
from anki.notes import Note, NoteId
|
||||
from anki.utils import is_win
|
||||
from aqt import AnkiQt, gui_hooks
|
||||
from aqt.operations.notetype import update_notetype_legacy
|
||||
from aqt.qt import *
|
||||
from aqt.sound import av_player
|
||||
from aqt.utils import shortcut, showWarning
|
||||
|
@ -119,7 +118,6 @@ class Editor:
|
|||
self.mw = mw
|
||||
self.widget = widget
|
||||
self.parentWindow = parentWindow
|
||||
self.mid: NotetypeId | None = None
|
||||
# legacy argument provided?
|
||||
if addMode is not None:
|
||||
editor_mode = EditorMode.ADD_CARDS if addMode else EditorMode.EDIT_CURRENT
|
||||
|
@ -341,9 +339,9 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
|||
from aqt.fields import FieldDialog
|
||||
|
||||
def on_note_info(note_info: NoteInfo) -> None:
|
||||
FieldDialog(
|
||||
self.mw, self.mw.col.models.get(note_info.mid), parent=self.parentWindow
|
||||
)
|
||||
note_type = self.mw.col.models.get(note_info.mid)
|
||||
assert note_type is not None
|
||||
FieldDialog(self.mw, note_type, parent=self.parentWindow)
|
||||
|
||||
self.get_note_info(on_note_info)
|
||||
|
||||
|
@ -456,9 +454,6 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
|||
elif hide:
|
||||
self.widget.hide()
|
||||
|
||||
def loadNoteKeepingFocus(self) -> None:
|
||||
self.loadNote(self.currentField)
|
||||
|
||||
@on_editor_ready
|
||||
def load_note(self, mid: int, focus_to: int | None = None) -> None:
|
||||
|
||||
|
@ -479,6 +474,9 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
|
|||
f'require("anki/ui").loaded.then(() => {{ {js} }})', oncallback
|
||||
)
|
||||
|
||||
def reload_note(self) -> None:
|
||||
self.web.eval("reloadNote();")
|
||||
|
||||
def call_after_note_saved(
|
||||
self, callback: Callable, keepFocus: bool = False
|
||||
) -> None:
|
||||
|
|
|
@ -844,6 +844,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
return note!.id;
|
||||
}
|
||||
|
||||
async function reloadNote() {
|
||||
await loadNote(note!.id, notetypeMeta.id, 0, null);
|
||||
}
|
||||
|
||||
$: signalEditorState($editorState);
|
||||
|
||||
$: $editorState = getEditorState(
|
||||
|
@ -871,6 +875,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||
|
||||
Object.assign(globalThis, {
|
||||
loadNote,
|
||||
reloadNote,
|
||||
saveSession,
|
||||
setFields,
|
||||
setCollapsed,
|
||||
|
|
Loading…
Reference in a new issue