From d5229992df425f4ed9cfd13ef2beefdf6db78f8a Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 14 Nov 2016 12:37:26 +0100 Subject: [PATCH] Override resolve strategy is now handled CURA-1263 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index e4a2c574ac..89260193b2 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -29,7 +29,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._instance_container_suffix = ContainerRegistry.getMimeTypeForContainer(InstanceContainer).suffixes[0] self._container_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ContainerStack).suffixes[0] - self._resolvement_strategy = None + self._resolve_strategy = None def preRead(self, file_name): self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) @@ -69,13 +69,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader): conflict = True if conflict: # There is a conflict; User should choose to either update the existing data, add everything as new data or abort - self._resolvement_strategy = None + self._resolve_strategy = None self._dialog.show() self._dialog.waitForClose() if self._dialog.getResult() == "cancel": return WorkspaceReader.PreReadResult.cancelled - self._resolvement_strategy = self._dialog.getResult() + self._resolve_strategy = self._dialog.getResult() pass return WorkspaceReader.PreReadResult.accepted @@ -144,12 +144,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader): user_containers = self._container_registry.findInstanceContainers(id=container_id) if not user_containers: self._container_registry.addContainer(instance_container) + else: + if self._resolve_strategy == "override": + user_containers[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) user_instance_containers.append(instance_container) elif container_type == "quality_changes": # Check if quality changes already exists. quality_changes = self._container_registry.findInstanceContainers(id = container_id) if not quality_changes: self._container_registry.addContainer(instance_container) + else: + if self._resolve_strategy == "override": + quality_changes[0].deserialize(archive.open(instance_container_file).read().decode("utf-8")) quality_changes_instance_containers.append(instance_container) else: continue @@ -163,13 +169,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader): container_id = self._stripFileToId(container_stack_file) stack = ContainerStack(container_id) - # Deserialize stack by converting read data from bytes to string - stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) - # Check if a stack by this ID already exists; - container_stacks = self._container_registry.findContainerStacks(id = container_id) + container_stacks = self._container_registry.findContainerStacks(id=container_id) if container_stacks: - print("CONTAINER ALREADY EXISTSSS") + if self._resolve_strategy == "override": + container_stacks[0].deserialize(archive.open(container_stack_file).read().decode("utf-8")) + else: + # Deserialize stack by converting read data from bytes to string + stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) + self._container_registry.addContainer(stack) if stack.getMetaDataEntry("type") == "extruder_train": extruder_stacks.append(stack)