Browse Source

Slicing no longer occurs when stack is invalid

CURA-1998
Jaime van Kessel 8 years ago
parent
commit
a1bd8f59ed

+ 14 - 13
cura/Settings/MachineManager.py

@@ -26,7 +26,7 @@ class MachineManager(QObject):
         self._global_container_stack = None
 
         Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
-        self._global_stack_valid = None
+        self._active_stack_valid = None
         self._onGlobalContainerChanged()
 
         ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
@@ -74,7 +74,7 @@ class MachineManager(QObject):
     activeStackChanged = pyqtSignal()
 
     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
 
@@ -281,16 +281,17 @@ class MachineManager(QObject):
                     self._global_container_stack.getTop().setProperty(key, "value", new_value)
 
         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)
                 if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
-                    self._global_stack_valid = False
-                    self.globalValidationChanged.emit()
+                    self._active_stack_valid = False
+                    self.activeValidationChanged.emit()
             else:
                 has_errors = self._checkStackForErrors(self._active_container_stack)
                 if not has_errors:
-                    self._global_stack_valid = True
-                    self.globalValidationChanged.emit()
+                    self._active_stack_valid = True
+                    self.activeValidationChanged.emit()
+
     def _onGlobalContainerChanged(self):
         if self._global_container_stack:
             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.containersChanged.connect(self._onInstanceContainersChanged)
             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.nameChanged.connect(self._onMaterialNameChanged)
 
@@ -332,6 +331,8 @@ class MachineManager(QObject):
             self._active_container_stack.propertyChanged.connect(self._onGlobalPropertyChanged)
         else:
             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):
         container_type = container.getMetaDataEntry("type")
@@ -436,11 +437,11 @@ class MachineManager(QObject):
         return len(user_settings) != 0
 
     ##  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
-    @pyqtProperty(bool, notify = globalValidationChanged)
-    def isGlobalStackValid(self):
-        return bool(self._global_stack_valid)
+    @pyqtProperty(bool, notify = activeValidationChanged)
+    def isActiveStackValid(self):
+        return bool(self._active_stack_valid)
 
     @pyqtProperty(str, notify = activeStackChanged)
     def activeUserProfileId(self):

+ 1 - 1
plugins/CuraEngineBackend/CuraEngineBackend.py

@@ -117,7 +117,7 @@ class CuraEngineBackend(Backend):
     #   \return list of commands and args / parameters.
     def getEngineCommand(self):
         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.
     #   \param time The amount of time the print will take.

+ 1 - 1
plugins/CuraEngineBackend/StartSliceJob.py

@@ -71,7 +71,7 @@ class StartSliceJob(Job):
             return
 
         # 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)
             return
 

+ 2 - 2
resources/qml/Actions.qml

@@ -119,7 +119,7 @@ Item
     Action
     {
         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");
         onTriggered: Cura.MachineManager.updateQualityContainerFromUserContainer()
     }
@@ -135,7 +135,7 @@ Item
     Action
     {
         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...");
     }