diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 4871886542..89106f9bda 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1302,6 +1302,12 @@ class MachineManager(QObject): def createMachineManager(): return MachineManager() + @pyqtSlot(int, result = "QVariant") + def getExtruder(self, position: int): + if self._global_container_stack: + return self._global_container_stack.extruders.get(str(position)) + return None + @deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7") def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None) -> InstanceContainer: if not definition.getMetaDataEntry("has_materials"): @@ -1357,7 +1363,6 @@ class MachineManager(QObject): # # New # - @pyqtProperty("QVariant", notify = rootMaterialChanged) def currentRootMaterialId(self): # initial filling the current_root_material_id diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index d3ddbb8473..96b21f285c 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -19,6 +19,16 @@ Menu id: nozzleModel } + property var extruderStack: Cura.MachineManager.getExtruder(extruderIndex) + + Connections + { + target: Cura.MachineManager + onGlobalContainerChanged: { + menu.extruderStack = Cura.MachineManager.getExtruder(extruderIndex) + } + } + Instantiator { model: nozzleModel @@ -27,7 +37,7 @@ Menu { text: model.hotend_name checkable: true - checked: Cura.MachineManager.activeMachine.extruders[extruderIndex].variant.name == model.hotend_name + checked: extruderStack.variant.name == model.hotend_name exclusiveGroup: group onTriggered: { Cura.MachineManager.setVariantGroup(extruderIndex, model.container_node);