From 8f5fb4cc3b56a563205f61c48beab7fb84659e83 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Wed, 13 Dec 2023 10:36:13 +0100
Subject: [PATCH] Geometry: Profile: Some fixes.

---
 src/Model/Geometry/Profile.py            | 26 +++++--------------
 src/View/Geometry/Profile/UndoCommand.py |  6 ++---
 src/View/Geometry/Profile/Window.py      | 33 +++++++++++-------------
 3 files changed, 24 insertions(+), 41 deletions(-)

diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py
index ee662308..a04e1a8f 100644
--- a/src/Model/Geometry/Profile.py
+++ b/src/Model/Geometry/Profile.py
@@ -214,31 +214,17 @@ class Profile(object):
         self.points.insert(index, point)
         self._status.modified()
 
-    def delete(self, indexes: int):
-        """Delete points at index
-
-        Args:
-            indexes: List of index of points.
-
-        Returns:
-            Nothing.
-        """
-        points = set(
+    def delete_i(self, indexes: list):
+        self._points = list(
             map(
                 lambda e: e[1],
                 filter(
-                    lambda e: e[0] in indexes,
+                    lambda e: e[0] not in indexes,
                     enumerate(self.points)
                 )
             )
         )
 
-        self.points = list(
-            filter(
-                lambda p: p not in points,
-                self.points
-            )
-        )
         self._status.modified()
 
     def delete_points(self, points):
@@ -250,7 +236,7 @@ class Profile(object):
         Returns:
             Nothing.
         """
-        self.points = list(
+        self._points = list(
             filter(
                 lambda p: p not in points,
                 self.points
@@ -286,7 +272,7 @@ class Profile(object):
         elif column == 'z':
             def predicate(p): return p.z
 
-        self.points = sorted(
+        self._points = sorted(
             self.points,
             key=predicate,
             reverse=is_reversed
@@ -298,7 +284,7 @@ class Profile(object):
         if len(self.points) != len(indexes):
             logger.critical("Indexes list do not correspond to point list")
 
-        self.points = list(
+        self._points = list(
             map(
                 lambda x: x[1],
                 sorted(
diff --git a/src/View/Geometry/Profile/UndoCommand.py b/src/View/Geometry/Profile/UndoCommand.py
index c1122a68..e1bf3ae8 100644
--- a/src/View/Geometry/Profile/UndoCommand.py
+++ b/src/View/Geometry/Profile/UndoCommand.py
@@ -93,7 +93,7 @@ class AddCommand(QUndoCommand):
         self._point = None
 
     def undo(self):
-        self._profile.delete([self._index])
+        self._profile.delete_i([self._index])
 
     def redo(self):
         if self._point is None:
@@ -119,7 +119,7 @@ class DelCommand(QUndoCommand):
             self._profile.insert_point(row, point)
 
     def redo(self):
-        self._profile.delete(self._rows)
+        self._profile.delete_i(self._rows)
 
 
 class SortCommand(QUndoCommand):
@@ -181,7 +181,7 @@ class PasteCommand(QUndoCommand):
 
     def undo(self):
         for ind in range(len(self._points)):
-            self._profile.delete([self._row])
+            self._profile.delete_i([self._row])
 
     def redo(self):
         for point in self._points:
diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py
index 9fd3f1aa..0b241d94 100644
--- a/src/View/Geometry/Profile/Window.py
+++ b/src/View/Geometry/Profile/Window.py
@@ -135,16 +135,13 @@ class ProfileWindow(PamhyrWindow):
         self._tablemodel.blockSignals(False)
 
     def index_selected_row(self):
-        rows = self._tablemodel\
-            .selectionModel()\
-            .selectedRows()
+        table = self.find(QTableView, "tableView")
+        rows = table.selectionModel()\
+                    .selectedRows()
         if len(rows) == 0:
             return 0
 
-        return self._tablemodel\
-            .selectionModel()\
-            .selectedRows()[0]\
-            .row()
+        return rows[0].row()
 
     def add(self):
         table = self.find(QTableView, "tableView")
@@ -213,24 +210,24 @@ class ProfileWindow(PamhyrWindow):
 
         self.update_plot()
 
-    def copy(self):
-        rows = self._tablemodel\
-            .selectionModel()\
-            .selectedRows()
-        table = []
-        table.append(["x", "y", "z", "name"])
+    def _copy(self):
+        table = self.find(QTableView, "tableView")
+        rows = table.selectionModel().selectedRows()
+
+        data = []
+        data.append(["x", "y", "z", "name"])
 
         for row in rows:
             point = self._profile.point(row.row())
-            table.append(
+            data.append(
                 [
                     point.x, point.y, point.z, point.name
                 ]
             )
 
-        self.copyTableIntoClipboard(table)
+        self.copyTableIntoClipboard(data)
 
-    def paste(self):
+    def _paste(self):
         header, data = self.parseClipboardTable()
 
         if len(data) == 0:
@@ -245,10 +242,10 @@ class ProfileWindow(PamhyrWindow):
         self._tablemodel.paste(row, header, data)
         self.update_plot()
 
-    def undo(self):
+    def _undo(self):
         self._tablemodel.undo()
         self.update_plot()
 
-    def redo(self):
+    def _redo(self):
         self._tablemodel.redo()
         self.update_plot()
-- 
GitLab