aboutsummaryrefslogtreecommitdiff
path: root/src/gui/actions.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/actions.py')
-rw-r--r--src/gui/actions.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/gui/actions.py b/src/gui/actions.py
new file mode 100644
index 0000000..5cf64e1
--- /dev/null
+++ b/src/gui/actions.py
@@ -0,0 +1,37 @@
+'''
+ QCommand classes for every undoable user action performed in the MainWindow
+'''
+from PyQt5.QtWidgets import QUndoCommand
+
+
+class RemoveComponent(QUndoCommand):
+ def __init__(self, parent, selectedRows):
+ super().__init__('Remove component')
+ self.parent = parent
+ componentList = self.parent.window.listWidget_componentList
+ self.selectedRows = [
+ componentList.row(selected) for selected in selectedRows
+ ]
+ self.components = [
+ parent.core.selectedComponents[i] for i in self.selectedRows
+ ]
+
+ def redo(self):
+ stackedWidget = self.parent.window.stackedWidget
+ componentList = self.parent.window.listWidget_componentList
+ for index in self.selectedRows:
+ stackedWidget.removeWidget(self.parent.pages[index])
+ componentList.takeItem(index)
+ self.parent.core.removeComponent(index)
+ self.parent.pages.pop(index)
+ self.parent.changeComponentWidget()
+ self.parent.drawPreview()
+
+ def undo(self):
+ componentList = self.parent.window.listWidget_componentList
+ for index, comp in zip(self.selectedRows, self.components):
+ self.parent.core.insertComponent(
+ index, comp, self.parent
+ )
+ self.parent.drawPreview()
+