EngineBackend should trigger auto-slice on changes

CURA-4107

CuraEngineBackend should trigger auto-slice on value changes, not
changes on the active extruder.
This commit is contained in:
Lipu Fei 2017-08-01 09:39:33 +02:00
parent 96f8e70e40
commit 05879e0dfc

View file

@ -88,10 +88,6 @@ class CuraEngineBackend(QObject, Backend):
Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged)
self._onGlobalStackChanged() self._onGlobalStackChanged()
self._active_extruder_stack = None
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged)
self._onActiveExtruderChanged()
Application.getInstance().stacksValidationFinished.connect(self._onStackErrorCheckFinished) Application.getInstance().stacksValidationFinished.connect(self._onStackErrorCheckFinished)
# A flag indicating if an error check was scheduled # A flag indicating if an error check was scheduled
@ -622,6 +618,7 @@ class CuraEngineBackend(QObject, Backend):
for extruder in extruders: for extruder in extruders:
extruder.propertyChanged.disconnect(self._onSettingChanged) extruder.propertyChanged.disconnect(self._onSettingChanged)
extruder.containersChanged.disconnect(self._onChanged)
self._global_container_stack = Application.getInstance().getGlobalContainerStack() self._global_container_stack = Application.getInstance().getGlobalContainerStack()
@ -631,23 +628,9 @@ class CuraEngineBackend(QObject, Backend):
extruders = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())) extruders = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
for extruder in extruders: for extruder in extruders:
extruder.propertyChanged.connect(self._onSettingChanged) extruder.propertyChanged.connect(self._onSettingChanged)
self._onActiveExtruderChanged() extruder.containersChanged.connect(self._onChanged)
self._onChanged() self._onChanged()
def _onActiveExtruderChanged(self):
if self._global_container_stack:
# Connect all extruders of the active machine. This might cause a few connects that have already happend,
# but that shouldn't cause issues as only new / unique connections are added.
extruders = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
for extruder in extruders:
extruder.propertyChanged.connect(self._onSettingChanged)
if self._active_extruder_stack:
self._active_extruder_stack.containersChanged.disconnect(self._onChanged)
self._active_extruder_stack = ExtruderManager.getInstance().getActiveExtruderStack()
if self._active_extruder_stack:
self._active_extruder_stack.containersChanged.connect(self._onChanged)
def _onProcessLayersFinished(self, job): def _onProcessLayersFinished(self, job):
self._process_layers_job = None self._process_layers_job = None