From 97a3b2f23ff24107fc64d28c7af4c0b7dff1721b Mon Sep 17 00:00:00 2001 From: Artem30801 Date: Sun, 26 Jan 2020 20:20:28 +0300 Subject: [PATCH] Confirmation for exit while usaved file opened --- Server/config_editor_models.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Server/config_editor_models.py b/Server/config_editor_models.py index a835d86..2ac0e0c 100644 --- a/Server/config_editor_models.py +++ b/Server/config_editor_models.py @@ -731,6 +731,7 @@ class ConfigDialog(QtWidgets.QDialog): super(ConfigDialog, self).__init__(parent) self.ui = config_editor.Ui_config_dialog() self.model = ConfigModel(widget=self) + self.unsaved = False self.setupUi() self.copter_editor_signal.connect(self._call_copter_dialog) @@ -744,6 +745,8 @@ class ConfigDialog(QtWidgets.QDialog): self.ui.config_view.resizeColumnToContents(0) self.ui.config_view.resizeColumnToContents(1) + self.model.dataChanged.connect(self.unsaved_call) # connect after setup + def setupUi(self): self.ui.setupUi(self) @@ -758,6 +761,26 @@ class ConfigDialog(QtWidgets.QDialog): # self.ui.delete_button.pressed.connect(self.remove_selected) + def unsaved_call(self): + name = self.windowTitle()+'*' + self.setWindowTitle(name) + self.unsaved = True + self.model.dataChanged.disconnect(self.unsaved_call) + + def closeEvent(self, event): + if not self.unsaved or self.result(): + event.accept() + return + + reply = QMessageBox.question(self, "Confirm exit", "There are unsaved changes in config file. " + "Are you sure you want to exit?", + QMessageBox.No | QMessageBox.Yes, QMessageBox.No) + + if reply != QMessageBox.Yes: + event.ignore() + else: + event.accept() + def edit_caution(self): reply = QMessageBox().warning(self, "Editing caution", "Are you sure you want to edit section/option name? "