From ce0623664a49f3c261ae1ec7d889ec074b60844f Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 31 May 2022 15:21:11 +0200 Subject: [PATCH] Include all missing package metadata instead of just ids so we have something to display before searching the package on the marketplace. This is also important so we can show something if we can't find the package on the marketplace. CURA-6990 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 9 +++++---- plugins/3MFReader/WorkspaceDialog.py | 6 +++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 66ebf6e0b2..7456ce2b95 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -582,7 +582,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Getting missing required package ids package_metadata = self._parse_packages_metadata(archive) - missing_package_ids = self._get_missing_package_ids(package_metadata) + missing_package_metadata = self._filter_missing_package_metadata(package_metadata) # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) @@ -604,7 +604,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setExtruders(extruders) self._dialog.setVariantType(variant_type_name) self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity) - self._dialog.setRequiredPackages(missing_package_ids) + self._dialog.setMissingPackagesMetadata(missing_package_metadata) self._dialog.show() # Block until the dialog is closed. @@ -1261,13 +1261,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): @staticmethod - def _get_missing_package_ids(package_metadata: List[Dict[str, str]]) -> List[str]: + def _filter_missing_package_metadata(package_metadata: List[Dict[str, str]]) -> List[Dict[str, str]]: + """Filters out installed packages from package_metadata""" missing_packages = [] package_manager = cast(CuraPackageManager, CuraApplication.getInstance().getPackageManager()) for package in package_metadata: package_id = package["id"] if not package_manager.isPackageInstalled(package_id): - missing_packages.append(package_id) + missing_packages.append(package) return missing_packages diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 7467134183..950c9df2b9 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -59,7 +59,7 @@ class WorkspaceDialog(QObject): self._objects_on_plate = False self._is_printer_group = False self._updatable_machines_model = UpdatableMachinesModel(self) - self._missing_package_ids = [] + self._missing_package_metadata = [] machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() @@ -275,8 +275,8 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() - def setRequiredPackages(self, missing_package_ids): - self._missing_package_ids = missing_package_ids + def setMissingPackagesMetadata(self, missing_package_metadata): + self._missing_package_metadata = missing_package_metadata def getResult(self) -> Dict[str, Optional[str]]: if "machine" in self._result and self.updatableMachinesModel.count <= 1: