geometry: Fix delete and paste command.

mesh
Pierre-Antoine Rouby 2023-04-25 16:16:12 +02:00
parent 8adad9b7ad
commit 9057860302
2 changed files with 45 additions and 9 deletions

View File

@ -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

View File

@ -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()