Pollutants: Fixed pollutant deletion removing the absolute index instead of the relative index

disable_edition_parent_scenario
Dylan Jeannin 2026-05-22 10:53:07 +02:00
parent 63b5cbaba7
commit ddbaa0fb94
1 changed files with 18 additions and 6 deletions

View File

@ -48,7 +48,12 @@ _translate = QCoreApplication.translate
class TableModel(PamhyrTableModel): class TableModel(PamhyrTableModel):
def _setup_lst(self): def _setup_lst(self):
self._lst = self._data._Pollutants self._lst = list(
filter(
lambda dif: dif._deleted is False,
self._data._Pollutants._lst
)
)
def rowCount(self, parent): def rowCount(self, parent):
return len(self._lst) return len(self._lst)
@ -61,7 +66,7 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
if self._headers[column] == "name": if self._headers[column] == "name":
return self._lst.get(row).name return self._lst[row].name
return QVariant() return QVariant()
@ -91,29 +96,36 @@ class TableModel(PamhyrTableModel):
self._undo.push( self._undo.push(
AddCommand( AddCommand(
self._lst, row, self._data.ic_adists self._data._Pollutants, row, self._data.ic_adists
) )
) )
self._setup_lst()
self.endInsertRows() self.endInsertRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def delete(self, rows, parent=QModelIndex()): def delete(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1]) self.beginRemoveRows(parent, rows[0], rows[-1])
data_rows = {
id(pol): i for i, pol in enumerate(self._data._Pollutants._lst)
}
self._undo.push( self._undo.push(
DelCommand( DelCommand(
self._lst, rows, self._data.ic_adists self._data._Pollutants,
[data_rows[id(self._lst[row])] for row in rows
if 0 <= row < len(self._lst)],
self._data.ic_adists
) )
) )
self._setup_lst()
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def enabled(self, row, enabled, parent=QModelIndex()): def enabled(self, row, enabled, parent=QModelIndex()):
self._undo.push( self._undo.push(
SetEnabledCommand( SetEnabledCommand(
self._lst, row, enabled self._data._Pollutants, row, enabled
) )
) )
self.layoutChanged.emit() self.layoutChanged.emit()