mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Fixed "new" resolve if only the machine was double.
CURA-1263
This commit is contained in:
parent
3245c2fe32
commit
1db2d06e06
1 changed files with 24 additions and 19 deletions
|
@ -56,30 +56,31 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")]
|
cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")]
|
||||||
container_stack_files = [name for name in cura_file_names if name.endswith(self._container_stack_suffix)]
|
container_stack_files = [name for name in cura_file_names if name.endswith(self._container_stack_suffix)]
|
||||||
|
|
||||||
conflict = False
|
machine_conflict = False
|
||||||
|
quality_changes_conflict = False
|
||||||
for container_stack_file in container_stack_files:
|
for container_stack_file in container_stack_files:
|
||||||
container_id = self._stripFileToId(container_stack_file)
|
container_id = self._stripFileToId(container_stack_file)
|
||||||
stacks = self._container_registry.findContainerStacks(id=container_id)
|
stacks = self._container_registry.findContainerStacks(id=container_id)
|
||||||
if stacks:
|
if stacks:
|
||||||
conflict = True
|
machine_conflict = True
|
||||||
break
|
break
|
||||||
|
|
||||||
# Check if any quality_changes instance container is in conflict.
|
# Check if any quality_changes instance container is in conflict.
|
||||||
if not conflict:
|
instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)]
|
||||||
instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)]
|
for instance_container_file in instance_container_files:
|
||||||
for instance_container_file in instance_container_files:
|
container_id = self._stripFileToId(instance_container_file)
|
||||||
container_id = self._stripFileToId(instance_container_file)
|
instance_container = InstanceContainer(container_id)
|
||||||
instance_container = InstanceContainer(container_id)
|
|
||||||
|
|
||||||
# Deserialize InstanceContainer by converting read data from bytes to string
|
# Deserialize InstanceContainer by converting read data from bytes to string
|
||||||
instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"))
|
instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"))
|
||||||
container_type = instance_container.getMetaDataEntry("type")
|
container_type = instance_container.getMetaDataEntry("type")
|
||||||
if container_type == "quality_changes":
|
if 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 quality_changes:
|
if quality_changes:
|
||||||
conflict = True
|
quality_changes_conflict = True
|
||||||
if conflict:
|
|
||||||
|
if machine_conflict or quality_changes_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._resolve_strategies = {}
|
self._resolve_strategies = {}
|
||||||
self._dialog.show()
|
self._dialog.show()
|
||||||
|
@ -87,9 +88,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
if self._dialog.getResult() == "cancel":
|
if self._dialog.getResult() == "cancel":
|
||||||
return WorkspaceReader.PreReadResult.cancelled
|
return WorkspaceReader.PreReadResult.cancelled
|
||||||
result = self._dialog.getResult()
|
result = self._dialog.getResult()
|
||||||
# TODO: In the future it could be that machine & quality changes will have different resolve strategies
|
|
||||||
self._resolve_strategies = {"machine": result, "quality_changes": result}
|
self._resolve_strategies = {"machine": None, "quality_changes": None}
|
||||||
pass
|
if machine_conflict:
|
||||||
|
self._resolve_strategies["machine"] = result
|
||||||
|
if quality_changes_conflict:
|
||||||
|
self._resolve_strategies["quality_changes"] = result
|
||||||
|
|
||||||
return WorkspaceReader.PreReadResult.accepted
|
return WorkspaceReader.PreReadResult.accepted
|
||||||
|
|
||||||
def read(self, file_name):
|
def read(self, file_name):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue