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: