From f7e563e71a25ef145bc37520a4cf421c001457a4 Mon Sep 17 00:00:00 2001 From: Theophile Terraz Date: Fri, 28 Nov 2025 16:08:54 +0100 Subject: [PATCH] prevent scenario window to open if study is not saved --- src/Model/Scenario.py | 2 +- src/View/MainWindow.py | 25 +++++++++++++++++++++++++ src/View/Translate.py | 10 ++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Model/Scenario.py b/src/Model/Scenario.py index b66faa64..9139cb25 100644 --- a/src/Model/Scenario.py +++ b/src/Model/Scenario.py @@ -31,7 +31,7 @@ class Scenario(SQLSubModel): id: int = -1, name: str = "", description: str = "", - x: int = 0.0, y: int = 0.0, + x: int = 1000.0, y: int = 1000.0, revision: int = 0, parent=None): super(Scenario, self).__init__() diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index d5ae0353..de432913 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -1206,6 +1206,31 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): Returns: Nothing """ + if self._study is None: + return + if self._study.filename is None or self._study.filename == "": + self.message_box( + window_title=self._trad["Warning"], + text=self._trad["mb_unsaved_study_title"], + informative_text=self._trad["mb_unsaved_studyh_msg"] + ) + + options = QFileDialog.Options() + options |= QFileDialog.DontUseNativeDialog + + file_name, _ = QFileDialog.getSaveFileName( + self, "Save File", + "", "Pamhyr(*.pamhyr)", + options=options, + ) + if file_name is None or file_name == "": + return + + if file_name.rsplit(".", 1)[-1] == "pamhyr": + self._study.filename = file_name + else: + self._study.filename = file_name + ".pamhyr" + if self._study is not None: if self.sub_window_exists( ScenariosWindow, diff --git a/src/View/Translate.py b/src/View/Translate.py index e288e196..6fc20c46 100644 --- a/src/View/Translate.py +++ b/src/View/Translate.py @@ -266,6 +266,16 @@ class MainTranslate(UnitTranslate): "incompatible study version" ) + + self._dict["mb_unsaved_study_title"] = _translate( + "MainWindow", "Open scenarios window" + ) + self._dict["mb_unsaved_studyh_msg"] = _translate( + "MainWindow", + "You must save your study to open " + "the scenario windows" + ) + self._dict["x"] = _translate("MainWindow", "X (m)") self._dict["y"] = _translate("MainWindow", "Y (m)") self._dict["Yes"] = _translate("MainWindow", "Yes")