From b93b6fe62df883dd46495c8f1422e75efe702fe9 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Thu, 20 Apr 2023 11:38:33 +0200
Subject: [PATCH] geometry: Fix add new row.

---
 src/Model/Geometry/Reach.py           | 14 --------------
 src/View/Geometry/GeometryWindow.py   |  9 ++-------
 src/View/Geometry/qtableview_reach.py | 11 +++++++----
 3 files changed, 9 insertions(+), 25 deletions(-)

diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py
index ad82d3c8..04272f23 100644
--- a/src/Model/Geometry/Reach.py
+++ b/src/Model/Geometry/Reach.py
@@ -63,19 +63,6 @@ class Reach:
         """
         return self._profiles
 
-    def add_profile(self, index):
-        """Add a new profile at the end of profiles list
-
-        Returns:
-            Nothing.
-        """
-        nb_profile = self.number_profiles
-        profile = ProfileXYZ()
-        profile.num = nb_profile + 1
-
-        self._profiles.insert(profile, index + 1)
-        self._update_profile_numbers()
-
     def _update_profile_numbers(self):
         """Update profiles index
 
@@ -284,7 +271,6 @@ class Reach:
             reverse=is_reversed
         )
 
-    @trace
     @timer
     def sort_with_indexes(self, indexes: list):
         if len(self._profiles) != len(indexes):
diff --git a/src/View/Geometry/GeometryWindow.py b/src/View/Geometry/GeometryWindow.py
index b9784020..7948e380 100644
--- a/src/View/Geometry/GeometryWindow.py
+++ b/src/View/Geometry/GeometryWindow.py
@@ -366,15 +366,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
 
     def insert_row(self):
         if len(self.tableView.selectedIndexes()) == 0:
-            self._tablemodel.insertRows(self._tablemodel.rowCount(), 1)
+            self._tablemodel.insert_row(self._tablemodel.rowCount())
         else:
             row = self.index_selected_row()
-            self._tablemodel.insertRows(row + 1, 1)
-
-        if self.filename is not None:
-            self.plot_xy()
-            self.plot_kpc()
-            self.select_current_profile()
+            self._tablemodel.insert_row(row + 1)
 
     def delete_row(self):
         rows = list(set(
diff --git a/src/View/Geometry/qtableview_reach.py b/src/View/Geometry/qtableview_reach.py
index 1c5a6c4d..6ad89bbf 100644
--- a/src/View/Geometry/qtableview_reach.py
+++ b/src/View/Geometry/qtableview_reach.py
@@ -138,10 +138,14 @@ class PandasModelEditable(QAbstractTableModel):
             return Qt.ItemIsEditable | flg
 
     # @QtCore.pyqtSlot()
-    def insertRows(self, row, count, parent=QModelIndex()):
-        self.beginInsertRows(parent, row, row + count - 1)
+    def insert_row(self, row, parent=QModelIndex()):
+        self.beginInsertRows(parent, row, row - 1)
 
-        self._reach.add_profile(row)
+        self._undo_stack.push(
+            AddCommand(
+                self._reach, row
+            )
+        )
 
         self.endInsertRows()
         self.layoutChanged.emit()
@@ -158,7 +162,6 @@ class PandasModelEditable(QAbstractTableModel):
         self.endRemoveRows()
         self.layoutChanged.emit()
 
-    @trace
     def sort_profiles(self, _reverse):
         self.layoutAboutToBeChanged.emit()
 
-- 
GitLab