mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 10:47:49 -06:00
Revert "Update SettingOverrideDecorator upon extruder enabled/disabled"
CURA-5456
This reverts commit 7a6e711276
.
This commit is contained in:
parent
880e098031
commit
b0b4f78cf2
1 changed files with 18 additions and 34 deletions
|
@ -9,7 +9,6 @@ from UM.Signal import Signal, signalemitter
|
||||||
from UM.Settings.InstanceContainer import InstanceContainer
|
from UM.Settings.InstanceContainer import InstanceContainer
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Util import parseBool
|
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
|
|
||||||
|
@ -40,7 +39,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
user_container = InstanceContainer(container_id = self._generateUniqueName())
|
user_container = InstanceContainer(container_id = self._generateUniqueName())
|
||||||
user_container.addMetaDataEntry("type", "user")
|
user_container.addMetaDataEntry("type", "user")
|
||||||
self._stack.userChanges = user_container
|
self._stack.userChanges = user_container
|
||||||
self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0)
|
self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId()
|
||||||
|
|
||||||
self._is_non_printing_mesh = False
|
self._is_non_printing_mesh = False
|
||||||
self._is_non_thumbnail_visible_mesh = False
|
self._is_non_thumbnail_visible_mesh = False
|
||||||
|
@ -49,25 +48,13 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
|
|
||||||
Application.getInstance().getContainerRegistry().addContainer(self._stack)
|
Application.getInstance().getContainerRegistry().addContainer(self._stack)
|
||||||
|
|
||||||
Application.getInstance().globalContainerStackChanged.connect(self._onNumberOfExtrudersEnabledChanged)
|
Application.getInstance().globalContainerStackChanged.connect(self._updateNextStack)
|
||||||
Application.getInstance().getMachineManager().numberExtrudersEnabledChanged.connect(self._onNumberOfExtrudersEnabledChanged)
|
|
||||||
|
|
||||||
self.activeExtruderChanged.connect(self._updateNextStack)
|
self.activeExtruderChanged.connect(self._updateNextStack)
|
||||||
self._updateNextStack()
|
self._updateNextStack()
|
||||||
|
|
||||||
def _generateUniqueName(self):
|
def _generateUniqueName(self):
|
||||||
return "SettingOverrideInstanceContainer-%s" % uuid.uuid1()
|
return "SettingOverrideInstanceContainer-%s" % uuid.uuid1()
|
||||||
|
|
||||||
def _onNumberOfExtrudersEnabledChanged(self, *args, **kwargs):
|
|
||||||
if not parseBool(self._extruder_stack.getMetaDataEntry("enabled", "True")):
|
|
||||||
# switch to the first extruder that's available
|
|
||||||
global_stack = Application.getInstance().getMachineManager().activeMachine
|
|
||||||
for _, extruder in sorted(list(global_stack.extruders.items())):
|
|
||||||
if parseBool(extruder.getMetaDataEntry("enabled", "True")):
|
|
||||||
self._extruder_stack = extruder
|
|
||||||
self._updateNextStack()
|
|
||||||
break
|
|
||||||
|
|
||||||
def __deepcopy__(self, memo):
|
def __deepcopy__(self, memo):
|
||||||
## Create a fresh decorator object
|
## Create a fresh decorator object
|
||||||
deep_copy = SettingOverrideDecorator()
|
deep_copy = SettingOverrideDecorator()
|
||||||
|
@ -82,7 +69,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
deep_copy._stack.replaceContainer(0, instance_container)
|
deep_copy._stack.replaceContainer(0, instance_container)
|
||||||
|
|
||||||
# Properly set the right extruder on the copy
|
# Properly set the right extruder on the copy
|
||||||
deep_copy.setActiveExtruder(self._extruder_stack.getId())
|
deep_copy.setActiveExtruder(self._extruder_stack)
|
||||||
|
|
||||||
# use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh"
|
# use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh"
|
||||||
# has not been updated yet.
|
# has not been updated yet.
|
||||||
|
@ -95,7 +82,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
#
|
#
|
||||||
# \return An extruder's container stack.
|
# \return An extruder's container stack.
|
||||||
def getActiveExtruder(self):
|
def getActiveExtruder(self):
|
||||||
return self._extruder_stack.getId()
|
return self._extruder_stack
|
||||||
|
|
||||||
## Gets the signal that emits if the active extruder changed.
|
## Gets the signal that emits if the active extruder changed.
|
||||||
#
|
#
|
||||||
|
@ -137,16 +124,20 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
# kept up to date.
|
# kept up to date.
|
||||||
def _updateNextStack(self):
|
def _updateNextStack(self):
|
||||||
if self._extruder_stack:
|
if self._extruder_stack:
|
||||||
if self._stack.getNextStack():
|
extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = self._extruder_stack)
|
||||||
old_extruder_stack_id = self._stack.getNextStack().getId()
|
if extruder_stack:
|
||||||
else:
|
if self._stack.getNextStack():
|
||||||
old_extruder_stack_id = ""
|
old_extruder_stack_id = self._stack.getNextStack().getId()
|
||||||
|
else:
|
||||||
|
old_extruder_stack_id = ""
|
||||||
|
|
||||||
self._stack.setNextStack(self._extruder_stack)
|
self._stack.setNextStack(extruder_stack[0])
|
||||||
# Trigger slice/need slicing if the extruder changed.
|
# Trigger slice/need slicing if the extruder changed.
|
||||||
if self._stack.getNextStack().getId() != old_extruder_stack_id:
|
if self._stack.getNextStack().getId() != old_extruder_stack_id:
|
||||||
Application.getInstance().getBackend().needsSlicing()
|
Application.getInstance().getBackend().needsSlicing()
|
||||||
Application.getInstance().getBackend().tickle()
|
Application.getInstance().getBackend().tickle()
|
||||||
|
else:
|
||||||
|
Logger.log("e", "Extruder stack %s below per-object settings does not exist.", self._extruder_stack)
|
||||||
else:
|
else:
|
||||||
self._stack.setNextStack(Application.getInstance().getGlobalContainerStack())
|
self._stack.setNextStack(Application.getInstance().getGlobalContainerStack())
|
||||||
|
|
||||||
|
@ -154,14 +145,7 @@ class SettingOverrideDecorator(SceneNodeDecorator):
|
||||||
#
|
#
|
||||||
# \param extruder_stack_id The new extruder stack to print with.
|
# \param extruder_stack_id The new extruder stack to print with.
|
||||||
def setActiveExtruder(self, extruder_stack_id):
|
def setActiveExtruder(self, extruder_stack_id):
|
||||||
if self._extruder_stack.getId() == extruder_stack_id:
|
self._extruder_stack = extruder_stack_id
|
||||||
return
|
|
||||||
|
|
||||||
global_stack = Application.getInstance().getMachineManager().activeMachine
|
|
||||||
for extruder in global_stack.extruders.values():
|
|
||||||
if extruder.getId() == extruder_stack_id:
|
|
||||||
self._extruder_stack = extruder
|
|
||||||
break
|
|
||||||
self._updateNextStack()
|
self._updateNextStack()
|
||||||
ExtruderManager.getInstance().resetSelectedObjectExtruders()
|
ExtruderManager.getInstance().resetSelectedObjectExtruders()
|
||||||
self.activeExtruderChanged.emit()
|
self.activeExtruderChanged.emit()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue