Skip to content

Commit 1c8f63e

Browse files
committed
WIP: Fix for buildplate
1 parent 236bd09 commit 1c8f63e

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

cura/Machines/Models/NozzleModel.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ def _update(self):
3333
self.setItems([])
3434
return
3535

36-
variant_group_dict = variant_manager.getVariantNodes(active_global_stack)
37-
if not variant_group_dict:
36+
variant_node_dict = variant_manager.getVariantNodes(active_global_stack)
37+
if not variant_node_dict:
3838
self.setItems([])
3939
return
4040

4141
item_list = []
42-
for hotend_name, container_node in sorted(variant_group_dict.items(), key = lambda i: i[0]):
42+
for hotend_name, container_node in sorted(variant_node_dict.items(), key = lambda i: i[0]):
4343
item = {"id": hotend_name,
4444
"hotend_name": hotend_name,
4545
"container_node": container_node

cura/Machines/VariantManager.py

+19-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
# Copyright (c) 2018 Ultimaker B.V.
2+
# Cura is released under the terms of the LGPLv3 or higher.
3+
4+
from collections import OrderedDict
15
from typing import Optional
26

37
from UM.Logger import Logger
48
from UM.Settings.ContainerRegistry import ContainerRegistry
5-
from UM.Settings.InstanceContainer import InstanceContainer
69

710
from cura.Machines.ContainerNode import ContainerNode
811
from cura.Settings.GlobalStack import GlobalStack
@@ -35,7 +38,7 @@ class VariantManager:
3538
def __init__(self, container_registry):
3639
self._container_registry = container_registry # type: ContainerRegistry
3740

38-
self._machine_to_variant_dict_map = {} # <machine_type> -> <variant_dict>
41+
self._machine_to_variant_dict_map = dict() # <machine_type> -> <variant_dict>
3942

4043
self._exclude_variant_id_list = ["empty_variant"]
4144

@@ -44,6 +47,8 @@ def __init__(self, container_registry):
4447
# - initializing the variant lookup table based on the metadata in ContainerRegistry.
4548
#
4649
def initialize(self):
50+
self._machine_to_variant_dict_map = OrderedDict()
51+
4752
# Cache all variants from the container registry to a variant map for better searching and organization.
4853
variant_metadata_list = self._container_registry.findContainersMetadata(type = "variant")
4954
for variant_metadata in variant_metadata_list:
@@ -54,13 +59,12 @@ def initialize(self):
5459
variant_name = variant_metadata["name"]
5560
variant_definition = variant_metadata["definition"]
5661
if variant_definition not in self._machine_to_variant_dict_map:
57-
self._machine_to_variant_dict_map[variant_definition] = {}
58-
#for variant_type in ALL_VARIANT_TYPES:
59-
# self._machine_to_variant_dict_map[variant_definition][variant_type] = {}
62+
self._machine_to_variant_dict_map[variant_definition] = OrderedDict()
63+
for variant_type in ALL_VARIANT_TYPES:
64+
self._machine_to_variant_dict_map[variant_definition][variant_type] = dict()
6065

6166
variant_type = variant_metadata["hardware_type"]
62-
#variant_dict = self._machine_to_variant_dict_map[variant_definition][variant_type]
63-
variant_dict = self._machine_to_variant_dict_map[variant_definition]
67+
variant_dict = self._machine_to_variant_dict_map[variant_definition][variant_type]
6468
if variant_name in variant_dict:
6569
# ERROR: duplicated variant name.
6670
raise RuntimeError("Found duplicated variant name [%s], type [%s] for machine [%s]" %
@@ -72,10 +76,11 @@ def initialize(self):
7276
# Gets the variant InstanceContainer with the given information.
7377
# Almost the same as getVariantMetadata() except that this returns an InstanceContainer if present.
7478
#
75-
def getVariantNode(self, machine_type_name: str, variant_name: str,
76-
variant_type: Optional[str] = None) -> Optional["InstanceContainer"]:
77-
return self._machine_to_variant_dict_map[machine_type_name].get(variant_name)
78-
79-
def getVariantNodes(self, machine: "GlobalStack"):
80-
machine_type_name = machine.definition.getId()
81-
return self._machine_to_variant_dict_map.get(machine_type_name)
79+
def getVariantNode(self, machine_definition_id: str, variant_name: str,
80+
variant_type: Optional[str] = VariantType.NOZZLE) -> Optional["ContainerNode"]:
81+
return self._machine_to_variant_dict_map[machine_definition_id].get(variant_type, {}).get(variant_name)
82+
83+
def getVariantNodes(self, machine: "GlobalStack",
84+
variant_type: Optional[str] = VariantType.NOZZLE) -> dict:
85+
machine_definition_id = machine.definition.getId()
86+
return self._machine_to_variant_dict_map[machine_definition_id].get(variant_type, {})

0 commit comments

Comments
 (0)