From 89c0644e4be66dcab9853321b17fb8710c0b64ec Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 12 May 2016 17:01:47 +0200 Subject: [PATCH] Added activeMaterial property CURA-1278 --- cura/MachineManagerModel.py | 22 ++++++++++++++++++++++ resources/qml/SidebarHeader.qml | 9 +++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index da14864118..aef7d37af9 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -3,13 +3,18 @@ from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack +from UM.Settings.InstanceContainer import InstanceContainer class MachineManagerModel(QObject): def __init__(self, parent = None): super().__init__(parent) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + ## When the global container is changed, active material probably needs to be updated. + self.globalContainerChanged.connect(self.activeMaterialChanged) + globalContainerChanged = pyqtSignal() + activeMaterialChanged = pyqtSignal() def _onGlobalContainerChanged(self): self.globalContainerChanged.emit() @@ -27,8 +32,19 @@ class MachineManagerModel(QObject): new_global_stack = ContainerStack(name) new_global_stack.addMetaDataEntry("type", "machine") ContainerRegistry.getInstance().addContainer(new_global_stack) + + variant_instance_container = InstanceContainer(name + "_variant") + material_instance_container = InstanceContainer("test_material") + material_instance_container.addMetaDataEntry("type", "material") + material_instance_container.setDefinition(definitions[0]) + #material_instance_container.setMetaData({"type","material"}) + quality_instance_container = InstanceContainer(name + "_quality") + current_settings_instance_container = InstanceContainer(name + "_current_settings") + ContainerRegistry.getInstance().addContainer(material_instance_container) + # If a definition is found, its a list. Should only have one item. new_global_stack.addContainer(definitions[0]) + new_global_stack.addContainer(material_instance_container) Application.getInstance().setGlobalContainerStack(new_global_stack) @pyqtProperty(str, notify = globalContainerChanged) @@ -39,6 +55,12 @@ class MachineManagerModel(QObject): def activeMachineId(self): return Application.getInstance().getGlobalContainerStack().getId() + @pyqtProperty(str, notify = activeMaterialChanged) + def activeMaterialName(self): + material = Application.getInstance().getGlobalContainerStack().findContainer({"type":"material"}) + if material: + return material.getName() + @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 83188007cf..6b1c4166b7 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -172,8 +172,8 @@ Item ToolButton { id: materialSelection - text: UM.MachineManager.activeMaterial - tooltip: UM.MachineManager.activeMaterial + text: Cura.MachineManager.activeMaterialName + tooltip: Cura.MachineManager.activeMaterialName visible: UM.MachineManager.hasMaterials height: UM.Theme.getSize("setting_control").height @@ -187,6 +187,11 @@ Item Instantiator { id: materialSelectionInstantiator + model: UM.InstanceContainersModel + { + filter: {"type": "material"} + } + //model: UM.InstancesModel {filter: {"type":"material"}} // model: UM.MachineMaterialsModel { id: machineMaterialsModel } MenuItem {