Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelle Spijker <spijker.jelle@gmail.com>2021-12-09 11:56:41 +0300
committerJelle Spijker <spijker.jelle@gmail.com>2021-12-09 11:56:41 +0300
commit51a77f683dc0b227089825af9c3235d557a56ba4 (patch)
tree43f3c8f14ebca2f447f8d5601e106814bd29d685 /cura/CuraPackageManager.py
parent59470814e2be076e10afa717190a4e39fe267a6e (diff)
Moved stateManageButton logic out of the packageModel
Contributes to: CURA-8587
Diffstat (limited to 'cura/CuraPackageManager.py')
-rw-r--r--cura/CuraPackageManager.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py
index bca6494f37..386d249925 100644
--- a/cura/CuraPackageManager.py
+++ b/cura/CuraPackageManager.py
@@ -1,7 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import Any, cast, Dict, List, Tuple, TYPE_CHECKING, Optional
+from typing import Any, cast, Dict, List, Set, Tuple, TYPE_CHECKING, Optional
from cura.CuraApplication import CuraApplication # To find some resource types.
from cura.Settings.GlobalStack import GlobalStack
@@ -20,10 +20,12 @@ class CuraPackageManager(PackageManager):
def __init__(self, application: "QtApplication", parent: Optional["QObject"] = None) -> None:
super().__init__(application, parent)
self._local_packages: Optional[List[Dict[str, Any]]] = None
+ self._local_packages_id: Optional[Set[str]] = None
self.installedPackagesChanged.connect(self._updateLocalPackages)
def _updateLocalPackages(self) -> None:
self._local_packages = self.getAllLocalPackages()
+ self._local_packages_id = set(pkg["package_id"] for pkg in self._local_packages)
@property
def local_packages(self) -> List[Dict[str, Any]]:
@@ -34,6 +36,15 @@ class CuraPackageManager(PackageManager):
# It's guaranteed to be a list now.
return cast(List[Dict[str, Any]], self._local_packages)
+ @property
+ def local_packages_id(self) -> Set[str]:
+ """locally installed packages, lazy execution"""
+ if self._local_packages_id is None:
+ self._updateLocalPackages()
+ # _updateLocalPackages always results in a list of packages, not None.
+ # It's guaranteed to be a list now.
+ return cast(Set[str], self._local_packages_id)
+
def initialize(self) -> None:
self._installation_dirs_dict["materials"] = Resources.getStoragePath(CuraApplication.ResourceTypes.MaterialInstanceContainer)
self._installation_dirs_dict["qualities"] = Resources.getStoragePath(CuraApplication.ResourceTypes.QualityInstanceContainer)