mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
fix add/del/undo/redo in edit BoundaryConditionsAdisTS + quick fix in edit LateralContributionsAdisTS
This commit is contained in:
1 parent
99cb2883a1
commit
11e1302e05
6 files changed
+90
-19
No files matched your search
@@ -50,6 +50,22 @@ logger = logging.getLogger()
|
||||
|
||||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def get_true_data_row(self, row):
|
||||
if len(self._data.data) > 0:
|
||||
bc = self._data.data[row]
|
||||
else:
|
||||
return 0
|
||||
|
||||
return next(
|
||||
map(
|
||||
lambda e: e[0],
|
||||
filter(
|
||||
lambda e: e[1] == bc,
|
||||
enumerate(self._data._data)
|
||||
)
|
||||
), 0
|
||||
)
|
||||
|
||||
def data(self, index, role):
|
||||
if role == Qt.TextAlignmentRole:
|
||||
return Qt.AlignHCenter | Qt.AlignVCenter
|
||||
@@ -63,6 +79,7 @@ class TableModel(PamhyrTableModel):
|
||||
value = QVariant()
|
||||
|
||||
if 0 <= column < 2:
|
||||
row = self.get_true_data_row(row)
|
||||
v = self._data._data[row][column]
|
||||
if self._data._types[column] == float:
|
||||
value = f"{v:.4f}"
|
||||
@@ -84,6 +101,8 @@ class TableModel(PamhyrTableModel):
|
||||
column = index.column()
|
||||
|
||||
try:
|
||||
row = self.get_true_data_row(row)
|
||||
|
||||
self._undo.push(
|
||||
SetDataCommand(
|
||||
self._data, row, column, value
|
||||
@@ -110,14 +129,20 @@ 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
|
||||
self._data, _rows
|
||||
)
|
||||
)
|
||||
|
||||
self.endRemoveRows()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def sort(self, _reverse, parent=QModelIndex()):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
|
||||
@@ -80,10 +80,11 @@ class DelCommand(QUndoCommand):
|
||||
|
||||
def undo(self):
|
||||
for row, el in self._bc:
|
||||
self._data.insert(row, el)
|
||||
el.set_as_not_deleted()
|
||||
|
||||
def redo(self):
|
||||
self._data.delete_i(self._rows)
|
||||
for row, el in self._bc:
|
||||
el.set_as_deleted()
|
||||
|
||||
|
||||
class PasteCommand(QUndoCommand):
|
||||
|
||||
@@ -52,6 +52,23 @@ logger = logging.getLogger()
|
||||
|
||||
|
||||
class TableModel(PamhyrTableModel):
|
||||
def get_true_data_row(self, row):
|
||||
|
||||
if len(self._data.data) > 0:
|
||||
lc = self._data.data[row]
|
||||
else:
|
||||
return 0
|
||||
|
||||
return next(
|
||||
map(
|
||||
lambda e: e[0],
|
||||
filter(
|
||||
lambda e: e[1] == lc,
|
||||
enumerate(self._data._data)
|
||||
)
|
||||
), 0
|
||||
)
|
||||
|
||||
def data(self, index, role):
|
||||
if role == Qt.TextAlignmentRole:
|
||||
return Qt.AlignHCenter | Qt.AlignVCenter
|
||||
@@ -65,6 +82,7 @@ class TableModel(PamhyrTableModel):
|
||||
value = QVariant()
|
||||
|
||||
if 0 <= column < 2:
|
||||
row = self.get_true_data_row(row)
|
||||
v = self._data._data[row][column]
|
||||
if self._data._types[column] == float:
|
||||
value = f"{v:.4f}"
|
||||
@@ -86,6 +104,8 @@ class TableModel(PamhyrTableModel):
|
||||
column = index.column()
|
||||
|
||||
try:
|
||||
row = self.get_true_data_row(row)
|
||||
|
||||
self._undo.push(
|
||||
SetDataCommand(
|
||||
self._data, row, column, value
|
||||
@@ -113,10 +133,18 @@ 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
|
||||
self._data, _rows
|
||||
)
|
||||
)
|
||||
|
||||
self.endRemoveRows()
|
||||
self.layoutChanged.emit()
|
||||
@@ -76,8 +76,8 @@ class DelCommand(QUndoCommand):
|
||||
|
||||
def undo(self):
|
||||
for row, el in self._lc:
|
||||
self._data._data.insert(row, el)
|
||||
el.set_as_not_deleted()
|
||||
|
||||
def redo(self):
|
||||
for row in self._rows:
|
||||
del self._data._data[row]
|
||||
for row, el in self._lc:
|
||||
el.set_as_deleted()
|
||||
Reference in new issue
Block a user