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