From 527a16f81852ed3ea6c2fb53e6a7f2cb7563f3d8 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Mon, 19 Jun 2023 17:11:08 +0200
Subject: [PATCH] Solver: Get process finished event.

---
 src/Solver/ASolver.py        | 5 +++++
 src/View/RunSolver/Window.py | 9 ++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index 78eb87d5..a01b783f 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -135,6 +135,7 @@ class AbstractSolver(object):
             exe, args,
         )
         self._process.readyRead.connect(self._data_ready)
+        self._process.finished.connect(self._finished)
 
         return True
 
@@ -149,6 +150,10 @@ class AbstractSolver(object):
         if self._output is not None:
             self._output.put(s)
 
+    def _finished(self, exit_code, exit_status):
+        if self._output is not None:
+            self._output.put(exit_code)
+
     def run(self, process, output_queue):
         self._process = process
         self._output = output_queue
diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py
index 42d7e464..fa98007c 100644
--- a/src/View/RunSolver/Window.py
+++ b/src/View/RunSolver/Window.py
@@ -111,13 +111,16 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
         self._alarm.timeout.connect(self.update)
 
     def _log(self, msg):
-        msg = msg.rsplit('\n')[0]
-        self.find(QTextEdit, "textEdit").append(msg)
+        if type(msg) == str:
+            msg = msg.rsplit('\n')[0]
+            self.find(QTextEdit, "textEdit").append(msg)
+        elif type(msg) == int:
+            self.find(QTextEdit, "textEdit")\
+                .append(f" *** Solver finished with code {msg}")
 
     def update(self):
         while self._output.qsize() != 0:
             s = self._output.get()
-            print(s)
             self._log(s)
 
     def start(self):
-- 
GitLab