Filter already installed packages from the install listviews

Contributes to: CURA-8587
This commit is contained in:
Jelle Spijker 2021-12-01 17:35:56 +01:00
parent 09bc28d840
commit 02e2e0a1c6
No known key found for this signature in database
GPG key ID: 6662DC033BE6B99A
4 changed files with 6 additions and 6 deletions

View file

@ -1,8 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from typing import Any, Dict, List, Tuple, TYPE_CHECKING, Optional from typing import Any, Dict, List, Tuple, TYPE_CHECKING, Optional, Generator
from collections import Generator
from cura.CuraApplication import CuraApplication #To find some resource types. from cura.CuraApplication import CuraApplication #To find some resource types.
from cura.Settings.GlobalStack import GlobalStack from cura.Settings.GlobalStack import GlobalStack
@ -63,7 +62,7 @@ class CuraPackageManager(PackageManager):
return machine_with_materials, machine_with_qualities return machine_with_materials, machine_with_qualities
def iterateAllLocalPackages(self) -> Generator[Dict[str, Any]]: def iterateAllLocalPackages(self) -> Generator[Dict[str, Any], None, None]:
""" A generator which returns an unordered list of all the PackageModels""" """ A generator which returns an unordered list of all the PackageModels"""
# Get all the installed packages, add a section_title depending on package_type and user installed # Get all the installed packages, add a section_title depending on package_type and user installed

View file

@ -13,8 +13,6 @@ from UM.i18n import i18nCatalog
from UM.TaskManagement.HttpRequestManager import HttpRequestManager from UM.TaskManagement.HttpRequestManager import HttpRequestManager
from UM.Logger import Logger from UM.Logger import Logger
from cura.CuraApplication import CuraApplication
from .PackageList import PackageList from .PackageList import PackageList
from .PackageModel import PackageModel from .PackageModel import PackageModel
from . import Marketplace from . import Marketplace
@ -38,7 +36,6 @@ class LocalPackageList(PackageList):
def __init__(self, parent: Optional["QObject"] = None) -> None: def __init__(self, parent: Optional["QObject"] = None) -> None:
super().__init__(parent) super().__init__(parent)
self._manager = CuraApplication.getInstance().getPackageManager()
self._has_footer = False self._has_footer = False
@pyqtSlot() @pyqtSlot()

View file

@ -26,6 +26,7 @@ class PackageList(ListModel):
def __init__(self, parent: Optional["QObject"] = None) -> None: def __init__(self, parent: Optional["QObject"] = None) -> None:
super().__init__(parent) super().__init__(parent)
self._manager = CuraApplication.getInstance().getPackageManager()
self._error_message = "" self._error_message = ""
self.addRoleName(self.PackageRole, "package") self.addRoleName(self.PackageRole, "package")
self._is_loading = False self._is_loading = False

View file

@ -31,6 +31,7 @@ class RemotePackageList(PackageList):
self._request_url = self._initialRequestUrl() self._request_url = self._initialRequestUrl()
self.isLoadingChanged.connect(self._onLoadingChanged) self.isLoadingChanged.connect(self._onLoadingChanged)
self.isLoadingChanged.emit() self.isLoadingChanged.emit()
self._locally_installed = { p["package_id"] for p in self._manager.locally_installed_packages }
def __del__(self) -> None: def __del__(self) -> None:
""" """
@ -128,6 +129,8 @@ class RemotePackageList(PackageList):
return return
for package_data in response_data["data"]: for package_data in response_data["data"]:
if package_data["package_id"] in self._locally_installed:
continue # We should only show packages which are not already installed
try: try:
package = PackageModel(package_data, parent = self) package = PackageModel(package_data, parent = self)
self.appendItem({"package": package}) # Add it to this list model. self.appendItem({"package": package}) # Add it to this list model.