Browse Source

Move CreateFlattendContainerInstance to InstanceContainer

It didn't really belong in the stack builder, as it's not a containerstack

CURA-9224
Jaime van Kessel 2 years ago
parent
commit
8dc2eaf783

+ 1 - 21
cura/Settings/CuraStackBuilder.py

@@ -299,24 +299,4 @@ class CuraStackBuilder:
         stack.setMetaDataEntry("is_abstract_machine", True)
         stack.setMetaDataEntry("is_online", True)
 
-        return stack
-
-    @classmethod
-    def createFlattenedContainerInstance(cls, instance_container1, instance_container2):
-        """Create a new container with container 2 as base and container 1 written over it."""
-
-        flat_container = InstanceContainer(instance_container2.getName())
-
-        # The metadata includes id, name and definition
-        flat_container.setMetaData(copy.deepcopy(instance_container2.getMetaData()))
-
-        if instance_container1.getDefinition():
-            flat_container.setDefinition(instance_container1.getDefinition().getId())
-
-        for key in instance_container2.getAllKeys():
-            flat_container.setProperty(key, "value", instance_container2.getProperty(key, "value"))
-
-        for key in instance_container1.getAllKeys():
-            flat_container.setProperty(key, "value", instance_container1.getProperty(key, "value"))
-
-        return flat_container
+        return stack

+ 9 - 9
plugins/GCodeWriter/GCodeWriter.py

@@ -127,22 +127,22 @@ class GCodeWriter(MeshWriter):
             container_with_profile.setDefinition(machine_definition_id_for_quality)
             container_with_profile.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
 
-        flat_global_container = CuraStackBuilder.createFlattenedContainerInstance(stack.userChanges, container_with_profile)
+        merged_global_instance_container = InstanceContainer.createMergedInstanceContainer(stack.userChanges, container_with_profile)
         # If the quality changes is not set, we need to set type manually
-        if flat_global_container.getMetaDataEntry("type", None) is None:
-            flat_global_container.setMetaDataEntry("type", "quality_changes")
+        if merged_global_instance_container.getMetaDataEntry("type", None) is None:
+            merged_global_instance_container.setMetaDataEntry("type", "quality_changes")
 
         # Ensure that quality_type is set. (Can happen if we have empty quality changes).
-        if flat_global_container.getMetaDataEntry("quality_type", None) is None:
-            flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
+        if merged_global_instance_container.getMetaDataEntry("quality_type", None) is None:
+            merged_global_instance_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal"))
 
         # Get the machine definition ID for quality profiles
-        flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
+        merged_global_instance_container.setMetaDataEntry("definition", machine_definition_id_for_quality)
 
-        serialized = flat_global_container.serialize()
+        serialized = merged_global_instance_container.serialize()
         data = {"global_quality": serialized}
 
-        all_setting_keys = flat_global_container.getAllKeys()
+        all_setting_keys = merged_global_instance_container.getAllKeys()
         for extruder in stack.extruderList:
             extruder_quality = extruder.qualityChanges
             if extruder_quality.getId() == "empty_quality_changes":
@@ -156,7 +156,7 @@ class GCodeWriter(MeshWriter):
                 extruder_quality.setDefinition(machine_definition_id_for_quality)
                 extruder_quality.setMetaDataEntry("setting_version", stack.quality.getMetaDataEntry("setting_version"))
 
-            flat_extruder_quality = CuraStackBuilder.createFlattenedContainerInstance(extruder.userChanges, extruder_quality)
+            flat_extruder_quality = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder_quality)
             # If the quality changes is not set, we need to set type manually
             if flat_extruder_quality.getMetaDataEntry("type", None) is None:
                 flat_extruder_quality.setMetaDataEntry("type", "quality_changes")

+ 3 - 2
plugins/UFPWriter/UFPWriter.py

@@ -18,6 +18,7 @@ from UM.PluginRegistry import PluginRegistry  # To get the g-code writer.
 
 from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
 from UM.Scene.SceneNode import SceneNode
+from UM.Settings.InstanceContainer import InstanceContainer
 from cura.CuraApplication import CuraApplication
 from cura.Settings.CuraStackBuilder import CuraStackBuilder
 from cura.Settings.GlobalStack import GlobalStack
@@ -225,7 +226,7 @@ class UFPWriter(MeshWriter):
         global_stack = cast(GlobalStack, Application.getInstance().getGlobalContainerStack())
 
         # Add global user or quality changes
-        global_flattened_changes = CuraStackBuilder.createFlattenedContainerInstance(global_stack.userChanges, global_stack.qualityChanges)
+        global_flattened_changes = InstanceContainer.createMergedInstanceContainer(global_stack.userChanges, global_stack.qualityChanges)
         for setting in global_flattened_changes.getAllKeys():
             settings["global"]["changes"][setting] = global_flattened_changes.getProperty(setting, "value")
 
@@ -240,7 +241,7 @@ class UFPWriter(MeshWriter):
             settings[f"extruder_{i}"]["all_settings"] = {}
 
             # Add extruder user or quality changes
-            extruder_flattened_changes = CuraStackBuilder.createFlattenedContainerInstance(extruder.userChanges, extruder.qualityChanges)
+            extruder_flattened_changes = InstanceContainer.createMergedInstanceContainer(extruder.userChanges, extruder.qualityChanges)
             for setting in extruder_flattened_changes.getAllKeys():
                 settings[f"extruder_{i}"]["changes"][setting] = extruder_flattened_changes.getProperty(setting, "value")