diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index a01b783fe154d7da43d812173c938501fdd20533..fa26c5de4058c52299976c192e42ba32a7c858ed 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -3,7 +3,6 @@
 import os
 
 from signal import SIGTERM, SIGSTOP, SIGCONT
-from subprocess import Popen, PIPE, STDOUT, TimeoutExpired
 from enum import Enum
 
 from Model.Except import NotImplementedMethodeError
@@ -12,9 +11,6 @@ class STATUS(Enum):
     NOT_LAUNCHED = -1
     STOPED = 0
     RUNNING = 1
-    FAILED = 2
-    CONF_ERROR = 3
-    KILLED = 4
     PAUSED = 5
 
 class AbstractSolver(object):
@@ -90,6 +86,15 @@ class AbstractSolver(object):
     def status(self, status):
         self._status = status
 
+    def is_running(self):
+        return self._status == STATUS.RUNNING
+
+    def is_paused(self):
+        return self._status == STATUS.PAUSED
+
+    def is_stoped(self):
+        return self._status == STATUS.STOPED
+
     @name.setter
     def name(self, name):
         self._name = name
@@ -137,6 +142,7 @@ class AbstractSolver(object):
         self._process.readyRead.connect(self._data_ready)
         self._process.finished.connect(self._finished)
 
+        self._status = STATUS.RUNNING
         return True
 
     def run_output_data_fomater(self):
@@ -153,6 +159,7 @@ class AbstractSolver(object):
     def _finished(self, exit_code, exit_status):
         if self._output is not None:
             self._output.put(exit_code)
+        self._status = STATUS.STOPED
 
     def run(self, process, output_queue):
         self._process = process
@@ -167,12 +174,12 @@ class AbstractSolver(object):
             return True
 
         self._process.kill()
-        self._status = STATUS.KILLED
+        self._status = STATUS.STOPED
         return True
 
-    def start(self):
-        if self._process is None:
-            return False
+    def start(self, process = None):
+        if process is not None:
+            self._process = process
 
         if self._status == STATUS.PAUSED:
             os.kill(self._process.pid(), SIGCONT)
diff --git a/src/View/RunSolver/Window.py b/src/View/RunSolver/Window.py
index 7fe2c3a3aa85f6e95de4e0fab53480a7c9477681..9bde1e3d9742d16f444f52bcc251b042e24abde0 100644
--- a/src/View/RunSolver/Window.py
+++ b/src/View/RunSolver/Window.py
@@ -74,6 +74,7 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
                  study=None, config=None,
                  solver=None, parent=None):
         self._title = title
+        self._parent = parent
 
         self._study = study
         self._config = config
@@ -123,18 +124,25 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
             color = "blue" if msg == 0 else "red"
             self.find(QTextEdit, "textEdit")\
                 .append(f"<font color=\"{color}\">" +
-                        f"*** Solver finished with code {msg}" +
+                        f" *** Finished with code {msg}" +
                         "</font>")
 
     def update(self):
+        if self._solver.is_stoped():
+            self.find(QAction, "action_start").setEnabled(True)
+            self.find(QAction, "action_pause").setEnabled(False)
+            self.find(QAction, "action_stop").setEnabled(False)
+
+
         while self._output.qsize() != 0:
             s = self._output.get()
             self._log(s)
 
     def start(self):
         self._log(" *** Start", color="blue")
-
-        self._solver.start()
+        if self._solver.is_stoped():
+            self._process = QProcess(self._parent)
+        self._solver.start(self._process)
 
         self.find(QAction, "action_start").setEnabled(False)
         self.find(QAction, "action_pause").setEnabled(True)
@@ -142,7 +150,6 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
 
     def pause(self):
         self._log(" *** Pause", color="blue")
-
         self._solver.pause()
 
         self.find(QAction, "action_start").setEnabled(True)
@@ -151,7 +158,6 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
 
     def stop(self):
         self._log(" *** Stop", color="blue")
-
         self._solver.kill()
 
         self.find(QAction, "action_start").setEnabled(True)