From f5e63f2e718762e083b7d9fe5efce7731d904c30 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 12 May 2016 17:38:43 +0200 Subject: [PATCH] Changing the material is now possible CURA-1278 --- cura/MachineManagerModel.py | 13 +++++++++++++ resources/qml/SidebarHeader.qml | 8 ++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index aef7d37af9..49c2288a98 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -17,8 +17,14 @@ class MachineManagerModel(QObject): activeMaterialChanged = pyqtSignal() def _onGlobalContainerChanged(self): + Application.getInstance().getGlobalContainerStack().containersChanged.connect(self._onInstanceContainersChanged) self.globalContainerChanged.emit() + def _onInstanceContainersChanged(self, container): + container_type = container.getMetaDataEntry("type") + if container_type == "material": + self.activeMaterialChanged.emit() + @pyqtSlot(str) def setActiveMachine(self, stack_id): containers = ContainerRegistry.getInstance().findContainerStacks(id = stack_id) @@ -61,6 +67,13 @@ class MachineManagerModel(QObject): if material: return material.getName() + @pyqtSlot(str) + def setActiveMaterial(self, material_id): + containers = ContainerRegistry.getInstance().findInstanceContainers(id=material_id) + old_material = Application.getInstance().getGlobalContainerStack().findContainer({"type":"material"}) + material_index = Application.getInstance().getGlobalContainerStack().getContainerIndex(old_material) + Application.getInstance().getGlobalContainerStack().replaceContainer(material_index, containers[0]) + @pyqtSlot(str, str) def renameMachine(self, machine_id, new_name): containers = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 6b1c4166b7..7feeb32d43 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -201,14 +201,14 @@ Item exclusiveGroup: materialSelectionMenuGroup; onTriggered: { - UM.MachineManager.setActiveMaterial(machineMaterialsModel.getItem(index).name); - if (typeof(model) !== "undefined" && !model.active) { + Cura.MachineManager.setActiveMaterial(model.id); + /*if (typeof(model) !== "undefined" && !model.active) { //Selecting a material was canceled; undo menu selection materialSelectionInstantiator.model.setProperty(index, "active", false); - var activeMaterialName = UM.MachineManager.activeMaterial; + var activeMaterialName = Cura.MachineManager.activeMaterialName var activeMaterialIndex = materialSelectionInstantiator.model.find("name", activeMaterialName); materialSelectionInstantiator.model.setProperty(activeMaterialIndex, "active", true); - } + }*/ } } onObjectAdded: materialSelectionMenu.insertItem(index, object)