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.
This commit is contained in:
Ghostkeeper 2019-08-22 15:37:05 +02:00
parent 295ad564c0
commit 6f77c8735c
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276
2 changed files with 5 additions and 0 deletions

View file

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

View file

@ -38,6 +38,10 @@ class VariantNode(ContainerNode):
## (Re)loads all materials under this variant. ## (Re)loads all materials under this variant.
def _loadAll(self): def _loadAll(self):
container_registry = ContainerRegistry.getInstance() 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. # 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. 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. materials = container_registry.findInstanceContainersMetadata(type = "material", definition = "fdmprinter") # These are ONLY the base materials.