From e6878c473501a0ae7c6fd266a2a41ca4180628da Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Mon, 12 Jun 2023 17:17:45 +0200
Subject: [PATCH] Solvers: Add some type of solver in solver list.

---
 src/Solver/ASolver.py               | 10 ++++++++++
 src/Solver/Solvers.py               |  9 ++++++++-
 src/View/Configure/Solver/Window.py |  7 +++++--
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/Solver/ASolver.py b/src/Solver/ASolver.py
index 478e49a6..e39152f4 100644
--- a/src/Solver/ASolver.py
+++ b/src/Solver/ASolver.py
@@ -33,6 +33,16 @@ class AbstractSolver(object):
     def __str__(self):
         return f"{self._name} : {self._type} : {self._description}"
 
+    def __getitem__(self, key):
+        ret = None
+        if key == "name":
+            ret = self._name
+        elif key == "description":
+            ret = self._description
+        elif key == "type":
+            ret = self._type
+        return ret
+
     @classmethod
     def default_parameters(cls):
         return []
diff --git a/src/Solver/Solvers.py b/src/Solver/Solvers.py
index b5f30476..25cb95e3 100644
--- a/src/Solver/Solvers.py
+++ b/src/Solver/Solvers.py
@@ -1,3 +1,10 @@
 # -*- coding: utf-8 -*-
 
-solver_type_list = ["generic"]
+from Solver.GenericSolver import GenericSolver
+from Solver.Mage import Mage7, Mage8
+
+solver_type_list = {
+    "generic": GenericSolver,
+    "mage7": Mage7,
+    "mage8": Mage8,
+}
diff --git a/src/View/Configure/Solver/Window.py b/src/View/Configure/Solver/Window.py
index cc98fd65..64faf8da 100644
--- a/src/View/Configure/Solver/Window.py
+++ b/src/View/Configure/Solver/Window.py
@@ -64,8 +64,11 @@ class ConfigureSolverWindow(ASubWindow):
                 "Please give a name to your solver"
             )
         else:
-            self.data = GenericSolver(self.get_line_edit_text("lineEdit_name"))
-            self.data.set_description(self.get_line_edit_text("lineEdit_description"))
+            # Build new solver from selected type
+            stype = self.get_combobox_text("comboBox_solver")
+            self.data = solver_type_list[stype](self.get_line_edit_text("lineEdit_name"))
+
+            self.data.description = self.get_line_edit_text("lineEdit_description")
             self.data.set_input(
                 self.get_line_edit_text("lineEdit_input"),
                 self.get_line_edit_text("lineEdit_input_cmd")
-- 
GitLab