Browse Source

Don't load any materials for printers that don't have them

For instance the Ultimaker 2 shouldn't display any materials.

Contributes to issue CURA-6600.
Ghostkeeper 5 years ago
parent
commit
6f77c8735c
2 changed files with 5 additions and 0 deletions
  1. 1 0
      cura/Machines/MachineNode.py
  2. 4 0
      cura/Machines/VariantNode.py

+ 1 - 0
cura/Machines/MachineNode.py

@@ -31,6 +31,7 @@ class MachineNode(ContainerNode):
         # Some of the metadata is cached upon construction here.
         # ONLY DO THAT FOR METADATA THAT DOESN'T CHANGE DURING RUNTIME!
         # Otherwise you need to keep it up-to-date during runtime.
+        self.has_materials = parseBool(my_metadata.get("has_materials", "true"))
         self.has_machine_materials = parseBool(my_metadata.get("has_machine_materials", "false"))
         self.has_machine_quality = parseBool(my_metadata.get("has_machine_quality", "false"))
         self.quality_definition = my_metadata.get("quality_definition", container_id)

+ 4 - 0
cura/Machines/VariantNode.py

@@ -38,6 +38,10 @@ class VariantNode(ContainerNode):
     ##  (Re)loads all materials under this variant.
     def _loadAll(self):
         container_registry = ContainerRegistry.getInstance()
+
+        if not self.machine.has_materials:
+            return  # There should not be any materials loaded for this printer.
+
         # Find all the materials for this variant's name.
         if not self.machine.has_machine_materials:  # Printer has no specific materials. Look for all fdmprinter materials.
             materials = container_registry.findInstanceContainersMetadata(type = "material", definition = "fdmprinter")  # These are ONLY the base materials.