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() return self.lst.copy()
def basic_structure(self, index: int): def basic_structure(self, index: int):
if len(self._data) == 0:
return None
return self.lst[index] return self.lst[index]
def add(self, index: int): def add(self, index: int):

View File

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

View File

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

View File

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