From 8d80f20db7acb21bc3ec25979c2c1b6702607d52 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 3 May 2017 09:54:00 +0200 Subject: [PATCH] Added way to dynamicly set loading order This is to ensure that Global stacks are loaded before extruders, so once the extruders are deseralized, they can always find the next (global) stack CURA-3497 --- cura/Settings/ExtruderStack.py | 11 +++++++++++ cura/Settings/GlobalStack.py | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 519e09cb42..18a9969828 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -38,6 +38,10 @@ class ExtruderStack(CuraContainerStack): # For backward compatibility: Register the extruder with the Extruder Manager ExtruderManager.getInstance().registerExtruder(self, stack.id) + @classmethod + def getLoadingPriority(cls) -> int: + return 3 + ## Overridden from ContainerStack # # It will perform a few extra checks when trying to get properties. @@ -64,6 +68,13 @@ class ExtruderStack(CuraContainerStack): return self.getNextStack()._getMachineDefinition() + @override(CuraContainerStack) + def deserialize(self, contents: str) -> None: + super().deserialize(contents) + stacks = ContainerRegistry.getInstance().findContainerStacks(id=self.getMetaDataEntry("machine", "")) + if stacks: + self.setNextStack(stacks[0]) + extruder_stack_mime = MimeType( name = "application/x-cura-extruderstack", comment = "Cura Extruder Stack", diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index c86c496516..0e2c2db5e8 100644 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -40,6 +40,10 @@ class GlobalStack(CuraContainerStack): def extruders(self) -> list: return self._extruders + @classmethod + def getLoadingPriority(cls) -> int: + return 2 + ## Add an extruder to the list of extruders of this stack. # # \param extruder The extruder to add.