From 4550fc95d77df91e0a90fb9412c8fbf4dda902b4 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Mon, 27 Apr 2026 16:32:41 +0200 Subject: [PATCH] debug delete functionnality in InitialConditionsAdisTS --- .../InitialConditionsAdisTS.py | 53 ++++++++++++------- src/View/InitialConditionsAdisTS/Table.py | 15 +++++- .../InitialConditionsAdisTS/UndoCommand.py | 1 - 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py index c0088779..98b63fd5 100644 --- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py +++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py @@ -267,7 +267,7 @@ class InitialConditionsAdisTS(SQLSubModel): @name.setter def name(self, name): self._name = name - self._status.modified() + self.modified() @property def pollutant(self): @@ -276,7 +276,7 @@ class InitialConditionsAdisTS(SQLSubModel): @pollutant.setter def pollutant(self, pollutant): self._pollutant = pollutant - self._status.modified() + self.modified() @property def concentration(self): @@ -285,7 +285,7 @@ class InitialConditionsAdisTS(SQLSubModel): @concentration.setter def concentration(self, concentration): self._concentration = concentration - self._status.modified() + self.modified() @property def eg(self): @@ -294,7 +294,7 @@ class InitialConditionsAdisTS(SQLSubModel): @eg.setter def eg(self, eg): self._eg = eg - self._status.modified() + self.modified() @property def em(self): @@ -303,7 +303,7 @@ class InitialConditionsAdisTS(SQLSubModel): @em.setter def em(self, em): self._em = em - self._status.modified() + self.modified() @property def ed(self): @@ -312,7 +312,7 @@ class InitialConditionsAdisTS(SQLSubModel): @ed.setter def ed(self, ed): self._ed = ed - self._status.modified() + self.modified() @property def enabled(self): @@ -321,28 +321,45 @@ class InitialConditionsAdisTS(SQLSubModel): @enabled.setter def enabled(self, enabled): self._enabled = enabled - self._status.modified() + self.modified() def new(self, index): n = ICAdisTSSpec(status=self._status) self._data.insert(index, n) - self._status.modified() + self.modified() return n def delete(self, data): - self._data = list( - filter( - lambda x: x not in data, - self._data + list( + map( + lambda x: x.set_as_deleted(), + data ) ) - self._status.modified() + self.modified() def delete_i(self, indexes): - for ind in indexes: - del self._data[ind] - self._status.modified() + list( + map( + lambda e: e[1].set_as_deleted(), + filter( + lambda e: e[0] in indexes, + enumerate(self._data) + ) + ) + ) + self.modified() def insert(self, index, data): - self._data.insert(index, data) - self._status.modified() + if data in self._data: + self.undelete([data]) + else: + self._data.insert(index, data) + + self.modified() + + def undelete(self, lst): + for x in lst: + x.set_as_not_deleted() + + self.modified() diff --git a/src/View/InitialConditionsAdisTS/Table.py b/src/View/InitialConditionsAdisTS/Table.py index 531ce00b..a926c961 100644 --- a/src/View/InitialConditionsAdisTS/Table.py +++ b/src/View/InitialConditionsAdisTS/Table.py @@ -117,7 +117,12 @@ class InitialConditionTableModel(PamhyrTableModel): self._data = data def _setup_lst(self): - self._lst = self._data._data + self._lst = list( + filter( + lambda ica: ica._deleted == False, + self._data._data + ) + ) def rowCount(self, parent): return len(self._lst) @@ -222,12 +227,18 @@ class InitialConditionTableModel(PamhyrTableModel): def delete(self, rows, parent=QModelIndex()): self.beginRemoveRows(parent, rows[0], rows[-1]) + data_rows = { + id(ica): i for i, ica in enumerate(self._data._data) + } self._undo.push( DelCommand( - self._data, self._lst, rows + self._data, + self._data._data, + [data_rows[id(self._lst[row])] for row in rows] ) ) + self._setup_lst() self.endRemoveRows() self.layoutChanged.emit() diff --git a/src/View/InitialConditionsAdisTS/UndoCommand.py b/src/View/InitialConditionsAdisTS/UndoCommand.py index 5ef0b50e..984be6e7 100644 --- a/src/View/InitialConditionsAdisTS/UndoCommand.py +++ b/src/View/InitialConditionsAdisTS/UndoCommand.py @@ -181,7 +181,6 @@ class DelCommand(QUndoCommand): self._data = data self._ics_spec = ics_spec self._rows = rows - # self._data = data self._ic = [] for row in rows: