From 5c7edbef8a7b23630409cde2f781cd9bd9dac291 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Mon, 30 Sep 2024 17:07:11 +0200
Subject: [PATCH] HS: Use profiles name instead of RK (select only).

---
 src/Model/Geometry/ProfileXYZ.py      |  9 +++++++++
 src/View/HydraulicStructures/Table.py | 21 +++++++++++++++++++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index 7936342a..bb3faa0b 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -253,6 +253,15 @@ class ProfileXYZ(Profile, SQLSubModel):
 
         return point
 
+    def display_name(self):
+        name = ""
+        if self.name != "":
+            name += f"{self.name} "
+
+        name += f"({self.rk})"
+
+        return name
+
     def x(self):
         return [point.x for point in self.points]
 
diff --git a/src/View/HydraulicStructures/Table.py b/src/View/HydraulicStructures/Table.py
index e8530b1a..cf547875 100644
--- a/src/View/HydraulicStructures/Table.py
+++ b/src/View/HydraulicStructures/Table.py
@@ -65,7 +65,8 @@ class ComboBoxDelegate(QItemDelegate):
             if reach is not None:
                 val = list(
                     map(
-                        lambda rk: str(rk), reach.reach.get_rk()
+                        lambda p: p.display_name(),
+                        reach.reach.profiles
                     )
                 )
         else:
@@ -89,7 +90,23 @@ class ComboBoxDelegate(QItemDelegate):
 
     def setModelData(self, editor, model, index):
         text = str(editor.currentText())
-        model.setData(index, text)
+
+        if self._mode == "rk":
+            reach = self._data.hydraulic_structures\
+                              .get(index.row())\
+                              .input_reach
+            profiles = list(
+                filter(
+                    lambda p: p.display_name() == text,
+                    reach.reach.profiles
+                )
+            )
+
+            value = profiles[0].rk if len(profiles) > 0 else None
+        else:
+            value = text
+
+        model.setData(index, value)
         editor.close()
         editor.deleteLater()
 
-- 
GitLab