mirror of https://gitlab.com/pamhyr/pamhyr2
LC: Fix undo commands.
parent
794b06d55a
commit
cf4957551f
|
|
@ -284,6 +284,9 @@ class PamhyrModelListWithTab(SQLSubModel):
|
||||||
self._status.modified()
|
self._status.modified()
|
||||||
|
|
||||||
def get(self, lst, index):
|
def get(self, lst, index):
|
||||||
|
if len(self.get_tab(lst)) == 0:
|
||||||
|
return None
|
||||||
|
|
||||||
return self.get_tab(lst)[index]
|
return self.get_tab(lst)[index]
|
||||||
|
|
||||||
def new(self, lst, index):
|
def new(self, lst, index):
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,19 @@ class TableModel(PamhyrTableModel):
|
||||||
self._tab = self._opt_data
|
self._tab = self._opt_data
|
||||||
self._long_types = self._trad.get_dict("long_types")
|
self._long_types = self._trad.get_dict("long_types")
|
||||||
|
|
||||||
|
def get_true_data_row(self, row):
|
||||||
|
lc = self._lst.get(self._tab, row)
|
||||||
|
|
||||||
|
return next(
|
||||||
|
map(
|
||||||
|
lambda e: e[0],
|
||||||
|
filter(
|
||||||
|
lambda e: e[1] == lc,
|
||||||
|
enumerate(self._lst.get_tab(self._tab))
|
||||||
|
)
|
||||||
|
), 0
|
||||||
|
)
|
||||||
|
|
||||||
def rowCount(self, parent):
|
def rowCount(self, parent):
|
||||||
return self._lst.len(self._tab)
|
return self._lst.len(self._tab)
|
||||||
|
|
||||||
|
|
@ -227,6 +240,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, self._tab, row
|
self._lst, self._tab, row
|
||||||
|
|
@ -239,6 +254,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, self._tab, rows
|
self._lst, self._tab, rows
|
||||||
|
|
@ -264,10 +286,12 @@ class TableModel(PamhyrTableModel):
|
||||||
if row <= 0:
|
if row <= 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
target = row + 2
|
target = row + 1
|
||||||
|
|
||||||
self.beginMoveRows(parent, row - 1, row - 1, parent, target)
|
self.beginMoveRows(parent, row - 1, row - 1, parent, target)
|
||||||
|
|
||||||
|
row = self.get_true_data_row(row)
|
||||||
|
|
||||||
self._undo_stack.push(
|
self._undo_stack.push(
|
||||||
MoveCommand(
|
MoveCommand(
|
||||||
self._lst, self._tab, "up", row
|
self._lst, self._tab, "up", row
|
||||||
|
|
@ -285,6 +309,8 @@ class TableModel(PamhyrTableModel):
|
||||||
|
|
||||||
self.beginMoveRows(parent, row + 1, row + 1, parent, target)
|
self.beginMoveRows(parent, row + 1, row + 1, parent, target)
|
||||||
|
|
||||||
|
row = self.get_true_data_row(row)
|
||||||
|
|
||||||
self._undo_stack.push(
|
self._undo_stack.push(
|
||||||
MoveCommand(
|
MoveCommand(
|
||||||
self._lst, self._tab, "down", row
|
self._lst, self._tab, "down", row
|
||||||
|
|
|
||||||
|
|
@ -126,14 +126,13 @@ class AddCommand(QUndoCommand):
|
||||||
self._new = None
|
self._new = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._lcs.delete_i(self._tab, [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._lcs.new(self._tab, self._index)
|
self._new = self._lcs.new(self._tab, self._index)
|
||||||
else:
|
else:
|
||||||
self._lcs.insert(self._tab, self._index, self._new)
|
self._new.set_as_not_deleted()
|
||||||
|
|
||||||
|
|
||||||
class DelCommand(QUndoCommand):
|
class DelCommand(QUndoCommand):
|
||||||
def __init__(self, lcs, tab, rows):
|
def __init__(self, lcs, tab, rows):
|
||||||
|
|
@ -145,15 +144,16 @@ class DelCommand(QUndoCommand):
|
||||||
|
|
||||||
self._bc = []
|
self._bc = []
|
||||||
for row in rows:
|
for row in rows:
|
||||||
self._bc.append((row, self._lcs.get(self._tab, row)))
|
self._bc.append(self._lcs.get_tab(self._tab)[row])
|
||||||
self._bc.sort()
|
self._bc.sort()
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
for row, el in self._bc:
|
for el in self._bc:
|
||||||
self._lcs.insert(self._tab, row, el)
|
el.set_as_not_deleted()
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._lcs.delete_i(self._tab, self._rows)
|
for el in self._bc:
|
||||||
|
el.set_as_deleted()
|
||||||
|
|
||||||
|
|
||||||
class SortCommand(QUndoCommand):
|
class SortCommand(QUndoCommand):
|
||||||
|
|
@ -164,11 +164,11 @@ class SortCommand(QUndoCommand):
|
||||||
self._tab = tab
|
self._tab = tab
|
||||||
self._reverse = _reverse
|
self._reverse = _reverse
|
||||||
|
|
||||||
self._old = self._lcs.get_tab(self._tab)
|
self._old = self._lcs._tabs[self._tab].copy()
|
||||||
self._indexes = None
|
self._indexes = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
ll = self._lcs.get_tab(self._tab)
|
ll = self._lcs._tabs[self._tab].copy()
|
||||||
self._lcs.sort(
|
self._lcs.sort(
|
||||||
self._tab,
|
self._tab,
|
||||||
key=lambda x: self._indexes[ll.index(x)]
|
key=lambda x: self._indexes[ll.index(x)]
|
||||||
|
|
@ -180,11 +180,12 @@ class SortCommand(QUndoCommand):
|
||||||
reverse=self._reverse,
|
reverse=self._reverse,
|
||||||
key=lambda x: x.name
|
key=lambda x: x.name
|
||||||
)
|
)
|
||||||
|
|
||||||
if self._indexes is None:
|
if self._indexes is None:
|
||||||
self._indexes = list(
|
self._indexes = list(
|
||||||
map(
|
map(
|
||||||
lambda p: self._old.index(p),
|
lambda p: self._old.index(p),
|
||||||
self._lcs.get_tab(self._tab)
|
self._lcs._tabs[self._tab]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self._old = None
|
self._old = None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue