From ea483e4d1e4d348f97e66b4d82b08f42d08b541b Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Thu, 20 Apr 2023 11:27:21 +0200 Subject: [PATCH] geometry: Fix sort undo command. --- src/Model/Geometry/Reach.py | 1 + src/View/Geometry/ReachUndoCommand.py | 17 ++++++++--------- src/View/Geometry/qtableview_reach.py | 9 ++++++--- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 9c113582..ad82d3c8 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -284,6 +284,7 @@ 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/ReachUndoCommand.py b/src/View/Geometry/ReachUndoCommand.py index 1c1171c0..a96b71eb 100644 --- a/src/View/Geometry/ReachUndoCommand.py +++ b/src/View/Geometry/ReachUndoCommand.py @@ -61,26 +61,25 @@ class DelCommand(QUndoCommand): self._reach.delete([self._index]) class SortCommand(QUndoCommand): - @timer - def __init__(self, reach, old, new): + def __init__(self, reach, _reverse): QUndoCommand.__init__(self) self._reach = reach + self._reverse = _reverse + + old = self._reach.profiles + self._reach.sort(self._reverse) + new = self._reach.profiles + self._indexes = list( map( lambda p: old.index(p), new ) ) - self._rindexes = list( - map( - lambda p: new.index(p), - old - ) - ) def undo(self): self._reach.sort_with_indexes(self._indexes) def redo(self): - self._reach.sort_with_indexes(self._rindexes) + self._reach.sort(self._reverse) diff --git a/src/View/Geometry/qtableview_reach.py b/src/View/Geometry/qtableview_reach.py index ea931d74..1c5a6c4d 100644 --- a/src/View/Geometry/qtableview_reach.py +++ b/src/View/Geometry/qtableview_reach.py @@ -103,7 +103,6 @@ class PandasModelEditable(QAbstractTableModel): value ) ) - self._reach.profile(index.row()).name = value if index.column() == 1: self._undo_stack.push( @@ -113,7 +112,6 @@ class PandasModelEditable(QAbstractTableModel): value ) ) - self._reach.profile(index.row()).kp = value self.dataChanged.emit(index, index) self.layoutChanged.emit() @@ -160,10 +158,15 @@ class PandasModelEditable(QAbstractTableModel): self.endRemoveRows() self.layoutChanged.emit() + @trace def sort_profiles(self, _reverse): self.layoutAboutToBeChanged.emit() - self._reach.sort(_reverse) + self._undo_stack.push( + SortCommand( + self._reach, _reverse + ) + ) self.layoutAboutToBeChanged.emit() self.layoutChanged.emit() -- GitLab