From de7f3e63b1afc4a9e6ca42850b655de68501c374 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Thu, 30 Oct 2025 09:57:05 +0100 Subject: [PATCH] BC: Fix BC undo command. --- src/Model/BoundaryCondition/BoundaryCondition.py | 4 ++-- src/View/BoundaryCondition/Edit/Table.py | 10 +++++++--- src/View/BoundaryCondition/Edit/UndoCommand.py | 13 +++++++------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Model/BoundaryCondition/BoundaryCondition.py b/src/Model/BoundaryCondition/BoundaryCondition.py index 14ac5db4..86f2cb6e 100644 --- a/src/Model/BoundaryCondition/BoundaryCondition.py +++ b/src/Model/BoundaryCondition/BoundaryCondition.py @@ -582,10 +582,10 @@ class BoundaryCondition(SQLSubModel): self._data.index(bc) def get_i(self, index): - if len(self.data) == 0: + if len(self._data) == 0: return None - return self.data[index] + return self._data[index] def get_range(self, _range): lst = [] diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index 601a09ac..c0cfa1ed 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -58,7 +58,7 @@ logger = logging.getLogger() class TableModel(PamhyrTableModel): def get_true_data_row(self, row): - bc = self._data.get_i(row) + bc = self._data.data[row] return next( map( @@ -83,6 +83,7 @@ class TableModel(PamhyrTableModel): value = QVariant() if 0 <= column < 2: + row = self.get_true_data_row(row) v = self._data.get_i(row)[column] if self._data.get_type_column(column) == float: if type(v) is str: @@ -106,13 +107,16 @@ class TableModel(PamhyrTableModel): column = index.column() try: + row = self.get_true_data_row(row) + self._undo.push( SetDataCommand( - self._data, row, column, value + self._data, row, + column, value ) ) except Exception as e: - logger.info(e) + logger.warning(e) logger.debug(traceback.format_exc()) self.update() diff --git a/src/View/BoundaryCondition/Edit/UndoCommand.py b/src/View/BoundaryCondition/Edit/UndoCommand.py index 5289ef22..986b4b73 100644 --- a/src/View/BoundaryCondition/Edit/UndoCommand.py +++ b/src/View/BoundaryCondition/Edit/UndoCommand.py @@ -83,13 +83,13 @@ 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.add(self._index) else: - self._data.insert(self._index, self._new) + self._new.set_as_not_deleted() class DelCommand(QUndoCommand): @@ -101,15 +101,16 @@ class DelCommand(QUndoCommand): self._bc = [] for row in rows: - self._bc.append((row, self._data.get_i(row))) + self._bc.append(self._data.get_i(row)) self._bc.sort() def undo(self): - for row, el in self._bc: - self._data.insert(row, el) + for el in self._bc: + el.set_as_not_deleted() def redo(self): - self._data.delete_i(self._rows) + for el in self._bc: + el.set_as_deleted() class SortCommand(QUndoCommand):