From 2ad74b9d9798a05346ad0a0afd637ca1f26f914c Mon Sep 17 00:00:00 2001 From: nirvn Date: Sun, 20 May 2018 12:57:08 +0700 Subject: [PATCH] [processing] better unsaved change dialog upon closing script editor --- .../processing/script/ScriptEditorDialog.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/python/plugins/processing/script/ScriptEditorDialog.py b/python/plugins/processing/script/ScriptEditorDialog.py index 216758bb6a2..5a0c9ff4191 100644 --- a/python/plugins/processing/script/ScriptEditorDialog.py +++ b/python/plugins/processing/script/ScriptEditorDialog.py @@ -119,20 +119,26 @@ class ScriptEditorDialog(BASE, WIDGET): self.setHasChanged(False) def closeEvent(self, event): + settings = QgsSettings() + settings.setValue("/Processing/stateScriptEditor", self.saveState()) + settings.setValue("/Processing/geometryScriptEditor", self.saveGeometry()) + if self.hasChanged: - ret = QMessageBox.question(self, - self.tr("Unsaved changes"), - self.tr("There are unsaved changes in the script. Continue?"), - QMessageBox.Yes | QMessageBox.No, - QMessageBox.No - ) - if ret == QMessageBox.Yes: + ret = QMessageBox.question( + self, self.tr('Save Script?'), + self.tr('There are unsaved changes in this script. Do you want to keep those?'), + QMessageBox.Save | QMessageBox.Cancel | QMessageBox.Discard, QMessageBox.Cancel) + + if ret == QMessageBox.Save: + self.updateProvider() + self.saveScript(False) + event.accept() + elif ret == QMessageBox.Discard: self.updateProvider() event.accept() else: event.ignore() else: - self.updateProvider() event.accept() def updateProvider(self):