mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Moved function out of MachineManager, changed "Valid" to "HaveErrors".
CURA-2730
This commit is contained in:
parent
98688bf013
commit
d308cd45bc
4 changed files with 22 additions and 34 deletions
|
@ -34,7 +34,7 @@ class MachineManager(QObject):
|
||||||
self.globalContainerChanged.connect(self.activeVariantChanged)
|
self.globalContainerChanged.connect(self.activeVariantChanged)
|
||||||
self.globalContainerChanged.connect(self.activeQualityChanged)
|
self.globalContainerChanged.connect(self.activeQualityChanged)
|
||||||
|
|
||||||
self._stacks_valid = None
|
self._stacks_have_errors = None
|
||||||
self._onGlobalContainerChanged()
|
self._onGlobalContainerChanged()
|
||||||
|
|
||||||
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
|
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
|
||||||
|
@ -233,10 +233,10 @@ class MachineManager(QObject):
|
||||||
quality.nameChanged.connect(self._onQualityNameChanged)
|
quality.nameChanged.connect(self._onQualityNameChanged)
|
||||||
|
|
||||||
## Update self._stacks_valid according to _checkStacksForErrors and emit if change.
|
## Update self._stacks_valid according to _checkStacksForErrors and emit if change.
|
||||||
def _updateStacksValid(self):
|
def _updateStacksHaveErrors(self):
|
||||||
old_stacks_valid = self._stacks_valid
|
old_stacks_have_errors = self._stacks_have_errors
|
||||||
self._stacks_valid = self._checkStacksValid()
|
self._stacks_have_errors = self._checkStacksHaveErrors()
|
||||||
if old_stacks_valid != self._stacks_valid:
|
if old_stacks_have_errors != self._stacks_have_errors:
|
||||||
self.stacksValidationChanged.emit()
|
self.stacksValidationChanged.emit()
|
||||||
|
|
||||||
def _onActiveExtruderStackChanged(self):
|
def _onActiveExtruderStackChanged(self):
|
||||||
|
@ -254,7 +254,7 @@ class MachineManager(QObject):
|
||||||
else:
|
else:
|
||||||
self._active_container_stack = self._global_container_stack
|
self._active_container_stack = self._global_container_stack
|
||||||
|
|
||||||
self._updateStacksValid()
|
self._updateStacksHaveErrors()
|
||||||
|
|
||||||
if old_active_container_stack != self._active_container_stack:
|
if old_active_container_stack != self._active_container_stack:
|
||||||
# Many methods and properties related to the active quality actually depend
|
# Many methods and properties related to the active quality actually depend
|
||||||
|
@ -277,18 +277,18 @@ class MachineManager(QObject):
|
||||||
self.activeStackValueChanged.emit()
|
self.activeStackValueChanged.emit()
|
||||||
|
|
||||||
if property_name == "validationState":
|
if property_name == "validationState":
|
||||||
if self._stacks_valid:
|
if not self._stacks_have_errors:
|
||||||
# fast update, we only have to look at the current changed property
|
# fast update, we only have to look at the current changed property
|
||||||
if self._active_container_stack.getProperty(key, "settable_per_extruder"):
|
if self._active_container_stack.getProperty(key, "settable_per_extruder"):
|
||||||
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
|
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
|
||||||
else:
|
else:
|
||||||
changed_validation_state = self._global_container_stack.getProperty(key, property_name)
|
changed_validation_state = self._global_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._stacks_valid = False
|
self._stacks_have_errors = True
|
||||||
self.stacksValidationChanged.emit()
|
self.stacksValidationChanged.emit()
|
||||||
else:
|
else:
|
||||||
# Normal check
|
# Normal check
|
||||||
self._updateStacksValid()
|
self._updateStacksHaveErrors()
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setActiveMachine(self, stack_id):
|
def setActiveMachine(self, stack_id):
|
||||||
|
@ -342,30 +342,18 @@ class MachineManager(QObject):
|
||||||
def _createUniqueName(self, container_type, current_name, new_name, fallback_name):
|
def _createUniqueName(self, container_type, current_name, new_name, fallback_name):
|
||||||
return UM.Settings.ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name)
|
return UM.Settings.ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name)
|
||||||
|
|
||||||
## Convenience function to check if a stack is valid.
|
def _checkStacksHaveErrors(self):
|
||||||
def _checkStackValid(self, stack):
|
if self._global_container_stack is not None and self._global_container_stack.hasErrors():
|
||||||
if stack is None:
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
for key in stack.getAllKeys():
|
|
||||||
validation_state = stack.getProperty(key, "validationState")
|
|
||||||
if validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
## Return True if used stacks are valid.
|
|
||||||
def _checkStacksValid(self):
|
|
||||||
if not self._checkStackValid(self._global_container_stack):
|
|
||||||
return False
|
|
||||||
|
|
||||||
if self._global_container_stack is None:
|
if self._global_container_stack is None:
|
||||||
return True
|
return False
|
||||||
stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
|
stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
|
||||||
for stack in stacks:
|
for stack in stacks:
|
||||||
if not self._checkStackValid(stack):
|
if stack.hasErrors():
|
||||||
return False
|
return True
|
||||||
|
|
||||||
return True
|
return False
|
||||||
|
|
||||||
## Remove all instances from the top instanceContainer (effectively removing all user-changed settings)
|
## Remove all instances from the top instanceContainer (effectively removing all user-changed settings)
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
|
@ -425,11 +413,11 @@ class MachineManager(QObject):
|
||||||
container.sendPostponedEmits()
|
container.sendPostponedEmits()
|
||||||
|
|
||||||
## Check if none of the stacks contain error states
|
## Check if none of the stacks contain error states
|
||||||
# Note that the _stacks_valid is cached due to performance issues
|
# Note that the _stacks_have_errors is cached due to performance issues
|
||||||
# Calling _checkStack(s)ForErrors on every change is simply too expensive
|
# Calling _checkStack(s)ForErrors on every change is simply too expensive
|
||||||
@pyqtProperty(bool, notify = stacksValidationChanged)
|
@pyqtProperty(bool, notify = stacksValidationChanged)
|
||||||
def areStacksValid(self):
|
def stacksHaveErrors(self):
|
||||||
return bool(self._stacks_valid)
|
return bool(self._stacks_have_errors)
|
||||||
|
|
||||||
@pyqtProperty(str, notify = activeStackChanged)
|
@pyqtProperty(str, notify = activeStackChanged)
|
||||||
def activeUserProfileId(self):
|
def activeUserProfileId(self):
|
||||||
|
|
|
@ -75,7 +75,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 not Application.getInstance().getMachineManager().areStacksValid:
|
if Application.getInstance().getMachineManager().stacksHaveErrors:
|
||||||
self.setResult(StartJobResult.SettingError)
|
self.setResult(StartJobResult.SettingError)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ Item
|
||||||
Action
|
Action
|
||||||
{
|
{
|
||||||
id: updateProfileAction;
|
id: updateProfileAction;
|
||||||
enabled: Cura.MachineManager.areStacksValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
|
enabled: !Cura.MachineManager.stacksHaveErrors && 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.ContainerManager.updateQualityChanges();
|
onTriggered: Cura.ContainerManager.updateQualityChanges();
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ Item
|
||||||
Action
|
Action
|
||||||
{
|
{
|
||||||
id: addProfileAction;
|
id: addProfileAction;
|
||||||
enabled: Cura.MachineManager.areStacksValid && Cura.MachineManager.hasUserSettings
|
enabled: !Cura.MachineManager.stacksHaveErrors && 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...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ UM.ManagementPage
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
text: catalog.i18nc("@label", "Create")
|
text: catalog.i18nc("@label", "Create")
|
||||||
enabled: base.canCreateProfile() && Cura.MachineManager.areStacksValid
|
enabled: base.canCreateProfile() && !Cura.MachineManager.stacksHaveErrors
|
||||||
visible: base.canCreateProfile()
|
visible: base.canCreateProfile()
|
||||||
iconName: "list-add";
|
iconName: "list-add";
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue