BHS: Fix undo commands.

scenarios
Pierre-Antoine 2025-09-16 15:02:17 +02:00
parent becc1696cb
commit 4cddd43f5a
4 changed files with 49 additions and 8 deletions

View File

@ -425,6 +425,9 @@ class HydraulicStructure(SQLSubModel):
return self.lst.copy()
def basic_structure(self, index: int):
if len(self._data) == 0:
return None
return self.lst[index]
def add(self, index: int):

View File

@ -135,7 +135,8 @@ class TableModel(PamhyrTableModel):
self.beginRemoveRows(parent, rows[0], rows[-1])
rows = list(map(
lambda r: self.get_true_data_row(r), rows))
lambda r: self.get_true_data_row(r),
rows))
self._undo.push(
DelCommand(

View File

@ -104,6 +104,19 @@ class TableModel(PamhyrTableModel):
super(TableModel, self).__init__(trad=trad, **kwargs)
def get_true_data_row(self, row):
hs = self._data.basic_structure(row)
return next(
map(
lambda e: e[0],
filter(
lambda e: e[1] == hs,
enumerate(self._data.basic_structures)
)
), 0
)
def rowCount(self, parent):
return len(self._lst)
@ -170,6 +183,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
@ -182,6 +197,13 @@ class TableModel(PamhyrTableModel):
def delete(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1])
rows = list(
map(
lambda r: self.get_true_data_row(r),
rows
)
)
self._undo.push(
DelCommand(
self._data, rows
@ -192,6 +214,8 @@ class TableModel(PamhyrTableModel):
self.layoutChanged.emit()
def enabled(self, row, enabled, parent=QModelIndex()):
row = self.get_true_data_row(row)
self._undo.push(
SetEnabledCommand(
self._lst, row, enabled
@ -220,6 +244,19 @@ class ParametersTableModel(PamhyrTableModel):
super(ParametersTableModel, self).__init__(trad=trad, **kwargs)
def get_true_data_row(self, row):
par = self._lst.get(row)
return next(
map(
lambda e: e[0],
filter(
lambda e: e[1] == par,
enumerate(self._lst._lst)
)
), 0
)
def rowCount(self, parent):
if self._hs_index is None:
return 0

View File

@ -86,13 +86,13 @@ class AddCommand(QUndoCommand):
self._new = None
def undo(self):
self._hs.delete_i([self._index])
self._new.set_as_deleted()
def redo(self):
if self._new is None:
self._new = self._hs.add(self._index)
else:
self._hs.insert(self._index, self._new)
self._new.set_as_not_deleted()
class DelCommand(QUndoCommand):
@ -100,19 +100,19 @@ class DelCommand(QUndoCommand):
QUndoCommand.__init__(self)
self._hs = hs
self._rows = rows
self._bhs = []
for row in rows:
self._bhs.append((row, self._hs.basic_structure(row)))
self._bhs.append(self._hs.basic_structure(row))
def undo(self):
for row, el in self._bhs:
self._hs.insert(row, el)
for el in self._bhs:
el.set_as_not_deleted()
def redo(self):
self._hs.delete_i(self._rows)
for el in self._bhs:
el.set_as_deleted()
class PasteCommand(QUndoCommand):