From b9dc94e1f650996062fa1d6678dbb28684a7f40a Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Tue, 11 Apr 2017 17:45:23 +0200 Subject: [PATCH] Override getProperty in ExtruderStack with some additional checks --- cura/Settings/Exceptions.py | 5 +++++ cura/Settings/ExtruderStack.py | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cura/Settings/Exceptions.py b/cura/Settings/Exceptions.py index 846e740950..a30059b2e7 100644 --- a/cura/Settings/Exceptions.py +++ b/cura/Settings/Exceptions.py @@ -15,3 +15,8 @@ class InvalidContainerError(Exception): ## Raised when trying to add an extruder to a Global stack that already has the maximum number of extruders. class TooManyExtrudersError(Exception): pass + + +## Raised when an extruder has no next stack set. +class NoGlobalStackError(Exception): + pass diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 74e2cf8897..4b50143c27 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -25,10 +25,21 @@ class ExtruderStack(CuraContainerStack): super().setNextStack(stack) stack.addExtruder(self) + @override(ContainerStack) + def getProperty(self, key: str, property_name: str) -> Any: + if not self._next_stack: + raise Exceptions.NoGlobalStackError("Extruder {id} is missing the next stack!".format(id = self.id)) + + if not super().getProperty(key, "settable_per_extruder"): + return self.getNextStack().getProperty(key, property_name) + + return super().getProperty(key, property_name) + + extruder_stack_mime = MimeType( name = "application/x-cura-extruderstack", comment = "Cura Extruder Stack", - suffixes = [ "extruder.cfg" ] + suffixes = ["extruder.cfg"] ) MimeTypeDatabase.addMimeType(extruder_stack_mime)