mirror of https://gitlab.com/pamhyr/pamhyr2
BHS: Fix undo commands.
parent
becc1696cb
commit
4cddd43f5a
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue