From df4832244e9225c98696605cdf40efb658ccfdb9 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 13 Jun 2023 11:17:52 +0200
Subject: [PATCH] SolverParameters: Fix translate mechanism.

/!\ (must be done for all previous window)
---
 src/View/SolverParameters/Table.py       | 18 ++++++---
 src/View/SolverParameters/UndoCommand.py |  1 +
 src/View/SolverParameters/Window.py      |  4 +-
 src/View/SolverParameters/translate.py   | 49 +++++++++++++++---------
 4 files changed, 47 insertions(+), 25 deletions(-)

diff --git a/src/View/SolverParameters/Table.py b/src/View/SolverParameters/Table.py
index 5d84ed6f..7b44159d 100644
--- a/src/View/SolverParameters/Table.py
+++ b/src/View/SolverParameters/Table.py
@@ -16,7 +16,7 @@ from PyQt5.QtWidgets import (
 )
 
 from View.SolverParameters.UndoCommand import *
-from View.SolverParameters.translate import *
+from View.SolverParameters import translate as tr
 
 from Solver.Solvers import solver_long_name, solver_type_list
 
@@ -25,7 +25,7 @@ _translate = QCoreApplication.translate
 class TableModel(QAbstractTableModel):
     def __init__(self, data=None, undo=None, tab=""):
         super(QAbstractTableModel, self).__init__()
-        self._headers = list(table_headers.keys())
+        self._headers = list(tr.table_headers.keys())
         self._data = data
         self._undo = undo
         self._tab = tab
@@ -57,17 +57,20 @@ class TableModel(QAbstractTableModel):
 
         if cname == "name":
             value = self._params.get(row)[cname]
-            if value in names:
-                value = names[value]
+            if value in tr.names:
+                value = tr.names[value]
             return value
         elif cname == "value":
-            return self._params.get(row)[cname]
+            value = self._params.get(row)[cname]
+            if value in tr.yes_no:
+                value = tr.yes_no[value]
+            return value
 
         return QVariant()
 
     def headerData(self, section, orientation, role):
         if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal:
-            return table_headers[self._headers[section]]
+            return tr.table_headers[self._headers[section]]
 
         return QVariant()
 
@@ -79,6 +82,9 @@ class TableModel(QAbstractTableModel):
         column = index.column()
 
         if self._headers[column] == "value":
+            if value in tr.r_yes_no:
+                value = tr.r_yes_no[value].lower()
+
             self._undo.push(
                 SetCommand(
                     self._params, row,
diff --git a/src/View/SolverParameters/UndoCommand.py b/src/View/SolverParameters/UndoCommand.py
index 6a8dc1eb..fda0552f 100644
--- a/src/View/SolverParameters/UndoCommand.py
+++ b/src/View/SolverParameters/UndoCommand.py
@@ -23,4 +23,5 @@ class SetCommand(QUndoCommand):
         self._data.get(self._index)[self._column] = self._old
 
     def redo(self):
+        print(self._new)
         self._data.get(self._index)[self._column] = self._new
diff --git a/src/View/SolverParameters/Window.py b/src/View/SolverParameters/Window.py
index c5aa264a..c51926f9 100644
--- a/src/View/SolverParameters/Window.py
+++ b/src/View/SolverParameters/Window.py
@@ -25,7 +25,7 @@ from PyQt5.QtWidgets import (
 
 from View.SolverParameters.UndoCommand import *
 from View.SolverParameters.Table import TableModel
-from View.SolverParameters.translate import *
+from View.SolverParameters import translate as tr
 
 from Solver.Solvers import solver_long_name, solver_type_list
 
@@ -34,6 +34,8 @@ _translate = QCoreApplication.translate
 
 class SolverParametersWindow(ASubMainWindow, ListedSubWindow):
     def __init__(self, title="Solver parameters", study=None, parent=None):
+        tr.init()
+
         title = title + " - " + study.name
 
         super(SolverParametersWindow, self).__init__(
diff --git a/src/View/SolverParameters/translate.py b/src/View/SolverParameters/translate.py
index 5d8a3a7d..1b394212 100644
--- a/src/View/SolverParameters/translate.py
+++ b/src/View/SolverParameters/translate.py
@@ -4,24 +4,37 @@ from PyQt5.QtCore import QCoreApplication
 
 _translate = QCoreApplication.translate
 
-table_headers = {
-    "name": _translate("LateralContribution", "Name"),
-    "value": _translate("LateralContribution", "Value")
-}
+table_headers = None
+yes_no = None
+r_yes_no = None
+names = None
+
+def init():
+    global table_headers
+    table_headers = {
+        "name": _translate("LateralContribution", "Name"),
+        "value": _translate("LateralContribution", "Value")
+    }
+
+    # Used to translate user parameter with value yes or no
+    global yes_no
+    yes_no = {
+        "yes": _translate("SolverParameters", "Yes"),
+        "no": _translate("SolverParameters", "No"),
+        "y": _translate("SolverParameters", "Y"),
+        "n": _translate("SolverParameters", "N"),
+    }
 
-# Used to translate user parameter with value yes or no
-yes_no = {
-    "yes": _translate("SolverParameters", "Yes"),
-    "no": _translate("SolverParameters", "No"),
-    "y": _translate("SolverParameters", "Y"),
-    "n": _translate("SolverParameters", "N"),
     # Reverse
-    _translate("SolverParameters", "Yes"): "Yes",
-    _translate("SolverParameters", "No"): "No",
-    _translate("SolverParameters", "Y"): "y",
-    _translate("SolverParameters", "N"): "n",
-}
+    global r_yes_no
+    r_yes_no = {
+        _translate("SolverParameters", "Yes"): "yes",
+        _translate("SolverParameters", "No"): "no",
+        _translate("SolverParameters", "Y"): "y",
+        _translate("SolverParameters", "N"): "n",
+    }
 
-names = {
-    "mage_time_step": _translate("SolverParameters", "Time step in second")
-}
+    global names
+    names = {
+        "mage_time_step": _translate("SolverParameters", "Time step in second")
+    }
-- 
GitLab