geometry: Add feature to delete multiple line.

mesh
Pierre-Antoine Rouby 2023-04-21 09:49:55 +02:00
parent 02561be65c
commit f2d2ea9ffd
3 changed files with 26 additions and 14 deletions

View File

@ -93,7 +93,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.ui.btn_move_down.clicked.connect(self.move_row_down)
self.ui.btn_end_editing.clicked.connect(self.handleSave)
self.ui.btn_add.clicked.connect(self.insert_row)
self.ui.btn_delete.clicked.connect(self.delete_row)
self.ui.btn_delete.clicked.connect(self.delete_rows)
self.ui.btn_edit.clicked.connect(self.edit_profile)
self.ui.verticalSlider.valueChanged.connect(self.changed_slider_value)
@ -374,13 +374,17 @@ class GeometryWindow(QMainWindow, WindowToolKit):
row = self.index_selected_row()
self._tablemodel.insert_row(row + 1)
def delete_row(self):
rows = list(set(
def delete_rows(self):
rows = sorted(
list(
set(
[index.row() for index in self.tableView.selectedIndexes()]
))
)
)
)
if len(rows) > 0:
self._tablemodel.remove_row(rows[0])
self._tablemodel.remove_rows(rows)
self.update_plot_xy()
self.select_current_profile()

View File

@ -47,18 +47,26 @@ class AddCommand(QUndoCommand):
self._reach.insert(self._index)
class DelCommand(QUndoCommand):
def __init__(self, reach, index):
def __init__(self, reach, rows):
QUndoCommand.__init__(self)
self._reach = reach
self._index = index
self._profile = self._reach.profile(index)
self._rows = rows
self._profile = []
for row in rows:
self._profile.append(self._reach.profile(row))
self._profile.reverse()
def undo(self):
self._reach.insert_profile(self._index, self._profile)
row = self._rows[0]
for pro in self._profile:
self._reach.insert_profile(row, pro)
def redo(self):
self._reach.delete(self._index)
row = self._rows[0]
for _ in self._rows:
self._reach.delete(row)
class SortCommand(QUndoCommand):
def __init__(self, reach, _reverse):

View File

@ -152,12 +152,12 @@ class PandasModelEditable(QAbstractTableModel):
self.endInsertRows()
self.layoutChanged.emit()
def remove_row(self, row, parent=QModelIndex()):
self.beginRemoveRows(parent, row, row - 1)
def remove_rows(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1])
self._undo_stack.push(
DelCommand(
self._reach, row
self._reach, rows
)
)