Browse Source

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
j.delarago 2 years ago
parent
commit
ce0623664a

+ 5 - 4
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

+ 3 - 3
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: