From d27e2705c5011d8a0c7d3354e5414e8c5cdec8c8 Mon Sep 17 00:00:00 2001 From: Mohammad Date: Mon, 16 Jun 2025 16:25:59 +0200 Subject: [PATCH] Add flip button to editor to swap Front/Back fields (closes #3911) --- .gitignore | 1 + qt/aqt/editor.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/.gitignore b/.gitignore index 91a949329..c17176329 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ node_modules yarn-error.log ts/.svelte-kit .yarn +venv/ diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index c1eb14b18..cf3a17648 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -1790,3 +1790,31 @@ def set_image_occlusion_button(editor: Editor) -> None: gui_hooks.editor_did_load_note.append(set_cloze_button) gui_hooks.editor_did_load_note.append(set_image_occlusion_button) + +def add_flip_button(buttons, editor: Editor): + # Callback-Funktion beim Klick: zuerst Änderungen speichern, dann Flip ausführen + def on_flip(editor: Editor): + editor.saveNow(lambda: flip_fields(editor)) + # Felder tauschen und Editor aktualisieren + def flip_fields(editor: Editor): + front_text = editor.note["Front"] # aktuellen Front-Text auslesen + back_text = editor.note["Back"] # aktuellen Back-Text auslesen + editor.note["Front"] = back_text # Front-Feld setzen + editor.note["Back"] = front_text # Back-Feld setzen + editor.loadNote() # Editor-Ansicht mit neuen Werten aktualisieren + if not editor.addMode: # Änderungen in DB schreiben (falls bestehende Notiz) + editor.note.flush() + tooltip("Fields flipped successfully.") # Erfolgsmeldung anzeigen + # Neuen Button dem Editor hinzufügen (↔ Symbol, Tooltip-Text) + btn = editor.addButton( + icon=None, + cmd="flipFields", + func=on_flip, + tip="Front/Back Felder vertauschen", + label="↔", + id="flip_fields_button" + ) + buttons.append(btn) + return buttons + +gui_hooks.editor_did_init_buttons.append(add_flip_button)