Strickler: Fix undo command.

scenarios
Pierre-Antoine 2025-09-18 11:19:30 +02:00
parent e2e8c5ec9e
commit 589e591d3b
2 changed files with 30 additions and 13 deletions

View File

@ -48,6 +48,20 @@ _translate = QCoreApplication.translate
class TableModel(PamhyrTableModel):
def get_true_data_row(self, row):
el = self._data.get(row)
return next(
map(
lambda e: e[0],
filter(
lambda e: e[1] == el,
enumerate(self._data._lst)
)
), 0
)
def data(self, index, role):
if role != Qt.ItemDataRole.DisplayRole:
return QVariant()
@ -109,6 +123,8 @@ class TableModel(PamhyrTableModel):
def add(self, row, parent=QModelIndex()):
self.beginInsertRows(parent, row, row - 1)
row = self.get_true_data_row(row)
self._undo.push(
AddCommand(
self._data, row
@ -123,7 +139,12 @@ class TableModel(PamhyrTableModel):
self._undo.push(
DelCommand(
self._data, rows
self._data, list(
map(
lambda r: self._data.get(r),
rows
)
)
)
)

View File

@ -102,33 +102,29 @@ class AddCommand(QUndoCommand):
self._new = None
def undo(self):
self._data.delete_i([self._index])
self._new.set_as_deleted()
def redo(self):
if self._new is None:
self._new = self._data.new(self._index)
else:
self._data.undelete([self._new])
# self._data.insert(self._index, self._new)
self._new.set_as_not_deleted()
class DelCommand(QUndoCommand):
def __init__(self, data, rows):
def __init__(self, data, lines):
QUndoCommand.__init__(self)
self._data = data
self._rows = rows
self._el = []
for row in rows:
self._el.append(self._data.get(row))
self._el.sort()
self._lines = lines
def undo(self):
self._data.undelete(self._el)
for line in self._lines:
line.set_as_not_deleted()
def redo(self):
self._data.delete(self._el)
for line in self._lines:
line.set_as_deleted()
class SortCommand(QUndoCommand):