Skip to content

Commit 4f96f9d

Browse files
committed
[ui] NodeActions: Add Retry button for submitted tasks on error state
1 parent 67a67b0 commit 4f96f9d

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

meshroom/ui/qml/Controls/NodeActions.qml

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Item {
2323
signal deleteDataRequest(var node) // Delete node data
2424
signal submitRequest(var node) // Start external computation (submission on farm)
2525
signal stopSubmitRequest(var node) // Stop external computation (interrupt tasks on farm)
26+
signal retrySubmitRequest(var node) // Retry error tasks on farm
2627

2728
SystemPalette { id: activePalette }
2829

@@ -110,9 +111,10 @@ Item {
110111
property bool nodeIsLocked: false
111112
property bool canComputeNode: false
112113
property bool canStopNode: false
113-
property bool canRestartNode: false
114+
property bool canRestartNode: false // Node can be restarted, locally or externally
114115
property bool canSubmitNode: false
115116
property bool nodeSubmitted: false
117+
property bool canRetryNode: false // Error tasks can be restarted for external node
116118

117119
property int computeButtonState: NodeActions.ButtonState.LAUNCHABLE
118120
property string computeButtonIcon: {
@@ -171,6 +173,10 @@ Item {
171173
["ERROR", "STOPPED", "KILLED"].includes(node.globalStatus)
172174
}
173175

176+
function isNodeRetriable(node) {
177+
return node.globalExecMode == "EXTERN" && ["ERROR", "STOPPED", "KILLED"].includes(node.globalStatus)
178+
}
179+
174180
function updateProperties(node) {
175181
if (!node) return
176182
// Update properties values
@@ -183,6 +189,7 @@ Item {
183189
actionHeader.computeButtonState = getComputeButtonState(node)
184190
actionHeader.submitButtonState = getSubmitButtonState(node)
185191
actionHeader.canRestartNode = isNodeRestartable(node)
192+
actionHeader.canRetryNode = isNodeRetriable(node)
186193
}
187194

188195
// Set initial state & position
@@ -323,6 +330,34 @@ Item {
323330
}
324331
}
325332
}
333+
334+
// Retry button (for farm submissions that have failed)
335+
MaterialToolButton {
336+
id: retryButton
337+
font.pointSize: 16
338+
text: MaterialIcons.cloud_sync
339+
padding: 6
340+
ToolTip.text: "Retry Submission On Render Farm"
341+
ToolTip.visible: hovered
342+
ToolTip.delay: 1000
343+
visible: actionHeader.canRetryNode
344+
enabled: visible
345+
346+
// Background color
347+
background: Rectangle {
348+
color: {
349+
return retryButton.hovered ? activePalette.highlight : activePalette.button
350+
}
351+
opacity: retryButton.hovered ? 1 : root._opacity
352+
border.color: retryButton.hovered ? activePalette.highlight : Qt.darker(activePalette.window, 1.3)
353+
border.width: 1
354+
radius: 3
355+
}
356+
357+
onClicked: {
358+
root.retrySubmitRequest(actionHeader.selectedNode)
359+
}
360+
}
326361
}
327362
}
328363
}

meshroom/ui/qml/GraphEditor/GraphEditor.qml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,9 @@ Item {
11081108
}
11091109
}
11101110

1111+
onRetrySubmitRequest: function(node) {
1112+
uigraph.restartJobErrorTasks(node)
1113+
}
11111114
}
11121115

11131116
MessageDialog {

0 commit comments

Comments
 (0)