From 85f2a7c3853cd3bfcf500897f4849bea997adca3 Mon Sep 17 00:00:00 2001 From: "A.Sasin" Date: Tue, 17 Oct 2017 15:01:49 +0200 Subject: [PATCH] Added update to for Instance container to re calculate values and validate CURA-4447 --- cura/CuraApplication.py | 14 ++++++++++++++ cura/Settings/MachineManager.py | 11 ++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 27451c745c..22fbbafab3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -415,6 +415,20 @@ class CuraApplication(QtApplication): global_stack.getTop().clear() + # if the user decided to keep settings then the user settings should be re-calculated and validated for errors + # before slicing. To ensure that slicer uses right settings values + elif option == "keep": + global_stack = self.getGlobalContainerStack() + for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + user_extruder_container = extruder.getTop() + + if user_extruder_container: + user_extruder_container.update() + + user_global_container = global_stack.getTop() + if user_global_container: + user_global_container.update() + @pyqtSlot(int) def messageBoxClosed(self, button): if self._message_box_callback: diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 563965915a..e89e11898c 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -854,17 +854,18 @@ class MachineManager(QObject): self._replaceQualityOrQualityChangesInStack(stack, stack_quality, postpone_emit=True) self._replaceQualityOrQualityChangesInStack(stack, stack_quality_changes, postpone_emit=True) - # Send emits that are postponed in replaceContainer. - # Here the stacks are finished replacing and every value can be resolved based on the current state. - for setting_info in new_quality_settings_list: - setting_info["stack"].sendPostponedEmits() - # Connect to onQualityNameChanged for stack in name_changed_connect_stacks: stack.nameChanged.connect(self._onQualityNameChanged) if self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1: self._askUserToKeepOrClearCurrentSettings() + else: + # If the user doesn't have any of adjusted settings then slicing will be triggered by emit() + # Send emits that are postponed in replaceContainer. + # Here the stacks are finished replacing and every value can be resolved based on the current state. + for setting_info in new_quality_settings_list: + setting_info["stack"].sendPostponedEmits() self.activeQualityChanged.emit()