From e2e8c5ec9e6ba6d422b8a671b8b71ba79bb1a86b Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Thu, 18 Sep 2025 10:45:31 +0200 Subject: [PATCH] AddFile: Fix undo commands. --- src/View/AdditionalFiles/List.py | 18 +++++++++++++++++- src/View/AdditionalFiles/UndoCommand.py | 16 ++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/View/AdditionalFiles/List.py b/src/View/AdditionalFiles/List.py index a2579aba..53875f20 100644 --- a/src/View/AdditionalFiles/List.py +++ b/src/View/AdditionalFiles/List.py @@ -38,6 +38,20 @@ logger = logging.getLogger() class ListModel(PamhyrListModel): + 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): row = index.row() column = index.column() @@ -65,6 +79,8 @@ class ListModel(PamhyrListModel): return QVariant() def add(self, row): + row = self.get_true_data_row(row) + self._undo.push( AddCommand( self._data, row @@ -75,7 +91,7 @@ class ListModel(PamhyrListModel): def delete(self, row): self._undo.push( DelCommand( - self._data, row + self._data, self._data.files[row] ) ) self.update() diff --git a/src/View/AdditionalFiles/UndoCommand.py b/src/View/AdditionalFiles/UndoCommand.py index 43f7554f..1e597b84 100644 --- a/src/View/AdditionalFiles/UndoCommand.py +++ b/src/View/AdditionalFiles/UndoCommand.py @@ -58,27 +58,23 @@ class AddCommand(QUndoCommand): self._new = None def undo(self): - self._files.delete([self._new]) + self._new.set_as_deleted() def redo(self): if self._new is None: self._new = self._files.new(self._row) else: - self._files.undelete([self._new]) - # self._files.insert(self._row, self._new) - + self._new.set_as_not_deleted() class DelCommand(QUndoCommand): - def __init__(self, files, row): + def __init__(self, files, line): QUndoCommand.__init__(self) self._files = files - self._row = row - self._old = self._files.get(row) + self._line = line def undo(self): - self._files.undelete([self._old]) - # self._files.insert(self._row, self._old) + self._line.set_as_not_deleted() def redo(self): - self._files.delete_i([self._row]) + self._line.set_as_deleted()