mirror of https://gitlab.com/pamhyr/pamhyr2
geometry: Fix delete and paste command.
parent
8adad9b7ad
commit
9057860302
|
|
@ -99,18 +99,51 @@ class Reach:
|
|||
self._update_profile_numbers()
|
||||
|
||||
|
||||
def delete(self, index: int):
|
||||
def delete(self, indexes):
|
||||
"""Delete some elements in profile list
|
||||
|
||||
Args:
|
||||
index: The index to delete
|
||||
indexes: The list of index to delete
|
||||
|
||||
Returns:
|
||||
Nothing.
|
||||
"""
|
||||
self._profiles.pop(index)
|
||||
profiles = set(
|
||||
map(
|
||||
lambda e: e[1],
|
||||
filter(
|
||||
lambda e: e[0] in indexes,
|
||||
enumerate(self.profiles)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
self._profiles = list(
|
||||
filter(
|
||||
lambda p: p not in profiles,
|
||||
self.profiles
|
||||
)
|
||||
)
|
||||
self._update_profile_numbers()
|
||||
|
||||
def delete_profiles(self, profiles):
|
||||
"""Delete some elements in profile list
|
||||
|
||||
Args:
|
||||
profiles: The list of profile to delete
|
||||
|
||||
Returns:
|
||||
Nothing.
|
||||
"""
|
||||
self._profiles = list(
|
||||
filter(
|
||||
lambda p: p not in profiles,
|
||||
self.profiles
|
||||
)
|
||||
)
|
||||
self._update_profile_numbers()
|
||||
|
||||
|
||||
def move_up_profile(self, index: int):
|
||||
if index < len(self.profiles):
|
||||
next = index - 1
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from copy import deepcopy
|
||||
from tools import trace, timer
|
||||
|
||||
from PyQt5.QtWidgets import (
|
||||
|
|
@ -64,9 +65,7 @@ class DelCommand(QUndoCommand):
|
|||
self._reach.insert_profile(row, pro)
|
||||
|
||||
def redo(self):
|
||||
row = self._rows[0]
|
||||
for _ in self._rows:
|
||||
self._reach.delete(row)
|
||||
self._reach.delete(self._rows)
|
||||
|
||||
class SortCommand(QUndoCommand):
|
||||
def __init__(self, reach, _reverse):
|
||||
|
|
@ -120,11 +119,15 @@ class PasteCommand(QUndoCommand):
|
|||
|
||||
self._reach = reach
|
||||
self._row = row
|
||||
self._profiles = profiles
|
||||
self._profiles = list(
|
||||
map(
|
||||
lambda p: deepcopy(p),
|
||||
profiles
|
||||
)
|
||||
)
|
||||
|
||||
def undo(self):
|
||||
for ind in range(len(self._profiles)):
|
||||
self._reach.delete(self._row)
|
||||
self._reach.delete_profiles(self._profiles)
|
||||
|
||||
def redo(self):
|
||||
self._profiles.reverse()
|
||||
|
|
|
|||
Loading…
Reference in New Issue