From fb3f03b4462b9a371687394986448f3137294321 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 12 Sep 2016 13:55:05 +0200 Subject: [PATCH 1/2] Fixed XML setMetaDataEntry for changing too much meta data. Contributes to CURA-2159 --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 5 ++++- resources/qml/Preferences/MaterialsPage.qml | 4 ++++ resources/qml/Preferences/ProfilesPage.qml | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 369924fa94..58e7a89cad 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -38,13 +38,16 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer): def setMetaDataEntry(self, key, value): if self.isReadOnly(): return + if self.getMetaDataEntry(key, None) == value: + # Prevent loop caused by for loop. + return super().setMetaDataEntry(key, value) basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is self.id, this is a basefile. # Update all containers that share GUID and basefile for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile): - container.setMetaData(copy.deepcopy(self._metadata)) + container.setMetaDataEntry(key, value) ## Overridden from InstanceContainer, similar to setMetaDataEntry. # without this function the setName would only set the name of the specific nozzle / material / machine combination container diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index ef57b5af58..418875cc25 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -19,6 +19,10 @@ UM.ManagementPage filter: { var result = { "type": "material" } + CuraApplication.log(" # filterMaterialsByMachine " + Cura.MachineManager.filterMaterialsByMachine); + CuraApplication.log(" # filterQualityByMachine " + Cura.MachineManager.filterQualityByMachine); + CuraApplication.log(" # Cura.MachineManager.activeDefinitionId " + Cura.MachineManager.activeDefinitionId); + CuraApplication.log(" # Cura.MachineManager.activeVariantId " + Cura.MachineManager.activeVariantId); if(Cura.MachineManager.filterMaterialsByMachine) { result.definition = Cura.MachineManager.activeDefinitionId diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 65f6626378..2c42e4e688 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -21,6 +21,7 @@ UM.ManagementPage filter: { var result = { "type": "quality*", "extruder": null }; + CuraApplication.log(" ## filterQualityByMachine " + Cura.MachineManager.filterQualityByMachine); if(Cura.MachineManager.filterQualityByMachine) { result.definition = Cura.MachineManager.activeQualityDefinitionId; From 1e0394fb48818a10beb7aecc3b669e6ca9e7a3ce Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 12 Sep 2016 14:22:23 +0200 Subject: [PATCH 2/2] Cleanup, forgot to remove debugging stuff. Contributes to CURA-2159 --- resources/qml/Preferences/MaterialsPage.qml | 4 ---- resources/qml/Preferences/ProfilesPage.qml | 1 - 2 files changed, 5 deletions(-) diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 418875cc25..ef57b5af58 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -19,10 +19,6 @@ UM.ManagementPage filter: { var result = { "type": "material" } - CuraApplication.log(" # filterMaterialsByMachine " + Cura.MachineManager.filterMaterialsByMachine); - CuraApplication.log(" # filterQualityByMachine " + Cura.MachineManager.filterQualityByMachine); - CuraApplication.log(" # Cura.MachineManager.activeDefinitionId " + Cura.MachineManager.activeDefinitionId); - CuraApplication.log(" # Cura.MachineManager.activeVariantId " + Cura.MachineManager.activeVariantId); if(Cura.MachineManager.filterMaterialsByMachine) { result.definition = Cura.MachineManager.activeDefinitionId diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 2c42e4e688..65f6626378 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -21,7 +21,6 @@ UM.ManagementPage filter: { var result = { "type": "quality*", "extruder": null }; - CuraApplication.log(" ## filterQualityByMachine " + Cura.MachineManager.filterQualityByMachine); if(Cura.MachineManager.filterQualityByMachine) { result.definition = Cura.MachineManager.activeQualityDefinitionId;