From 1e44abb9bea42cb1374127be7df46127d954d3cd Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Sun, 5 Jun 2016 12:01:46 +0200 Subject: [PATCH 1/2] Added activeExtruder stack to machineManager model CURA-340 --- cura/MachineManagerModel.py | 26 ++++++++++++++++++++++---- resources/qml/SidebarHeader.qml | 6 +++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index c69ddbc3c2..1134e36a38 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -33,6 +33,8 @@ class MachineManagerModel(QObject): active_machine_id = Preferences.getInstance().getValue("cura/active_machine") + self._active_extruder_index = 0 + if active_machine_id != "": # An active machine was saved, so restore it. self.setActiveMachine(active_machine_id) @@ -44,14 +46,28 @@ class MachineManagerModel(QObject): activeVariantChanged = pyqtSignal() activeQualityChanged = pyqtSignal() - activeExtrudersChanged = pyqtSignal() + activeExtruderChanged = pyqtSignal() globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. globalValidationChanged = pyqtSignal() # Emitted whenever a validation inside global container is changed. - @pyqtProperty("QVariantMap", notify = activeExtrudersChanged) - def activeExtruders(self): - return {} + @pyqtProperty(str, notify=activeExtruderChanged) + def activeExtruderStackId(self): + return self.extrudersIds[str(self._active_extruder_index)] + + @pyqtSlot(int) + def setActiveExtruderIndex(self, index): + self._active_extruder_index = index + self.activeExtruderChanged.emit() + + @pyqtProperty("QVariantMap", notify = globalContainerChanged) + def extrudersIds(self): + ## Find all extruders that reference the new stack + extruders = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(**{"machine": self._global_container_stack.getId()}) + result = {} + for extruder in extruders: + result[extruder.getMetaDataEntry("position")] = extruder.getId() + return result def _onGlobalPropertyChanged(self, key, property_name): if property_name == "value": @@ -133,6 +149,8 @@ class MachineManagerModel(QObject): for extruder in extruder_trains: extruder_train_stack = UM.Settings.ContainerStack(name + "_extruder_" + extruder) extruder_train_stack.addMetaDataEntry("type", "extruder") + extruder_train_stack.addMetaDataEntry("machine", name) # What global stack is this extruder linked with? + extruder_train_stack.addMetaDataEntry("position", extruder) # What is the position of the extruder (as defined by machine definition) extruder_definitions = UM.Settings.ContainerRegistry.getInstance().findDefinitionContainers(id=extruder_trains[extruder]) if extruder_definitions: extruder_train_stack.addContainer(extruder_definitions[0]) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index bb7aeebae7..61ccbb998d 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -108,7 +108,11 @@ Item exclusiveGroup: extruderMenuGroup; checkable: true; checked: base.currentExtruderIndex == index - onClicked: base.currentExtruderIndex = index + onClicked: + { + base.currentExtruderIndex = index + Cura.MachineManager.setActiveExtruderIndex(index) + } style: ButtonStyle { background: Rectangle { From 783134031bd43b6125fe3c5bd8236a99e2e00121 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Sun, 5 Jun 2016 12:17:35 +0200 Subject: [PATCH 2/2] Settings can now be set by extruder CURA-340 --- cura/MachineManagerModel.py | 1 + resources/qml/Settings/SettingView.qml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index 1134e36a38..1423744263 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -157,6 +157,7 @@ class MachineManagerModel(QObject): current_settings_container_extruder = UM.Settings.InstanceContainer(extruder_train_stack.getName() + "_current_settings") current_settings_container_extruder.addMetaDataEntry("machine", name) current_settings_container_extruder.addMetaDataEntry("type", "user") + current_settings_container_extruder.setDefinition(definition) extruder_train_stack.addContainer(current_settings_container_extruder) extruder_train_stack.setNextStack(new_global_stack) UM.Settings.ContainerRegistry.getInstance().addContainer(extruder_train_stack) diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 1555149d22..7430932b65 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -79,7 +79,7 @@ ScrollView { id: provider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.MachineManager.activeExtruderStackId key: model.key watchedProperties: [ "value", "enabled", "state", "validationState" ] storeIndex: 0