mirror of https://gitlab.com/pamhyr/pamhyr2
geometry: Prepare duplicate command.
parent
d35f26f362
commit
25b8ff6adf
|
|
@ -23,9 +23,6 @@ class Reach:
|
|||
self._guidelines_is_valid = False
|
||||
self._guidelines = {}
|
||||
|
||||
# Copy/Paste
|
||||
self.__list_copied_profiles = []
|
||||
|
||||
def profile(self, i):
|
||||
"""Returns profile at index i
|
||||
|
||||
|
|
|
|||
|
|
@ -367,6 +367,24 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self._tablemodel.move_row_down(row)
|
||||
self.select_current_profile()
|
||||
|
||||
def duplicate(self):
|
||||
rows = [
|
||||
row.row() for row in
|
||||
self.tableView.selectionModel().selectedRows()
|
||||
]
|
||||
|
||||
profiles = []
|
||||
for row in rows:
|
||||
profiles.append(
|
||||
self._reach.profile(row)
|
||||
)
|
||||
|
||||
if len(profiles) == 0:
|
||||
return
|
||||
|
||||
self._tablemodel.duplicate(rows, profiles)
|
||||
self.select_current_profile()
|
||||
|
||||
def copy(self):
|
||||
rows = self.tableView\
|
||||
.selectionModel()\
|
||||
|
|
|
|||
|
|
@ -128,14 +128,33 @@ class PasteCommand(QUndoCommand):
|
|||
profiles
|
||||
)
|
||||
)
|
||||
self._profiles.reverse()
|
||||
|
||||
def undo(self):
|
||||
self._reach.delete_profiles(self._profiles)
|
||||
|
||||
def redo(self):
|
||||
for profile in self._profiles:
|
||||
self._reach.insert_profile(self._row, profile)
|
||||
|
||||
|
||||
class DuplicateCommand(QUndoCommand):
|
||||
def __init__(self, reach, rows, profiles):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._reach = reach
|
||||
self._rows = rows
|
||||
self._profiles = list(
|
||||
map(
|
||||
lambda p: deepcopy(p),
|
||||
profiles
|
||||
)
|
||||
)
|
||||
self._profiles.reverse()
|
||||
|
||||
for pro in self._profiles:
|
||||
self._reach.insert_profile(self._row, pro)
|
||||
def undo(self):
|
||||
self._reach.delete_profiles(self._profiles)
|
||||
|
||||
self._profiles.reverse()
|
||||
def redo(self):
|
||||
for profile in self._profiles:
|
||||
self._reach.insert_profile(self._rows[0], profile)
|
||||
|
|
|
|||
|
|
@ -212,6 +212,20 @@ class TableEditableModel(QAbstractTableModel):
|
|||
self.endMoveRows()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def duplicate(self, rows, profiles):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
|
||||
self._undo_stack.push(
|
||||
DuplicateCommand(
|
||||
self._reach, rows,
|
||||
profiles
|
||||
)
|
||||
)
|
||||
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
|
||||
def paste(self, row, header, data):
|
||||
if row > self._reach.number_profiles:
|
||||
return
|
||||
|
|
|
|||
Loading…
Reference in New Issue