From 99fe5e8f740aa5e5828447531b0a8b563a1bc5b8 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 16 Jan 2024 14:05:29 +0100
Subject: [PATCH] Results: Fix results reading before solver running... (again)

---
 src/View/MainWindow.py       | 30 +++++++++++++++++++++++++++++-
 src/View/RunSolver/Window.py |  5 +++--
 2 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index e48b4803..b07c2c1d 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -138,6 +138,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         self.setup_connection()
         self.default_style()
         self.setup_debug_mode(init=True)
+        self.setup_results()
 
         self.trans = QTranslator(self)
         # self.ui.retranslateUi()
@@ -360,6 +361,16 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         for action in model_action:
             self.enable_actions(action, not no_model)
 
+    def setup_results(self):
+        self._last_solver = None
+        self._last_results = None
+
+        for solver in self.conf.solvers:
+            if solver.name == self.conf.last_solver_name:
+                self._last_solver = solver
+                self.enable_actions("action_menu_results_last", True)
+                return
+
     def set_results(self, solver, results):
         self._last_solver = solver
         self._last_results = results
@@ -821,6 +832,12 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         if results is None:
             results = self._last_results
 
+            if self._last_results is None:
+                results = solver.results(
+                    self._study,
+                    self._solver_workdir(solver)
+                )
+
         # No results available
         if results is None:
             return
@@ -845,8 +862,19 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         )
         res.show()
 
+    def _solver_workdir(self, solver):
+        workdir = os.path.join(
+            os.path.dirname(self._study.filename),
+            "_PAMHYR_",
+            self._study.name.replace(" ", "_"),
+            solver.name.replace(" ", "_"),
+        )
+
+        return workdir
+
+
     def open_last_results(self):
-        if self._last_solver is None or self._last_results is None:
+        if self._last_solver is None:
             return
 
         self.open_solver_results(self._last_solver, self._last_results)
diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py
index b950b929..d8cf9b87 100644
--- a/src/View/RunSolver/Window.py
+++ b/src/View/RunSolver/Window.py
@@ -264,7 +264,7 @@ class SolverLogWindow(PamhyrWindow):
                 self.find(QAction, "action_log_file").setEnabled(True)
 
             self._update_logs_all()
-            self._update_get_results()
+            # self._update_get_results()
 
         self._update_logs_all()
 
@@ -348,7 +348,8 @@ class SolverLogWindow(PamhyrWindow):
     def results(self):
         if self._results is None:
             self._results = self._solver.results(
-                self._study, self._workdir, qlog=self._output)
+                self._study, self._workdir, qlog=self._output
+            )
 
         self._parent.set_results(self._solver, self._results)
         self._parent.open_solver_results(self._solver, self._results)
-- 
GitLab