From 3ef4b40558c7f463f63a954e3b4d91261751f2c9 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 12 Dec 2023 10:13:10 +0100
Subject: [PATCH] HS: Basic: Add question for BHS type change.

---
 .../BasicHydraulicStructures/Table.py         | 29 ++++++++++++++-----
 .../BasicHydraulicStructures/Translate.py     | 11 +++++++
 .../BasicHydraulicStructures/Window.py        |  1 +
 src/View/Tools/PamhyrTable.py                 |  4 ++-
 4 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py
index e043d19e..2bea72d2 100644
--- a/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py
+++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Table.py
@@ -31,7 +31,7 @@ from PyQt5.QtWidgets import (
     QDialogButtonBox, QPushButton, QLineEdit,
     QFileDialog, QTableView, QAbstractItemView,
     QUndoStack, QShortcut, QAction, QItemDelegate,
-    QComboBox,
+    QComboBox, QMessageBox,
 )
 
 from View.Tools.PamhyrTable import PamhyrTableModel
@@ -137,13 +137,17 @@ class TableModel(PamhyrTableModel):
                     )
                 )
             elif self._headers[column] == "type":
-                key = next(k for k, v in self._long_types.items()
-                           if v == value)
-                self._undo.push(
-                    SetTypeCommand(
-                        self._data, row, BHS_types[key]
+                if self._question_set_type():
+                    key = next(
+                        k for k, v in self._long_types.items()
+                        if v == value
+                    )
+
+                    self._undo.push(
+                        SetTypeCommand(
+                            self._data, row, BHS_types[key]
+                        )
                     )
-                )
         except Exception as e:
             logger.info(e)
             logger.debug(traceback.format_exc())
@@ -151,6 +155,17 @@ class TableModel(PamhyrTableModel):
         self.dataChanged.emit(index, index)
         return True
 
+    def _question_set_type(self):
+        question = QMessageBox(self._parent)
+
+        question.setWindowTitle(self._trad['msg_type_change_title'])
+        question.setText(self._trad['msg_type_change_msg'])
+        question.setStandardButtons(QMessageBox.Cancel | QMessageBox.Ok )
+        question.setIcon(QMessageBox.Question)
+
+        res = question.exec()
+        return res == QMessageBox.Ok
+
     def add(self, row, parent=QModelIndex()):
         self.beginInsertRows(parent, row, row - 1)
 
diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py
index 89fb754c..787d4cdb 100644
--- a/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py
+++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Translate.py
@@ -27,6 +27,17 @@ class BasicHydraulicStructuresTranslate(PamhyrTranslate):
     def __init__(self):
         super(BasicHydraulicStructuresTranslate, self).__init__()
 
+        self._dict['msg_type_change_title'] = _translate(
+            "BasicHydraulicStructures",
+            "Change hydraulic structure type"
+        )
+
+        self._dict['msg_type_change_msg'] = _translate(
+            "BasicHydraulicStructures",
+            "Do you want to change the hydraulic structure type and reset \
+hydraulic structure values?"
+        )
+
         self._sub_dict["long_types"] = {
             "ND": _translate("BasicHydraulicStructures", "Not defined"),
             "DU": _translate("BasicHydraulicStructures", "Dummy"),
diff --git a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py
index 976f6bf7..e31a1c91 100644
--- a/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py
+++ b/src/View/HydraulicStructures/BasicHydraulicStructures/Window.py
@@ -95,6 +95,7 @@ class BasicHydraulicStructuresWindow(PamhyrWindow):
             trad=self._trad,
             data=self._hs,
             undo=self._undo_stack,
+            parent=self,
         )
 
         selectionModel = table.selectionModel()
diff --git a/src/View/Tools/PamhyrTable.py b/src/View/Tools/PamhyrTable.py
index 6ce66a42..803e5842 100644
--- a/src/View/Tools/PamhyrTable.py
+++ b/src/View/Tools/PamhyrTable.py
@@ -83,7 +83,8 @@ class PamhyrTableModel(QAbstractTableModel):
                  trad=None,
                  data=None,
                  undo=None,
-                 opt_data=None):
+                 opt_data=None,
+                 parent=None):
         super(PamhyrTableModel, self).__init__()
 
         self._table_view = table_view
@@ -93,6 +94,7 @@ class PamhyrTableModel(QAbstractTableModel):
         self._editable_headers = editable_headers
         self._delegates = delegates
         self._trad = trad
+        self._parent = parent
 
         self._data = data
         self._opt_data = opt_data
-- 
GitLab