From 95a0c69662ec6ac7bd68bd2bd16055831297c7ae Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 2 Jun 2016 17:25:34 +0200 Subject: [PATCH] Bit of code refactoring to prevent duplication CURA-1288 --- plugins/CuraEngineBackend/StartSliceJob.py | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 0851261877..dee6f2b64c 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -51,6 +51,20 @@ class StartSliceJob(Job): def getSliceMessage(self): return self._slice_message + ## Check if a stack has any errors. + ## returns true if it has errors, false otherwise. + def _checkStackForErrors(self, stack): + if stack is None: + return False + + for key in stack.getAllKeys(): + validation_state = stack.getProperty(key, "validationState") + if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): + Logger.log("w", "Setting %s is not valid, but %s. Aborting slicing.", key, validation_state) + return True + Job.yieldThread() + return False + ## Runs the job that initiates the slicing. def run(self): stack = Application.getInstance().getGlobalContainerStack() @@ -59,30 +73,18 @@ class StartSliceJob(Job): return # Don't slice if there is a setting with an error value. - for key in stack.getAllKeys(): - validation_state = stack.getProperty(key, "validationState") - if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): - Logger.log("w", "Setting %s is not valid, but %s. Aborting slicing.", key, validation_state) - self.setResult(StartJobResult.SettingError) - return - - Job.yieldThread() + if self._checkStackForErrors(stack): + self.setResult(StartJobResult.SettingError) + return # Don't slice if there is a per object setting with an error value. for node in DepthFirstIterator(self._scene.getRoot()): if type(node) is not SceneNode or not node.isSelectable(): continue - node_stack = node.callDecoration("getStack") - if node_stack: - for key in node_stack.getAllKeys(): - validation_state = node_stack.getProperty(key, "validationState") - if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): - Logger.log("w", "Per object setting %s is not valid, but %s. Aborting slicing.", key, validation_state) - self.setResult(StartJobResult.SettingError) - return - - Job.yieldThread() + if self._checkStackForErrors(node.callDecoration("getStack")): + self.setResult(StartJobResult.SettingError) + return with self._scene.getSceneLock(): # Remove old layer data.