Don't require VariantManager any more from CuraStackBuilder

We now use the new container tree structure there.

Contributes to issue CURA-6600.
This commit is contained in:
Ghostkeeper 2019-08-08 17:31:26 +02:00
parent e106692165
commit d710a58233
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276
2 changed files with 9 additions and 14 deletions

View file

@ -20,6 +20,7 @@ class MachineNode(ContainerNode):
super().__init__(container_id) super().__init__(container_id)
self.variants = {} # type: Dict[str, VariantNode] # mapping variant names to their nodes. self.variants = {} # type: Dict[str, VariantNode] # mapping variant names to their nodes.
container_registry = ContainerRegistry.getInstance() container_registry = ContainerRegistry.getInstance()
my_metadata = container_registry.findContainersMetadata(id = container_id)[0] my_metadata = container_registry.findContainersMetadata(id = container_id)[0]
# 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!
@ -28,6 +29,8 @@ class MachineNode(ContainerNode):
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)
self.exclude_materials = my_metadata.get("exclude_materials", []) self.exclude_materials = my_metadata.get("exclude_materials", [])
self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
container_registry.containerAdded.connect(self._variantAdded) container_registry.containerAdded.connect(self._variantAdded)
self._loadAll() self._loadAll()

View file

@ -1,4 +1,4 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from typing import Optional from typing import Optional
@ -8,6 +8,7 @@ from UM.Logger import Logger
from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.Interfaces import DefinitionContainerInterface
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer
from cura.Machines.ContainerTree import ContainerTree
from cura.Machines.VariantType import VariantType from cura.Machines.VariantType import VariantType
from .GlobalStack import GlobalStack from .GlobalStack import GlobalStack
from .ExtruderStack import ExtruderStack from .ExtruderStack import ExtruderStack
@ -38,14 +39,6 @@ class CuraStackBuilder:
machine_definition = definitions[0] machine_definition = definitions[0]
# get variant container for the global stack
global_variant_container = application.empty_variant_container
global_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.BUILD_PLATE)
if global_variant_node:
global_variant_container = global_variant_node.getContainer()
if not global_variant_container:
global_variant_container = application.empty_variant_container
generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName()) generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName())
# Make sure the new name does not collide with any definition or (quality) profile # Make sure the new name does not collide with any definition or (quality) profile
# createUniqueName() only looks at other stacks, but not at definitions or quality profiles # createUniqueName() only looks at other stacks, but not at definitions or quality profiles
@ -56,7 +49,7 @@ class CuraStackBuilder:
new_global_stack = cls.createGlobalStack( new_global_stack = cls.createGlobalStack(
new_stack_id = generated_name, new_stack_id = generated_name,
definition = machine_definition, definition = machine_definition,
variant_container = global_variant_container, variant_container = application.empty_variant_container,
material_container = application.empty_material_container, material_container = application.empty_material_container,
quality_container = application.empty_quality_container, quality_container = application.empty_quality_container,
) )
@ -108,16 +101,15 @@ class CuraStackBuilder:
def createExtruderStackWithDefaultSetup(cls, global_stack: "GlobalStack", extruder_position: int) -> None: def createExtruderStackWithDefaultSetup(cls, global_stack: "GlobalStack", extruder_position: int) -> None:
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
application = CuraApplication.getInstance() application = CuraApplication.getInstance()
variant_manager = application.getVariantManager()
material_manager = application.getMaterialManager() material_manager = application.getMaterialManager()
registry = application.getContainerRegistry() registry = application.getContainerRegistry()
# get variant container for extruders # get variant container for extruders
extruder_variant_container = application.empty_variant_container extruder_variant_container = application.empty_variant_container
extruder_variant_node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()]
global_stack = global_stack) extruder_variant_node = machine_node.variants.get(machine_node.preferred_variant_name)
extruder_variant_name = None extruder_variant_name = None
if extruder_variant_node: if extruder_variant_node is not None:
extruder_variant_container = extruder_variant_node.getContainer() extruder_variant_container = extruder_variant_node.getContainer()
if not extruder_variant_container: if not extruder_variant_container:
extruder_variant_container = application.empty_variant_container extruder_variant_container = application.empty_variant_container