diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 9c113582cfadd3887413ee4b9ff78cbd13d0c8ea..ad82d3c88cebdb82c74a7029976428e84303f2fd 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 1c1171c03ec5ad71f4510ea30038255cf160fe4e..a96b71eb54fcebb8a566e0ddbdd2b57bc9661e9c 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 ea931d7444e1fb487c69c68472b2fbfd93f1f19a..1c5a6c4d79b1998c4c17ff41a009e6467bf09585 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()