mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 08:46:37 -04:00
Add a basic fieldsAreBlank()
This commit is contained in:
parent
a32ef31382
commit
1f002134fe
4 changed files with 51 additions and 12 deletions
|
@ -38,6 +38,7 @@ service FrontendService {
|
||||||
rpc OpenMedia(generic.String) returns (generic.Empty);
|
rpc OpenMedia(generic.String) returns (generic.Empty);
|
||||||
rpc ShowInMediaFolder(generic.String) returns (generic.Empty);
|
rpc ShowInMediaFolder(generic.String) returns (generic.Empty);
|
||||||
rpc RecordAudio(generic.Empty) returns (generic.String);
|
rpc RecordAudio(generic.Empty) returns (generic.String);
|
||||||
|
rpc CloseAddCards(generic.Bool) returns (generic.Empty);
|
||||||
|
|
||||||
// Profile config
|
// Profile config
|
||||||
rpc GetProfileConfigJson(generic.String) returns (generic.Json);
|
rpc GetProfileConfigJson(generic.String) returns (generic.Json);
|
||||||
|
|
|
@ -34,6 +34,7 @@ class AddCards(QMainWindow):
|
||||||
def __init__(self, mw: AnkiQt) -> None:
|
def __init__(self, mw: AnkiQt) -> None:
|
||||||
super().__init__(None, Qt.WindowType.Window)
|
super().__init__(None, Qt.WindowType.Window)
|
||||||
self._close_event_has_cleaned_up = False
|
self._close_event_has_cleaned_up = False
|
||||||
|
self._close_callback: Callable[[], None] | None = None
|
||||||
self.mw = mw
|
self.mw = mw
|
||||||
self.col = mw.col
|
self.col = mw.col
|
||||||
form = aqt.forms.addcards.Ui_Dialog()
|
form = aqt.forms.addcards.Ui_Dialog()
|
||||||
|
@ -249,11 +250,18 @@ class AddCards(QMainWindow):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def ifCanClose(self, onOk: Callable) -> None:
|
def ifCanClose(self, onOk: Callable) -> None:
|
||||||
|
self._close_callback = onOk
|
||||||
|
self.editor.web.eval("closeAddCards()")
|
||||||
|
|
||||||
|
def _close_if_user_wants_to_discard_changes(self, is_empty: bool) -> None:
|
||||||
|
if is_empty:
|
||||||
|
self._close_callback()
|
||||||
|
return
|
||||||
|
|
||||||
def callback(choice: int) -> None:
|
def callback(choice: int) -> None:
|
||||||
if choice == 0:
|
if choice == 0:
|
||||||
onOk()
|
self._close_callback()
|
||||||
|
|
||||||
def afterSave() -> None:
|
|
||||||
ask_user_dialog(
|
ask_user_dialog(
|
||||||
tr.adding_discard_current_input(),
|
tr.adding_discard_current_input(),
|
||||||
callback=callback,
|
callback=callback,
|
||||||
|
@ -263,8 +271,6 @@ class AddCards(QMainWindow):
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.editor.call_after_note_saved(afterSave)
|
|
||||||
|
|
||||||
def closeWithCallback(self, cb: Callable[[], None]) -> None:
|
def closeWithCallback(self, cb: Callable[[], None]) -> None:
|
||||||
def doClose() -> None:
|
def doClose() -> None:
|
||||||
self._close()
|
self._close()
|
||||||
|
|
|
@ -791,6 +791,21 @@ def write_clipboard() -> bytes:
|
||||||
return b""
|
return b""
|
||||||
|
|
||||||
|
|
||||||
|
def close_add_cards() -> bytes:
|
||||||
|
req = generic_pb2.Bool()
|
||||||
|
req.ParseFromString(request.data)
|
||||||
|
|
||||||
|
def handle_on_main() -> None:
|
||||||
|
from aqt.addcards import AddCards
|
||||||
|
|
||||||
|
window = aqt.mw.app.activeWindow()
|
||||||
|
if isinstance(window, AddCards):
|
||||||
|
window._close_if_user_wants_to_discard_changes(req.val)
|
||||||
|
|
||||||
|
aqt.mw.taskman.run_on_main(lambda: QTimer.singleShot(0, handle_on_main))
|
||||||
|
return b""
|
||||||
|
|
||||||
|
|
||||||
post_handler_list = [
|
post_handler_list = [
|
||||||
congrats_info,
|
congrats_info,
|
||||||
get_deck_configs_for_update,
|
get_deck_configs_for_update,
|
||||||
|
@ -820,6 +835,7 @@ post_handler_list = [
|
||||||
record_audio,
|
record_audio,
|
||||||
read_clipboard,
|
read_clipboard,
|
||||||
write_clipboard,
|
write_clipboard,
|
||||||
|
close_add_cards,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,20 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
saveFieldNow();
|
saveFieldNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO this needs to accept a previousNote arg
|
||||||
|
async function fieldsAreBlank(): Promise<boolean> {
|
||||||
|
const result = await noteFieldsCheck(note!);
|
||||||
|
if (result.state === NoteFieldsCheckResponse_State.EMPTY) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function closeAddCards() {
|
||||||
|
saveNow();
|
||||||
|
await closeAddCardsBackend({ val: await fieldsAreBlank() });
|
||||||
|
}
|
||||||
|
|
||||||
export function saveOnPageHide() {
|
export function saveOnPageHide() {
|
||||||
if (document.visibilityState === "hidden") {
|
if (document.visibilityState === "hidden") {
|
||||||
// will fire on session close and minimize
|
// will fire on session close and minimize
|
||||||
|
@ -559,6 +573,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
addNote,
|
addNote,
|
||||||
addMediaFromPath,
|
addMediaFromPath,
|
||||||
updateNotetype,
|
updateNotetype,
|
||||||
|
closeAddCards as closeAddCardsBackend,
|
||||||
} from "@generated/backend";
|
} from "@generated/backend";
|
||||||
import { wrapInternal } from "@tslib/wrap";
|
import { wrapInternal } from "@tslib/wrap";
|
||||||
import { getProfileConfig, getMeta, setMeta, getColConfig } from "@tslib/profile";
|
import { getProfileConfig, getMeta, setMeta, getColConfig } from "@tslib/profile";
|
||||||
|
@ -925,6 +940,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
setBackgrounds,
|
setBackgrounds,
|
||||||
setClozeHint,
|
setClozeHint,
|
||||||
saveNow,
|
saveNow,
|
||||||
|
closeAddCards,
|
||||||
focusIfField,
|
focusIfField,
|
||||||
setNotetypeMeta,
|
setNotetypeMeta,
|
||||||
wrap,
|
wrap,
|
||||||
|
|
Loading…
Reference in a new issue