Override resolve strategy is now handled

CURA-1263
This commit is contained in:
Jaime van Kessel 2016-11-14 12:37:26 +01:00
parent cbcc48ff33
commit d5229992df

View file

@ -29,7 +29,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._instance_container_suffix = ContainerRegistry.getMimeTypeForContainer(InstanceContainer).suffixes[0] self._instance_container_suffix = ContainerRegistry.getMimeTypeForContainer(InstanceContainer).suffixes[0]
self._container_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ContainerStack).suffixes[0] self._container_stack_suffix = ContainerRegistry.getMimeTypeForContainer(ContainerStack).suffixes[0]
self._resolvement_strategy = None self._resolve_strategy = None
def preRead(self, file_name): def preRead(self, file_name):
self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name)
@ -69,13 +69,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
conflict = True conflict = True
if conflict: if conflict:
# There is a conflict; User should choose to either update the existing data, add everything as new data or abort # 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.show()
self._dialog.waitForClose() self._dialog.waitForClose()
if self._dialog.getResult() == "cancel": if self._dialog.getResult() == "cancel":
return WorkspaceReader.PreReadResult.cancelled return WorkspaceReader.PreReadResult.cancelled
self._resolvement_strategy = self._dialog.getResult() self._resolve_strategy = self._dialog.getResult()
pass pass
return WorkspaceReader.PreReadResult.accepted return WorkspaceReader.PreReadResult.accepted
@ -144,12 +144,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
user_containers = self._container_registry.findInstanceContainers(id=container_id) user_containers = self._container_registry.findInstanceContainers(id=container_id)
if not user_containers: if not user_containers:
self._container_registry.addContainer(instance_container) 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) user_instance_containers.append(instance_container)
elif container_type == "quality_changes": elif container_type == "quality_changes":
# Check if quality changes already exists. # Check if quality changes already exists.
quality_changes = self._container_registry.findInstanceContainers(id = container_id) quality_changes = self._container_registry.findInstanceContainers(id = container_id)
if not quality_changes: if not quality_changes:
self._container_registry.addContainer(instance_container) 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) quality_changes_instance_containers.append(instance_container)
else: else:
continue continue
@ -163,13 +169,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
container_id = self._stripFileToId(container_stack_file) container_id = self._stripFileToId(container_stack_file)
stack = ContainerStack(container_id) stack = ContainerStack(container_id)
# Check if a stack by this ID already exists;
container_stacks = self._container_registry.findContainerStacks(id=container_id)
if container_stacks:
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 # Deserialize stack by converting read data from bytes to string
stack.deserialize(archive.open(container_stack_file).read().decode("utf-8")) stack.deserialize(archive.open(container_stack_file).read().decode("utf-8"))
self._container_registry.addContainer(stack)
# Check if a stack by this ID already exists;
container_stacks = self._container_registry.findContainerStacks(id = container_id)
if container_stacks:
print("CONTAINER ALREADY EXISTSSS")
if stack.getMetaDataEntry("type") == "extruder_train": if stack.getMetaDataEntry("type") == "extruder_train":
extruder_stacks.append(stack) extruder_stacks.append(stack)