Browse Source

Override getProperty in ExtruderStack with some additional checks

Arjen Hiemstra 8 years ago
parent
commit
b9dc94e1f6
2 changed files with 17 additions and 1 deletions
  1. 5 0
      cura/Settings/Exceptions.py
  2. 12 1
      cura/Settings/ExtruderStack.py

+ 5 - 0
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

+ 12 - 1
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)