mirror of https://gitlab.com/pamhyr/pamhyr2
Geometry: undo/redo restores interpolated data in the model
parent
fdb5cd23e7
commit
318f6a4668
|
|
@ -37,6 +37,7 @@ class SetDataCommand(QUndoCommand):
|
|||
self._index = index
|
||||
self._old = old_value
|
||||
self._new = self.type(new_value)
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
|
||||
class SetXCommand(SetDataCommand):
|
||||
|
|
@ -46,6 +47,7 @@ class SetXCommand(SetDataCommand):
|
|||
|
||||
def undo(self):
|
||||
self._profile.point(self._index).x = self._old
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
|
|
@ -60,6 +62,7 @@ class SetYCommand(SetDataCommand):
|
|||
|
||||
def undo(self):
|
||||
self._profile.point(self._index).y = self._old
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
|
|
@ -74,6 +77,7 @@ class SetZCommand(SetDataCommand):
|
|||
|
||||
def undo(self):
|
||||
self._profile.point(self._index).z = self._old
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
|
|
@ -89,9 +93,12 @@ class SetNameCommand(SetDataCommand):
|
|||
|
||||
def undo(self):
|
||||
self._profile.point(self._index).name = self._old
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
self._profile.point(self._index).name = self._new
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
class AddCommand(QUndoCommand):
|
||||
|
|
@ -101,9 +108,11 @@ class AddCommand(QUndoCommand):
|
|||
self._profile = profile
|
||||
self._index = index
|
||||
self._point = None
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
def undo(self):
|
||||
self._profile.delete_i([self._index])
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
|
|
@ -111,6 +120,7 @@ class AddCommand(QUndoCommand):
|
|||
self._point = self._profile.insert(self._index)
|
||||
else:
|
||||
self._profile.insert_point(self._index, self._point)
|
||||
self._profile.interpolated = False
|
||||
|
||||
self._profile.modified()
|
||||
|
||||
|
|
@ -121,14 +131,17 @@ class DelCommand(QUndoCommand):
|
|||
|
||||
self._profile = profile
|
||||
self._points = points
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
def undo(self):
|
||||
for point in self._points:
|
||||
point.set_as_not_deleted()
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
self._profile.delete_points(self._points)
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
|
|
@ -139,6 +152,7 @@ class SortCommand(QUndoCommand):
|
|||
self._profile = profile
|
||||
self._column = column
|
||||
self._reverse = _reverse
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
old = self._profile._points
|
||||
self._profile.sort(self._column, self._reverse)
|
||||
|
|
@ -153,10 +167,12 @@ class SortCommand(QUndoCommand):
|
|||
|
||||
def undo(self):
|
||||
self._profile.sort_with_indexes(self._indexes)
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
self._profile.sort(self._column, self._reverse)
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
|
|
@ -168,11 +184,14 @@ class MoveCommand(QUndoCommand):
|
|||
self._up = up == "up"
|
||||
self._i = i
|
||||
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
def undo(self):
|
||||
if self._up:
|
||||
self._profile.move_up_point(self._i)
|
||||
else:
|
||||
self._profile.move_down_point(self._i)
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
|
|
@ -180,6 +199,7 @@ class MoveCommand(QUndoCommand):
|
|||
self._profile.move_up_point(self._i)
|
||||
else:
|
||||
self._profile.move_down_point(self._i)
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
|
|
@ -188,13 +208,16 @@ class ReverseCommand(QUndoCommand):
|
|||
QUndoCommand.__init__(self)
|
||||
|
||||
self._profile = profile
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
def undo(self):
|
||||
self._profile.reverse()
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
self._profile.reverse()
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
|
|
@ -205,14 +228,17 @@ class PurgeCommand(QUndoCommand):
|
|||
self._deleted = []
|
||||
self._profile = profile
|
||||
self._np_purge = np_purge
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
def undo(self):
|
||||
for point in self._deleted:
|
||||
point.set_as_not_deleted()
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
self._deleted = self._profile.purge(self._np_purge)
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
||||
|
||||
|
|
@ -223,14 +249,17 @@ class PasteCommand(QUndoCommand):
|
|||
self._profile = profile
|
||||
self._row = row
|
||||
self._points = points
|
||||
self._old_interpolated = self._profile.interpolated
|
||||
|
||||
self._points.reverse()
|
||||
|
||||
def undo(self):
|
||||
self._profile.delete_points(self._points)
|
||||
self._profile.interpolated = self._old_interpolated
|
||||
self._profile.modified()
|
||||
|
||||
def redo(self):
|
||||
for point in self._points:
|
||||
self._profile.insert_point(self._row, point)
|
||||
self._profile.interpolated = False
|
||||
self._profile.modified()
|
||||
|
|
|
|||
|
|
@ -48,11 +48,14 @@ class SetNameCommand(SetDataCommand):
|
|||
self.type = str
|
||||
super(SetNameCommand, self).__init__(
|
||||
reach, index, old_value, new_value)
|
||||
self._old_interpolated = self._reach.profile(self._index).interpolated
|
||||
|
||||
def undo(self):
|
||||
self._reach.profile(self._index).name = self._old
|
||||
self._reach.profile(self._index).interpolated = self._old_interpolated
|
||||
|
||||
def redo(self):
|
||||
# Name setter will automatically update the interpolated attribute
|
||||
self._reach.profile(self._index).name = self._new
|
||||
|
||||
|
||||
|
|
@ -60,11 +63,14 @@ class SetRKCommand(SetDataCommand):
|
|||
def __init__(self, reach, index, old_value, new_value):
|
||||
self.type = float
|
||||
super(SetRKCommand, self).__init__(reach, index, old_value, new_value)
|
||||
self._old_interpolated = self._reach.profile(self._index).interpolated
|
||||
|
||||
def undo(self):
|
||||
self._reach.profile(self._index).rk = self._old
|
||||
self._reach.profile(self._index).interpolated = self._old_interpolated
|
||||
|
||||
def redo(self):
|
||||
# RK setter will automatically update the interpolated attribute
|
||||
self._reach.profile(self._index).rk = self._new
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue