From 31aba9964142f1a34066a4fec31a386c3300bdbc Mon Sep 17 00:00:00 2001 From: Abdo Date: Fri, 22 Dec 2023 07:12:33 +0300 Subject: [PATCH] Offer to save changes when card layouts screen is closed (#2899) --- qt/aqt/clayout.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/qt/aqt/clayout.py b/qt/aqt/clayout.py index cae35408c..c823e3c36 100644 --- a/qt/aqt/clayout.py +++ b/qt/aqt/clayout.py @@ -26,6 +26,7 @@ from aqt.sound import av_player, play_clicked_audio from aqt.theme import theme_manager from aqt.utils import ( HelpPage, + ask_user_dialog, askUser, disable_help_button, downArrow, @@ -891,11 +892,30 @@ class CardLayout(QDialog): ).run_in_background() def reject(self) -> None: + def _reject() -> None: + self.cleanup() + QDialog.reject(self) + + def callback(choice: int) -> None: + if choice == 0: + self.accept() + elif choice == 1: + _reject() + if self.change_tracker.changed(): - if not askUser(tr.card_templates_discard_changes()): - return - self.cleanup() - return QDialog.reject(self) + ask_user_dialog( + text=tr.card_templates_discard_changes(), + callback=callback, + buttons=[ + QMessageBox.StandardButton.Save, + QMessageBox.StandardButton.Discard, + QMessageBox.StandardButton.Cancel, + ], + default_button=0, + parent=self, + ) + else: + _reject() def cleanup(self) -> None: self.cancelPreviewTimer()