Commit ff9c47eb authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

geometry: Profile: Fix delete command undo point order.

Showing with 42 additions and 15 deletions
+42 -15
......@@ -140,19 +140,47 @@ class Profile(object):
self._points.insert(index, point)
def delete(self, index: int):
"""Delete the point at index
def delete(self, indexes: int):
"""Delete points at index
Args:
index: Index of point.
indexes: List of index of points.
Returns:
Nothing.
"""
try:
self._points.pop(index)
except IndexError:
raise IndexError(f"Invalid point index: {index}")
points = set(
map(
lambda e: e[1],
filter(
lambda e: e[0] in indexes,
enumerate(self.points)
)
)
)
self._points = list(
filter(
lambda p: p not in points,
self.points
)
)
def delete_points(self, points):
"""Delete some elements in profile list
Args:
points: The list of profile to delete
Returns:
Nothing.
"""
self._points = list(
filter(
lambda p: p not in points,
self.points
)
)
# Move
......
......@@ -69,18 +69,15 @@ class DelCommand(QUndoCommand):
self._points = []
for row in rows:
self._points.append(self._profile.point(row))
self._points.reverse()
self._points.append((row, self._profile.point(row)))
self._points.sort() # Sort by row index
def undo(self):
row = self._rows[0]
for point in self._points:
for row, point in self._points:
self._profile.insert_point(row, point)
def redo(self):
row = self._rows[0]
for _ in self._rows:
self._profile.delete(row)
self._profile.delete(self._rows)
class SortCommand(QUndoCommand):
def __init__(self, profile, column, _reverse):
......
......@@ -201,7 +201,7 @@ class TableEditableModel(QAbstractTableModel):
self.layoutChanged.emit()
def remove_rows(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], row[-1])
self.beginRemoveRows(parent, rows[0], rows[-1])
self._undo_stack.push(
DelCommand(
......
# -*- coding: utf-8 -*-
import time
import traceback
from colorama import Fore
from colorama import Back
......@@ -59,6 +60,7 @@ def timer(func):
print(f"[{Fore.RED}ERROR{Style.RESET_ALL}]" +
f"[{func.__module__}.{Fore.GREEN}{func.__qualname__}{Style.RESET_ALL}]: " +
f"{Fore.RED}{e}{Style.RESET_ALL}")
traceback.print_exc()
end_time = time.perf_counter()
run_time = end_time - start_time
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment