[ui] Graph: add removeSelectedNodes method

Add and use an explicit method to remove the currently selected nodes
in a graph.
This commit is contained in:
Yann Lanthony 2024-12-06 10:14:43 +01:00
parent 05eabb2b13
commit 686927a92d
3 changed files with 16 additions and 11 deletions

View file

@ -676,18 +676,23 @@ class UIGraph(QObject):
position = Position(node.x + offset.x(), node.y + offset.y())
self.moveNode(node, position)
@Slot(QObject)
def removeNodes(self, nodes):
@Slot()
def removeSelectedNodes(self):
"""Remove selected nodes from the graph."""
self.removeNodes(list(self.iterSelectedNodes()))
@Slot(list)
def removeNodes(self, nodes: list[Node]):
"""
Remove 'nodes' from the graph.
Args:
nodes (list[Node]): the nodes to remove
nodes: The nodes to remove.
"""
nodes = self.filterNodes(nodes)
if any([ n.locked for n in nodes ]):
if any(n.locked for n in nodes):
return
with self.groupedGraphModification("Remove Selected Nodes"):
with self.groupedGraphModification("Remove Nodes"):
for node in nodes:
self.push(commands.RemoveNodeCommand(self._graph, node))

View file

@ -541,7 +541,7 @@ Page {
enabled: _reconstruction ? _reconstruction.selectedNodes.count > 0 : false
onTriggered: {
graphEditor.copyNodes()
graphEditor.uigraph.removeNodes(graphEditor.uigraph.selectedNodes)
graphEditor.uigraph.removeSelectedNodes()
}
}

View file

@ -140,13 +140,13 @@ Item {
if (event.modifiers === Qt.AltModifier) {
uigraph.removeNodesFrom(uigraph.selectedNodes)
} else {
uigraph.removeNodes(uigraph.selectedNodes)
uigraph.removeSelectedNodes()
}
} else if (event.key === Qt.Key_D) {
duplicateNode(event.modifiers === Qt.AltModifier)
} else if (event.key === Qt.Key_X && event.modifiers === Qt.ControlModifier) {
copyNodes()
uigraph.removeNodes(uigraph.selectedNodes)
uigraph.removeSelectedNodes()
} else if (event.key === Qt.Key_C) {
if (event.modifiers === Qt.ControlModifier) {
copyNodes()
@ -685,7 +685,7 @@ Item {
ToolTip.visible: hovered
onTriggered: {
copyNodes()
uigraph.removeNodes(uigraph.selectedNodes)
uigraph.removeSelectedNodes()
}
}
MenuItem {
@ -726,7 +726,7 @@ Item {
MenuItem {
text: "Remove Node(s)" + (removeFollowingButton.hovered ? " From Here" : "")
enabled: nodeMenu.currentNode ? !nodeMenu.currentNode.locked : false
onTriggered: uigraph.removeNodes(uigraph.selectedNodes)
onTriggered: uigraph.removeSelectedNodes()
MaterialToolButton {
id: removeFollowingButton
height: parent.height