geometry: Fix sort undo command.

mesh
Pierre-Antoine Rouby 2023-04-20 11:27:21 +02:00
parent 51b9b3e1e4
commit ea483e4d1e
3 changed files with 15 additions and 12 deletions

View File

@ -284,6 +284,7 @@ class Reach:
reverse=is_reversed reverse=is_reversed
) )
@trace
@timer @timer
def sort_with_indexes(self, indexes: list): def sort_with_indexes(self, indexes: list):
if len(self._profiles) != len(indexes): if len(self._profiles) != len(indexes):

View File

@ -61,26 +61,25 @@ class DelCommand(QUndoCommand):
self._reach.delete([self._index]) self._reach.delete([self._index])
class SortCommand(QUndoCommand): class SortCommand(QUndoCommand):
@timer def __init__(self, reach, _reverse):
def __init__(self, reach, old, new):
QUndoCommand.__init__(self) QUndoCommand.__init__(self)
self._reach = reach self._reach = reach
self._reverse = _reverse
old = self._reach.profiles
self._reach.sort(self._reverse)
new = self._reach.profiles
self._indexes = list( self._indexes = list(
map( map(
lambda p: old.index(p), lambda p: old.index(p),
new new
) )
) )
self._rindexes = list(
map(
lambda p: new.index(p),
old
)
)
def undo(self): def undo(self):
self._reach.sort_with_indexes(self._indexes) self._reach.sort_with_indexes(self._indexes)
def redo(self): def redo(self):
self._reach.sort_with_indexes(self._rindexes) self._reach.sort(self._reverse)

View File

@ -103,7 +103,6 @@ class PandasModelEditable(QAbstractTableModel):
value value
) )
) )
self._reach.profile(index.row()).name = value
if index.column() == 1: if index.column() == 1:
self._undo_stack.push( self._undo_stack.push(
@ -113,7 +112,6 @@ class PandasModelEditable(QAbstractTableModel):
value value
) )
) )
self._reach.profile(index.row()).kp = value
self.dataChanged.emit(index, index) self.dataChanged.emit(index, index)
self.layoutChanged.emit() self.layoutChanged.emit()
@ -160,10 +158,15 @@ class PandasModelEditable(QAbstractTableModel):
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()
@trace
def sort_profiles(self, _reverse): def sort_profiles(self, _reverse):
self.layoutAboutToBeChanged.emit() self.layoutAboutToBeChanged.emit()
self._reach.sort(_reverse) self._undo_stack.push(
SortCommand(
self._reach, _reverse
)
)
self.layoutAboutToBeChanged.emit() self.layoutAboutToBeChanged.emit()
self.layoutChanged.emit() self.layoutChanged.emit()