mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Slicing no longer occurs when stack is invalid
CURA-1998
This commit is contained in:
parent
614d4bb21a
commit
a1bd8f59ed
4 changed files with 18 additions and 17 deletions
|
@ -26,7 +26,7 @@ class MachineManager(QObject):
|
||||||
self._global_container_stack = None
|
self._global_container_stack = None
|
||||||
|
|
||||||
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
||||||
self._global_stack_valid = None
|
self._active_stack_valid = None
|
||||||
self._onGlobalContainerChanged()
|
self._onGlobalContainerChanged()
|
||||||
|
|
||||||
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
|
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
|
||||||
|
@ -74,7 +74,7 @@ class MachineManager(QObject):
|
||||||
activeStackChanged = pyqtSignal()
|
activeStackChanged = pyqtSignal()
|
||||||
|
|
||||||
globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed.
|
globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed.
|
||||||
globalValidationChanged = pyqtSignal() # Emitted whenever a validation inside global container is changed
|
activeValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed
|
||||||
|
|
||||||
blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly
|
blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly
|
||||||
|
|
||||||
|
@ -281,16 +281,17 @@ class MachineManager(QObject):
|
||||||
self._global_container_stack.getTop().setProperty(key, "value", new_value)
|
self._global_container_stack.getTop().setProperty(key, "value", new_value)
|
||||||
|
|
||||||
if property_name == "validationState":
|
if property_name == "validationState":
|
||||||
if self._global_stack_valid:
|
if self._active_stack_valid:
|
||||||
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
|
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
|
||||||
if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
|
if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
|
||||||
self._global_stack_valid = False
|
self._active_stack_valid = False
|
||||||
self.globalValidationChanged.emit()
|
self.activeValidationChanged.emit()
|
||||||
else:
|
else:
|
||||||
has_errors = self._checkStackForErrors(self._active_container_stack)
|
has_errors = self._checkStackForErrors(self._active_container_stack)
|
||||||
if not has_errors:
|
if not has_errors:
|
||||||
self._global_stack_valid = True
|
self._active_stack_valid = True
|
||||||
self.globalValidationChanged.emit()
|
self.activeValidationChanged.emit()
|
||||||
|
|
||||||
def _onGlobalContainerChanged(self):
|
def _onGlobalContainerChanged(self):
|
||||||
if self._global_container_stack:
|
if self._global_container_stack:
|
||||||
self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged)
|
self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged)
|
||||||
|
@ -313,8 +314,6 @@ class MachineManager(QObject):
|
||||||
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
|
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
|
||||||
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
||||||
self._global_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged)
|
self._global_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged)
|
||||||
self._global_stack_valid = not self._checkStackForErrors(self._global_container_stack)
|
|
||||||
self.globalValidationChanged.emit()
|
|
||||||
material = self._global_container_stack.findContainer({"type": "material"})
|
material = self._global_container_stack.findContainer({"type": "material"})
|
||||||
material.nameChanged.connect(self._onMaterialNameChanged)
|
material.nameChanged.connect(self._onMaterialNameChanged)
|
||||||
|
|
||||||
|
@ -332,6 +331,8 @@ class MachineManager(QObject):
|
||||||
self._active_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged)
|
self._active_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged)
|
||||||
else:
|
else:
|
||||||
self._active_container_stack = self._global_container_stack
|
self._active_container_stack = self._global_container_stack
|
||||||
|
self._active_stack_valid = not self._checkStackForErrors(self._active_container_stack)
|
||||||
|
self.activeValidationChanged.emit()
|
||||||
|
|
||||||
def _onInstanceContainersChanged(self, container):
|
def _onInstanceContainersChanged(self, container):
|
||||||
container_type = container.getMetaDataEntry("type")
|
container_type = container.getMetaDataEntry("type")
|
||||||
|
@ -436,11 +437,11 @@ class MachineManager(QObject):
|
||||||
return len(user_settings) != 0
|
return len(user_settings) != 0
|
||||||
|
|
||||||
## Check if the global profile does not contain error states
|
## Check if the global profile does not contain error states
|
||||||
# Note that the _global_stack_valid is cached due to performance issues
|
# Note that the _active_stack_valid is cached due to performance issues
|
||||||
# Calling _checkStackForErrors on every change is simply too expensive
|
# Calling _checkStackForErrors on every change is simply too expensive
|
||||||
@pyqtProperty(bool, notify = globalValidationChanged)
|
@pyqtProperty(bool, notify = activeValidationChanged)
|
||||||
def isGlobalStackValid(self):
|
def isActiveStackValid(self):
|
||||||
return bool(self._global_stack_valid)
|
return bool(self._active_stack_valid)
|
||||||
|
|
||||||
@pyqtProperty(str, notify = activeStackChanged)
|
@pyqtProperty(str, notify = activeStackChanged)
|
||||||
def activeUserProfileId(self):
|
def activeUserProfileId(self):
|
||||||
|
|
|
@ -117,7 +117,7 @@ class CuraEngineBackend(Backend):
|
||||||
# \return list of commands and args / parameters.
|
# \return list of commands and args / parameters.
|
||||||
def getEngineCommand(self):
|
def getEngineCommand(self):
|
||||||
json_path = Resources.getPath(Resources.DefinitionContainers, "fdmprinter.def.json")
|
json_path = Resources.getPath(Resources.DefinitionContainers, "fdmprinter.def.json")
|
||||||
return [Preferences.getInstance().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), "-j", json_path, "-vv"]
|
return [Preferences.getInstance().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), "-j", json_path, ""]
|
||||||
|
|
||||||
## Emitted when we get a message containing print duration and material amount. This also implies the slicing has finished.
|
## Emitted when we get a message containing print duration and material amount. This also implies the slicing has finished.
|
||||||
# \param time The amount of time the print will take.
|
# \param time The amount of time the print will take.
|
||||||
|
|
|
@ -71,7 +71,7 @@ class StartSliceJob(Job):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Don't slice if there is a setting with an error value.
|
# Don't slice if there is a setting with an error value.
|
||||||
if self._checkStackForErrors(stack):
|
if not Application.getInstance().getMachineManager().isActiveStackValid:
|
||||||
self.setResult(StartJobResult.SettingError)
|
self.setResult(StartJobResult.SettingError)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ Item
|
||||||
Action
|
Action
|
||||||
{
|
{
|
||||||
id: updateProfileAction;
|
id: updateProfileAction;
|
||||||
enabled: Cura.MachineManager.isGlobalStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
|
enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
|
||||||
text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings");
|
text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings");
|
||||||
onTriggered: Cura.MachineManager.updateQualityContainerFromUserContainer()
|
onTriggered: Cura.MachineManager.updateQualityContainerFromUserContainer()
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ Item
|
||||||
Action
|
Action
|
||||||
{
|
{
|
||||||
id: addProfileAction;
|
id: addProfileAction;
|
||||||
enabled: Cura.MachineManager.isGlobalStackValid && Cura.MachineManager.hasUserSettings
|
enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings
|
||||||
text: catalog.i18nc("@action:inmenu menubar:profile","&Create profile from current settings...");
|
text: catalog.i18nc("@action:inmenu menubar:profile","&Create profile from current settings...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue