mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 15:07:28 -06:00
Wait for FinishedSlicing message to mark slicing as finished
Instead of waiting until progress is more than 99%, wait for the dedicated FinishedSlicing message. Contributes to issue CURA-427.
This commit is contained in:
parent
c3eb810aa2
commit
c53969f1bd
2 changed files with 29 additions and 20 deletions
|
@ -9,6 +9,7 @@ from UM.Preferences import Preferences
|
|||
from UM.Math.Vector import Vector
|
||||
from UM.Signal import Signal
|
||||
from UM.Logger import Logger
|
||||
from UM.Qt.Bindings.BackendProxy import BackendState #To determine the state of the slicing job.
|
||||
from UM.Resources import Resources
|
||||
from UM.Settings.SettingOverrideDecorator import SettingOverrideDecorator
|
||||
from UM.Message import Message
|
||||
|
@ -66,6 +67,7 @@ class CuraEngineBackend(Backend):
|
|||
self._message_handlers[Cura_pb2.GCodeLayer] = self._onGCodeLayerMessage
|
||||
self._message_handlers[Cura_pb2.GCodePrefix] = self._onGCodePrefixMessage
|
||||
self._message_handlers[Cura_pb2.ObjectPrintTime] = self._onObjectPrintTimeMessage
|
||||
self._message_handlers[Cura_pb2.SlicingFinished] = self._onSlicingFinishedMessage
|
||||
|
||||
self._slicing = False
|
||||
self._restart = False
|
||||
|
@ -126,6 +128,7 @@ class CuraEngineBackend(Backend):
|
|||
return #No slicing if we have error values since those are by definition illegal values.
|
||||
|
||||
self.processingProgress.emit(0.0)
|
||||
self.backendStateChange.emit(BackendState.NOT_STARTED)
|
||||
if self._message:
|
||||
self._message.setProgress(-1)
|
||||
#else:
|
||||
|
@ -197,15 +200,10 @@ class CuraEngineBackend(Backend):
|
|||
self._message.setProgress(round(message.amount * 100))
|
||||
|
||||
self.processingProgress.emit(message.amount)
|
||||
self.backendStateChange.emit(BackendState.PROCESSING)
|
||||
|
||||
def _onGCodeLayerMessage(self, message):
|
||||
self._scene.gcode_list.append(message.data.decode("utf-8", "replace"))
|
||||
|
||||
def _onGCodePrefixMessage(self, message):
|
||||
self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace"))
|
||||
|
||||
def _onObjectPrintTimeMessage(self, message):
|
||||
self.printDurationMessage.emit(message.time, message.material_amount)
|
||||
def _onSlicingFinishedMessage(self, message):
|
||||
self.backendStateChange.emit(BackendState.DONE)
|
||||
self.processingProgress.emit(1.0)
|
||||
|
||||
self._slicing = False
|
||||
|
@ -215,12 +213,21 @@ class CuraEngineBackend(Backend):
|
|||
self._message.hide()
|
||||
self._message = None
|
||||
|
||||
if self._always_restart:
|
||||
try:
|
||||
self._process.terminate()
|
||||
self._createSocket()
|
||||
except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
||||
pass
|
||||
#if self._always_restart:
|
||||
#try:
|
||||
#self._process.terminate()
|
||||
#self._createSocket()
|
||||
#except: # terminating a process that is already terminating causes an exception, silently ignore this.
|
||||
#pass
|
||||
|
||||
def _onGCodeLayerMessage(self, message):
|
||||
self._scene.gcode_list.append(message.data.decode("utf-8", "replace"))
|
||||
|
||||
def _onGCodePrefixMessage(self, message):
|
||||
self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace"))
|
||||
|
||||
def _onObjectPrintTimeMessage(self, message):
|
||||
self.printDurationMessage.emit(message.time, message.material_amount)
|
||||
|
||||
def _createSocket(self):
|
||||
super()._createSocket()
|
||||
|
@ -232,6 +239,7 @@ class CuraEngineBackend(Backend):
|
|||
self._socket.registerMessageType(5, Cura_pb2.ObjectPrintTime)
|
||||
self._socket.registerMessageType(6, Cura_pb2.SettingList)
|
||||
self._socket.registerMessageType(7, Cura_pb2.GCodePrefix)
|
||||
self._socket.registerMessageType(8, Cura_pb2.SlicingFinished)
|
||||
|
||||
## Manually triggers a reslice
|
||||
def forceSlice(self):
|
||||
|
|
|
@ -13,18 +13,19 @@ Rectangle {
|
|||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
|
||||
property real progress: UM.Backend.progress;
|
||||
property int backendState: UM.Backend.state;
|
||||
property bool activity: Printer.getPlatformActivity;
|
||||
//Behavior on progress { NumberAnimation { duration: 250; } }
|
||||
property int totalHeight: childrenRect.height + UM.Theme.sizes.default_margin.height
|
||||
property string fileBaseName
|
||||
property string statusText: {
|
||||
if(progress == 0) {
|
||||
if(base.backendState == 0) {
|
||||
if(!activity) {
|
||||
return catalog.i18nc("@label:PrintjobStatus","Please load a 3d model");
|
||||
} else {
|
||||
return catalog.i18nc("@label:PrintjobStatus","Preparing to slice...");
|
||||
}
|
||||
} else if(base.progress < 0.99) {
|
||||
} else if(base.backendState == 1) {
|
||||
return catalog.i18nc("@label:PrintjobStatus","Slicing...");
|
||||
} else {
|
||||
return catalog.i18nc("@label:PrintjobStatus","Ready to ") + UM.OutputDeviceManager.activeDeviceShortDescription;
|
||||
|
@ -59,7 +60,7 @@ Rectangle {
|
|||
height: parent.height
|
||||
color: UM.Theme.colors.progressbar_control
|
||||
radius: UM.Theme.sizes.progressbar_radius.width
|
||||
visible: base.progress > 0.99 ? false : true
|
||||
visible: base.backendState == 1 ? true : false
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -76,7 +77,7 @@ Rectangle {
|
|||
property int resizedWidth
|
||||
x: base.width - saveToButton.resizedWidth - UM.Theme.sizes.default_margin.width - UM.Theme.sizes.save_button_save_to_button.height + UM.Theme.sizes.save_button_save_to_button.width
|
||||
tooltip: UM.OutputDeviceManager.activeDeviceDescription;
|
||||
enabled: base.progress > 0.99 && base.activity == true
|
||||
enabled: base.backendState == 2 && base.activity == true
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
width: 150
|
||||
anchors.top:parent.top
|
||||
|
@ -125,7 +126,7 @@ Rectangle {
|
|||
anchors.rightMargin: UM.Theme.sizes.default_margin.width
|
||||
width: UM.Theme.sizes.save_button_save_to_button.height
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
enabled: base.progress > 0.99 && base.activity == true
|
||||
enabled: base.backendState == 2 && base.activity == true
|
||||
//iconSource: UM.Theme.icons[UM.OutputDeviceManager.activeDeviceIconName];
|
||||
|
||||
style: ButtonStyle {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue