@@ -18,10 +18,11 @@ Item {
1818 property var nodeRepeater: null // Reference to nodeRepeater to find delegates
1919
2020 // Signals
21- signal computeRequest (var node)
22- signal stopComputeRequest (var node)
23- signal deleteDataRequest (var node)
24- signal submitRequest (var node)
21+ signal computeRequest (var node) // Start local computation
22+ signal stopComputeRequest (var node) // Stop local computation
23+ signal deleteDataRequest (var node) // Delete node data
24+ signal submitRequest (var node) // Start external computation (submission on farm)
25+ signal stopSubmitRequest (var node) // Stop external computation (interrupt tasks on farm)
2526
2627 SystemPalette { id: activePalette }
2728
@@ -120,7 +121,26 @@ Item {
120121 default : return MaterialIcons .send
121122 }
122123 }
124+ property string computeButtonTooltip: {
125+ switch (computeButtonState) {
126+ case NodeActions .ButtonState .STOPPABLE : return " Stop Compute"
127+ default : return " Start Compute"
128+ }
129+ }
130+
123131 property int submitButtonState: NodeActions .ButtonState .LAUNCHABLE
132+ property string submitButtonIcon: {
133+ switch (submitButtonState) {
134+ case NodeActions .ButtonState .STOPPABLE : return MaterialIcons .paragliding
135+ default : return MaterialIcons .rocket_launch
136+ }
137+ }
138+ property string submitButtonTooltip: {
139+ switch (submitButtonState) {
140+ case NodeActions .ButtonState .STOPPABLE : return " Interrupt Job on Render Farm"
141+ default : return " Submit on Render Farm"
142+ }
143+ }
124144
125145 function getComputeButtonState (node ) {
126146 if (actionHeader .canStopNode )
@@ -133,10 +153,10 @@ Item {
133153 }
134154
135155 function getSubmitButtonState (node ) {
136- if (actionHeader .nodeIsLocked || actionHeader . canStopNode )
137- return NodeActions .ButtonState .DISABLED
156+ if (actionHeader .canStopNode )
157+ return NodeActions .ButtonState .STOPPABLE
138158 if (! actionHeader .nodeIsLocked && node .globalStatus == " SUCCESS" )
139- return NodeActions .ButtonState .DISABLED
159+ return NodeActions .ButtonState .DELETABLE
140160 if (actionHeader .canSubmitNode )
141161 return NodeActions .ButtonState .LAUNCHABLE
142162 return NodeActions .ButtonState .DISABLED
@@ -205,13 +225,13 @@ Item {
205225 font .pointSize : 16
206226 text: actionHeader .computeButtonIcon
207227 padding: 6
208- ToolTip .text : " Start/Stop/Restart Compute "
228+ ToolTip .text : actionHeader . computeButtonTooltip
209229 ToolTip .visible : hovered
210230 ToolTip .delay : 1000
211231 visible: actionHeader .computeButtonState != NodeActions .ButtonState .DELETABLE
212- enabled: actionHeader .computeButtonState % 2 == 1 // Launchable & Stoppable
232+ enabled: actionHeader .computeButtonState % 2 == 1 && ! actionHeader . nodeSubmitted // Launchable & Stoppable, local
213233 // Icon color
214- textColor: ( ! enabled && actionHeader . nodeSubmitted ) ? Colors . statusColors [ " SUBMITTED " ] : ( checked ? palette .highlight : palette .text )
234+ textColor: checked ? palette .highlight : palette .text
215235 // Background color
216236 background: Rectangle {
217237 color: {
@@ -244,7 +264,7 @@ Item {
244264 font .pointSize : 16
245265 text: MaterialIcons .delete_
246266 padding: 6
247- ToolTip .text : " Delete data "
267+ ToolTip .text : " Delete Data "
248268 ToolTip .visible : hovered
249269 ToolTip .delay : 1000
250270 visible: actionHeader .canRestartNode || actionHeader .computeButtonState == NodeActions .ButtonState .DELETABLE
@@ -265,20 +285,23 @@ Item {
265285 MaterialToolButton {
266286 id: submitButton
267287 font .pointSize : 16
268- text: MaterialIcons . rocket_launch
288+ text: actionHeader . submitButtonIcon
269289 padding: 6
270- ToolTip .text : " Submit on Render Farm "
290+ ToolTip .text : actionHeader . submitButtonTooltip
271291 ToolTip .visible : hovered
272292 ToolTip .delay : 1000
273- visible: root . uigraph ? root . uigraph . canSubmit : false
274- enabled: actionHeader .submitButtonState != NodeActions . ButtonState . DISABLED
293+ visible: actionHeader . submitButtonState != NodeActions . ButtonState . DELETABLE
294+ enabled: actionHeader .submitButtonState % 2 == 1 && ( actionHeader . nodeSubmitted || ! actionHeader . nodeIsLocked ) // Launchable & Stoppable, external
275295 // Icon color
276- textColor: ( ! enabled && actionHeader . nodeSubmitted ) ? Colors . statusColors [ " SUBMITTED " ] : ( checked ? palette .highlight : palette .text )
296+ textColor: checked ? palette .highlight : palette .text
277297 // Background color
278298 background: Rectangle {
279299 color: {
280300 if (! submitButton .enabled )
281301 return activePalette .button
302+
303+ if (actionHeader .submitButtonState == NodeActions .ButtonState .STOPPABLE )
304+ return submitButton .hovered ? Colors .orange : Qt .darker (Colors .orange , 1.3 )
282305 return submitButton .hovered ? activePalette .highlight : activePalette .button
283306 }
284307 opacity: submitButton .hovered ? 1 : root ._opacity
@@ -287,8 +310,16 @@ Item {
287310 radius: 3
288311 }
289312 onClicked: {
290- if (actionHeader .selectedNode ) {
291- root .submitRequest (actionHeader .selectedNode )
313+ switch (actionHeader .submitButtonState ) {
314+ case NodeActions .ButtonState .STOPPABLE :
315+ root .stopSubmitRequest (actionHeader .selectedNode )
316+ break
317+ case NodeActions .ButtonState .LAUNCHABLE :
318+ root .submitRequest (actionHeader .selectedNode )
319+ actionHeader .updateProperties (actionHeader .selectedNode )
320+ break
321+ default :
322+ break
292323 }
293324 }
294325 }
0 commit comments