mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 02:37:49 -06:00
Always listen to changes on all extruder stacks of the current machine
We need to listen for changes on all extruder stacks because the values might change and therefore the validation states might change. The value of a different extruder stack could change if you change a global value that has impact on a per-extruder value via inheritance, or in this case if a limit-to-extruder property specifies that the setting should be changed on a different stack. It could change on the stack that is not active in either case. This might have some performance impact, but it is very small. Other than layer_height there aren't many global settings that have impact on multiple extruders via inheritance. And via limit-to-extruder there will typically only be one changed value which you want to update for. Changing layer height will be a bit slower though. Contributes to issue CURA-3291.
This commit is contained in:
parent
362c5835ee
commit
a0ba1188a1
1 changed files with 10 additions and 7 deletions
|
@ -220,6 +220,11 @@ class MachineManager(QObject):
|
||||||
quality = self._global_container_stack.findContainer({"type": "quality"})
|
quality = self._global_container_stack.findContainer({"type": "quality"})
|
||||||
quality.nameChanged.disconnect(self._onQualityNameChanged)
|
quality.nameChanged.disconnect(self._onQualityNameChanged)
|
||||||
|
|
||||||
|
if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1:
|
||||||
|
for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks():
|
||||||
|
extruder_stack.propertyChanged.disconnect(self._onPropertyChanged)
|
||||||
|
extruder_stack.containersChanged.disconnect(self._onInstanceContainersChanged)
|
||||||
|
|
||||||
self._global_container_stack = Application.getInstance().getGlobalContainerStack()
|
self._global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
self._active_container_stack = self._global_container_stack
|
self._active_container_stack = self._global_container_stack
|
||||||
|
|
||||||
|
@ -243,6 +248,10 @@ class MachineManager(QObject):
|
||||||
if global_material != self._empty_material_container:
|
if global_material != self._empty_material_container:
|
||||||
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_material), self._empty_material_container)
|
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_material), self._empty_material_container)
|
||||||
|
|
||||||
|
for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): #Listen for changes on all extruder stacks.
|
||||||
|
extruder_stack.propertyChanged.connect(self._onPropertyChanged)
|
||||||
|
extruder_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
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)
|
||||||
|
@ -263,14 +272,8 @@ class MachineManager(QObject):
|
||||||
self.blurSettings.emit() # Ensure no-one has focus.
|
self.blurSettings.emit() # Ensure no-one has focus.
|
||||||
old_active_container_stack = self._active_container_stack
|
old_active_container_stack = self._active_container_stack
|
||||||
|
|
||||||
if self._active_container_stack and self._active_container_stack != self._global_container_stack:
|
|
||||||
self._active_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged)
|
|
||||||
self._active_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
|
|
||||||
self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
|
self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack()
|
||||||
if self._active_container_stack:
|
if not self._active_container_stack:
|
||||||
self._active_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
|
|
||||||
self._active_container_stack.propertyChanged.connect(self._onPropertyChanged)
|
|
||||||
else:
|
|
||||||
self._active_container_stack = self._global_container_stack
|
self._active_container_stack = self._global_container_stack
|
||||||
|
|
||||||
self._updateStacksHaveErrors()
|
self._updateStacksHaveErrors()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue