diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2a83fa0d51..2e44a60deb 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -773,9 +773,8 @@ class MachineManager(QObject): old_material = self._active_container_stack.material if old_variant: self.blurSettings.emit() - variant_index = self._active_container_stack.getContainerIndex(old_variant) - self._active_container_stack.replaceContainer(variant_index, containers[0]) - Logger.log("d", "Active variant changed") + self._active_container_stack.variant = containers[0] + Logger.log("d", "Active variant changed to {active_variant_id}".format(active_variant_id = containers[0].getId())) preferred_material = None if old_material: preferred_material_name = old_material.getName() diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py index 991ddd4ecd..6c972efbf0 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py @@ -8,6 +8,7 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty from UM.i18n import i18nCatalog from UM.Application import Application +from UM.Util import parseBool catalog = i18nCatalog("cura") import UM.Settings.InstanceContainer @@ -30,13 +31,13 @@ class UM2UpgradeSelection(MachineAction): def hasVariants(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - return global_container_stack.getMetaDataEntry("has_variants", "false") == "True" + return parseBool(global_container_stack.getMetaDataEntry("has_variants", "false")) @pyqtSlot(bool) def setHasVariants(self, has_variants = True): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - variant_container = global_container_stack.findContainer({"type": "variant"}) + variant_container = global_container_stack.variant variant_index = global_container_stack.getContainerIndex(variant_container) if has_variants: @@ -46,11 +47,12 @@ class UM2UpgradeSelection(MachineAction): global_container_stack.addMetaDataEntry("has_variants", True) # Set the variant container to a sane default - if variant_container.getId() == "empty_variant": + empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + if type(variant_container) == type(empty_container): search_criteria = { "type": "variant", "definition": "ultimaker2", "id": "*0.4*" } containers = self._container_registry.findInstanceContainers(**search_criteria) if containers: - global_container_stack.replaceContainer(variant_index, containers[0]) + global_container_stack.variant = containers[0] else: # The metadata entry is stored in an ini, and ini files are parsed as strings only. # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. @@ -58,7 +60,6 @@ class UM2UpgradeSelection(MachineAction): global_container_stack.removeMetaDataEntry("has_variants") # Set the variant container to an empty variant - if variant_container.getId() == "empty_variant": - global_container_stack.replaceContainer(variant_index, self._container_registry.findInstanceContainers(id="empty_variant")[0]) + global_container_stack.variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() Application.getInstance().globalContainerStackChanged.emit()