mirror of https://gitlab.com/pamhyr/pamhyr2
Reservoir: Fix index for add and delete undo command.
parent
89a5d78ced
commit
05f3f0fc7e
|
|
@ -38,7 +38,7 @@ from View.Tools.PamhyrTable import PamhyrTableModel
|
|||
|
||||
from View.Reservoir.UndoCommand import (
|
||||
SetNameCommand, SetNodeCommand,
|
||||
AddCommand, DelCommand, PasteCommand,
|
||||
AddCommand, DelCommand,
|
||||
)
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
|
@ -103,6 +103,19 @@ class TableModel(PamhyrTableModel):
|
|||
def _setup_lst(self):
|
||||
self._lst = self._data.reservoir
|
||||
|
||||
def get_true_data_row(self, row):
|
||||
resvervoir = self._lst.get(row)
|
||||
|
||||
return next(
|
||||
map(
|
||||
lambda e: e[0],
|
||||
filter(
|
||||
lambda e: e[1] == resvervoir,
|
||||
enumerate(self._lst.lst)
|
||||
)
|
||||
), 0
|
||||
)
|
||||
|
||||
def rowCount(self, parent):
|
||||
return len(self._lst)
|
||||
|
||||
|
|
@ -153,6 +166,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._lst, row
|
||||
|
|
@ -167,7 +182,12 @@ class TableModel(PamhyrTableModel):
|
|||
|
||||
self._undo.push(
|
||||
DelCommand(
|
||||
self._lst, rows
|
||||
self._lst, list(
|
||||
map(
|
||||
lambda r: self._lst.get(r),
|
||||
rows
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -76,7 +76,8 @@ class AddCommand(QUndoCommand):
|
|||
self._new = None
|
||||
|
||||
def undo(self):
|
||||
self._reservoir_lst.delete_i([self._index])
|
||||
self._new.set_as_deleted()
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
def redo(self):
|
||||
if self._new is None:
|
||||
|
|
@ -84,6 +85,8 @@ class AddCommand(QUndoCommand):
|
|||
else:
|
||||
self._reservoir_lst.insert(self._index, self._new)
|
||||
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
|
||||
class AddAndAssociateCommand(QUndoCommand):
|
||||
def __init__(self, reservoir_lst, index, node):
|
||||
|
|
@ -96,7 +99,8 @@ class AddAndAssociateCommand(QUndoCommand):
|
|||
self._node = node
|
||||
|
||||
def undo(self):
|
||||
self._reservoir_lst.delete_i([self._index])
|
||||
self._reservoir_lst.delete(self._new)
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
def redo(self):
|
||||
if self._new is None:
|
||||
|
|
@ -105,45 +109,44 @@ class AddAndAssociateCommand(QUndoCommand):
|
|||
self._reservoir_lst.insert(self._index, self._new)
|
||||
|
||||
self._reservoir_lst.get(self._index).node = self._node
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
|
||||
class DelCommand(QUndoCommand):
|
||||
def __init__(self, reservoir_lst, rows):
|
||||
def __init__(self, reservoir_lst, reservoirs):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._reservoir_lst = reservoir_lst
|
||||
|
||||
self._rows = rows
|
||||
|
||||
self._reservoir = []
|
||||
for row in rows:
|
||||
self._reservoir.append((row, self._reservoir_lst.get(row)))
|
||||
self._reservoir.sort()
|
||||
self._reservoirs = reservoirs
|
||||
|
||||
def undo(self):
|
||||
for row, el in self._reservoir:
|
||||
self._reservoir_lst.insert(row, el)
|
||||
for reservoir in self._reservoirs:
|
||||
reservoir.set_as_not_deleted()
|
||||
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
def redo(self):
|
||||
self._reservoir_lst.delete_i(self._rows)
|
||||
for reservoir in self._reservoirs:
|
||||
reservoir.set_as_deleted()
|
||||
|
||||
self._reservoir_lst.modified()
|
||||
|
||||
class PasteCommand(QUndoCommand):
|
||||
def __init__(self, reservoir_lst, row, reservoir):
|
||||
QUndoCommand.__init__(self)
|
||||
# class PasteCommand(QUndoCommand):
|
||||
# def __init__(self, reservoir_lst, row, reservoir):
|
||||
# QUndoCommand.__init__(self)
|
||||
|
||||
self._reservoir_lst = reservoir_lst
|
||||
# self._reservoir_lst = reservoir_lst
|
||||
|
||||
self._row = row
|
||||
self._reservoir = deepcopy(reservoir)
|
||||
self._reservoir.reverse()
|
||||
# self._row = row
|
||||
# self._reservoir = deepcopy(reservoir)
|
||||
# self._reservoir.reverse()
|
||||
|
||||
def undo(self):
|
||||
self._reservoir_lst.delete_i(
|
||||
self._tab,
|
||||
range(self._row, self._row + len(self._reservoir))
|
||||
)
|
||||
# def undo(self):
|
||||
# self._reservoir_lst.delete_i(
|
||||
# self._tab,
|
||||
# range(self._row, self._row + len(self._reservoir))
|
||||
# )
|
||||
|
||||
def redo(self):
|
||||
for r in self._reservoir:
|
||||
self._reservoir_lst.insert(self._row, r)
|
||||
# def redo(self):
|
||||
# for r in self._reservoir:
|
||||
# self._reservoir_lst.insert(self._row, r)
|
||||
|
|
|
|||
Loading…
Reference in New Issue