mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-05-23 14:06:28 +02:00
[ui] Graph: stop and cancel node computation
This commit is contained in:
parent
b71832ebbd
commit
f41565f26b
2 changed files with 45 additions and 0 deletions
|
@ -389,6 +389,37 @@ class UIGraph(QObject):
|
||||||
self._taskManager._thread.join()
|
self._taskManager._thread.join()
|
||||||
self.computeStatusChanged.emit()
|
self.computeStatusChanged.emit()
|
||||||
|
|
||||||
|
@Slot(Node)
|
||||||
|
def stopNodeComputation(self, node):
|
||||||
|
""" Stop the computation of the node and update all the nodes depending on it. """
|
||||||
|
if not self.isComputingLocally():
|
||||||
|
return
|
||||||
|
|
||||||
|
# Stop the node and wait Task Manager
|
||||||
|
node.stopComputation()
|
||||||
|
self._taskManager._thread.join()
|
||||||
|
|
||||||
|
# If some dependent nodes are submitted, the first one will be in error
|
||||||
|
# Make sure to remove those nodes from the Task Manager list
|
||||||
|
dependentNodes = self._graph.nodesDependingOnNode(node)
|
||||||
|
for node in dependentNodes[1:]: # exclude current node
|
||||||
|
if node.getGlobalStatus() == Status.ERROR:
|
||||||
|
node.upgradeStatusTo(Status.NONE)
|
||||||
|
self._taskManager.removeNode(node)
|
||||||
|
|
||||||
|
self.computeStatusChanged.emit()
|
||||||
|
|
||||||
|
@Slot(Node)
|
||||||
|
def cancelNodeComputation(self, node):
|
||||||
|
""" Cancel the computation of the node and all the nodes depending on it. """
|
||||||
|
if node.getGlobalStatus() == Status.SUBMITTED:
|
||||||
|
# Current node belongs to this list
|
||||||
|
for node in self._graph.nodesDependingOnNode(node):
|
||||||
|
# Status from SUBMITTED to NONE
|
||||||
|
node.clearSubmittedChunks()
|
||||||
|
# Make sure to remove the node from the Task Manager list
|
||||||
|
self._taskManager.removeNode(node)
|
||||||
|
|
||||||
@Slot(Node)
|
@Slot(Node)
|
||||||
def submit(self, node=None):
|
def submit(self, node=None):
|
||||||
""" Submit the graph to the default Submitter.
|
""" Submit the graph to the default Submitter.
|
||||||
|
|
|
@ -289,6 +289,20 @@ Item {
|
||||||
height: visible ? implicitHeight : 0
|
height: visible ? implicitHeight : 0
|
||||||
onTriggered: submitRequest(nodeMenu.currentNode)
|
onTriggered: submitRequest(nodeMenu.currentNode)
|
||||||
}
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: "Stop Computation"
|
||||||
|
enabled: nodeMenu.currentNode ? nodeMenu.currentNode.globalStatus === "RUNNING" && nodeMenu.currentNode.globalExecMode === "LOCAL" : false
|
||||||
|
visible: enabled
|
||||||
|
height: visible ? implicitHeight : 0
|
||||||
|
onTriggered: uigraph.stopNodeComputation(nodeMenu.currentNode)
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: "Cancel Computation"
|
||||||
|
enabled: nodeMenu.currentNode ? nodeMenu.currentNode.globalStatus === "SUBMITTED" && nodeMenu.currentNode.globalExecMode === "LOCAL" : false
|
||||||
|
visible: enabled
|
||||||
|
height: visible ? implicitHeight : 0
|
||||||
|
onTriggered: uigraph.cancelNodeComputation(nodeMenu.currentNode)
|
||||||
|
}
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: "Open Folder"
|
text: "Open Folder"
|
||||||
onTriggered: Qt.openUrlExternally(Filepath.stringToUrl(nodeMenu.currentNode.internalFolder))
|
onTriggered: Qt.openUrlExternally(Filepath.stringToUrl(nodeMenu.currentNode.internalFolder))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue