diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 0e0eec7277..86339b6795 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -48,14 +48,15 @@ Item { } function sliceOrStopSlicing() { - try { - if ([1, 5].indexOf(base.backendState) != -1) { - CuraApplication.backend.forceSlice(); - } else { - CuraApplication.backend.stopSlicing(); - } - } catch (e) { - console.log('Could not start or stop slicing', e) + if ( [ 1, 5 ].indexOf( base.backendState ) != -1 ) + { + prepareButton.preparingToSlice = true; + CuraApplication.backend.forceSlice(); + } + else + { + prepareButton.preparingToSlice = false; + CuraApplication.backend.stopSlicing(); } } @@ -167,10 +168,10 @@ Item { // Prepare button, only shows if auto_slice is off Button { id: prepareButton - + property bool preparingToSlice: false tooltip: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process") // 1 = not started, 2 = Processing - enabled: base.backendState != "undefined" && ([1, 2].indexOf(base.backendState) != -1) && base.activity + enabled: !preparingToSlice && base.backendState != "undefined" && ([1, 2].indexOf(base.backendState) != -1) && base.activity visible: base.backendState != "undefined" && !autoSlice && ([1, 2, 4].indexOf(base.backendState) != -1) && base.activity property bool autoSlice height: UM.Theme.getSize("save_button_save_to_button").height @@ -180,7 +181,23 @@ Item { anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width // 1 = not started, 4 = error, 5 = disabled - text: [1, 4, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel") + text: { + if ( preparingToSlice ) + { + return catalog.i18nc("@label:Printjob", "Preparing"); + } + else + { + if ( [ 1, 4, 5 ].indexOf( base.backendState ) != -1 ) + { + return catalog.i18nc("@label:Printjob", "Prepare"); + } + else + { + return catalog.i18nc("@label:Printjob", "Cancel") + } + } + } onClicked: { sliceOrStopSlicing(); @@ -237,6 +254,18 @@ Item { } label: Item { } } + + Connections { + target: UM.Backend + onStateChanged: + { + if ( [ 2, 3 ].indexOf( UM.Backend.state) != -1 ) + { + prepareButton.preparingToSlice = false; + } + + } + } } Button {