mirror of https://gitlab.com/pamhyr/pamhyr2
HS: Fix undo commands.
parent
cf4957551f
commit
becc1696cb
|
|
@ -83,6 +83,9 @@ class PamhyrModelList(SQLSubModel):
|
||||||
return self.lst.index(el)
|
return self.lst.index(el)
|
||||||
|
|
||||||
def get(self, index):
|
def get(self, index):
|
||||||
|
if len(self._lst) == 0:
|
||||||
|
return None
|
||||||
|
|
||||||
return self.lst[index]
|
return self.lst[index]
|
||||||
|
|
||||||
def set(self, index, new):
|
def set(self, index, new):
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,19 @@ class TableModel(PamhyrTableModel):
|
||||||
def _setup_lst(self):
|
def _setup_lst(self):
|
||||||
self._lst = self._data._hydraulic_structures
|
self._lst = self._data._hydraulic_structures
|
||||||
|
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
hs = self._lst.get(row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == hs,
|
||||||
|
enumerate(self._lst._lst)
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def rowCount(self, parent):
|
def rowCount(self, parent):
|
||||||
return len(self._lst)
|
return len(self._lst)
|
||||||
|
|
||||||
|
|
@ -195,6 +208,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._lst, row
|
self._lst, row
|
||||||
|
|
@ -207,6 +222,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._lst, rows
|
self._lst, rows
|
||||||
|
|
@ -217,6 +239,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
|
||||||
|
|
|
||||||
|
|
@ -110,13 +110,13 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._h_s_lst.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._h_s_lst.new(self._h_s_lst, self._index)
|
self._new = self._h_s_lst.new(self._h_s_lst, self._index)
|
||||||
else:
|
else:
|
||||||
self._h_s_lst.undelete([self._new])
|
self._new.set_as_not_deleted()
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
|
|
@ -124,19 +124,19 @@ class DelCommand(QUndoCommand):
|
||||||
QUndoCommand.__init__(self)
|
QUndoCommand.__init__(self)
|
||||||
|
|
||||||
self._h_s_lst = h_s_lst
|
self._h_s_lst = h_s_lst
|
||||||
|
|
||||||
self._rows = rows
|
self._rows = rows
|
||||||
|
|
||||||
self._h_s = []
|
self._h_s = []
|
||||||
for row in rows:
|
for row in rows:
|
||||||
self._h_s.append(self._h_s_lst.get(row))
|
self._h_s.append(self._h_s_lst._lst[row])
|
||||||
self._h_s.sort()
|
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._h_s_lst.undelete(self._h_s)
|
for hs in self._h_s:
|
||||||
|
hs.set_as_not_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._h_s_lst.delete_i(self._rows)
|
for hs in self._h_s:
|
||||||
|
hs.set_as_deleted()
|
||||||
|
|
||||||
|
|
||||||
class PasteCommand(QUndoCommand):
|
class PasteCommand(QUndoCommand):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue