adding option of opening model as UCP or normal project file

CURA-11403
This commit is contained in:
Saumya Jain 2024-02-29 15:45:13 +01:00
parent c817f11c02
commit f3c49e494e
6 changed files with 187 additions and 35 deletions

View file

@ -117,6 +117,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._supported_extensions = [".3mf"]
self._dialog = WorkspaceDialog()
self._3mf_mesh_reader = None
self._is_ucp = False
self._container_registry = ContainerRegistry.getInstance()
# suffixes registered with the MimeTypes don't start with a dot '.'
@ -153,6 +154,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._load_profile = False
self._user_settings = {}
def setOpenAsUcp(self, openAsUcp: bool):
self._is_ucp = openAsUcp
def getNewId(self, old_id: str):
"""Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results.
@ -242,7 +246,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# Read definition containers
#
machine_definition_id = None
updatable_machines = None if is_ucp else []
updatable_machines = None if self._is_ucp else []
machine_definition_container_count = 0
extruder_definition_container_count = 0
definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)]
@ -609,7 +613,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# Load the user specifically exported settings
self._dialog.exportedSettingModel.clear()
if is_ucp:
if self._is_ucp:
try:
self._user_settings = json.loads(archive.open("Cura/user-settings.json").read().decode("utf-8"))
any_extruder_stack = ExtruderManager.getInstance().getExtruderStack(0)
@ -658,8 +662,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
self._dialog.setVariantType(variant_type_name)
self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity)
self._dialog.setMissingPackagesMetadata(missing_package_metadata)
self._dialog.setHasVisibleSelectSameProfileChanged(is_ucp)
self._dialog.setAllowCreatemachine(not is_ucp)
self._dialog.setHasVisibleSelectSameProfileChanged(self._is_ucp)
self._dialog.setAllowCreatemachine(not self._is_ucp)
self._dialog.show()
@ -701,7 +705,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
if self._dialog.getResult() == {}:
return WorkspaceReader.PreReadResult.cancelled
self._load_profile = not is_ucp or (self._dialog.selectSameProfileChecked and self._dialog.isCompatibleMachine)
self._load_profile = not self._is_ucp
self._resolve_strategies = self._dialog.getResult()
#
@ -717,7 +721,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
if key not in containers_found_dict or strategy is not None:
continue
self._resolve_strategies[key] = "override" if containers_found_dict[key] else "new"
self._is_ucp = False
return WorkspaceReader.PreReadResult.accepted
@call_on_qt_thread