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:
authorGhostkeeper <rubend@tutanota.com>2022-02-21 13:52:28 +0300
committerGhostkeeper <rubend@tutanota.com>2022-02-21 13:52:28 +0300
commitc7d7dd11d143c804d0c1b3ff67fc6f89ed5171e6 (patch)
treedb5f78d4f88e85e01c408c03d3298c95cd14ebb9 /cura/CuraPackageManager.py
parent28924a1c87032e29306d0fca067bb39abc2accf2 (diff)
parent614fe6fd4f0b6370b731c11d3cf5395f788b9ad4 (diff)
Merge branch 'master' into PyQt6_upgrade
Conflicts: cura/PlatformPhysics.py -> Removed shapely on master, while QTimer import got updated to Qt6. plugins/Toolbox -> Entire folder is deleted in master, but it was updated to Qt6 here. This can all be removed.
Diffstat (limited to 'cura/CuraPackageManager.py')
-rw-r--r--cura/CuraPackageManager.py44
1 files changed, 40 insertions, 4 deletions
diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py
index 212993e19b..17d6832ac6 100644
--- a/cura/CuraPackageManager.py
+++ b/cura/CuraPackageManager.py
@@ -1,13 +1,15 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
-from typing import 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.CuraApplication import CuraApplication # To find some resource types.
from cura.Settings.GlobalStack import GlobalStack
-from UM.PackageManager import PackageManager #The class we're extending.
-from UM.Resources import Resources #To find storage paths for some resource types.
+from UM.PackageManager import PackageManager # The class we're extending.
+from UM.Resources import Resources # To find storage paths for some resource types.
+from UM.i18n import i18nCatalog
+catalog = i18nCatalog("cura")
if TYPE_CHECKING:
from UM.Qt.QtApplication import QtApplication
@@ -17,6 +19,31 @@ if TYPE_CHECKING:
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_ids: Optional[Set[str]] = None
+ self.installedPackagesChanged.connect(self._updateLocalPackages)
+
+ def _updateLocalPackages(self) -> None:
+ self._local_packages = self.getAllLocalPackages()
+ self._local_packages_ids = set(pkg["package_id"] for pkg in self._local_packages)
+
+ @property
+ def local_packages(self) -> List[Dict[str, Any]]:
+ """locally installed packages, lazy execution"""
+ if self._local_packages is None:
+ self._updateLocalPackages()
+ # _updateLocalPackages always results in a list of packages, not None.
+ # It's guaranteed to be a list now.
+ return cast(List[Dict[str, Any]], self._local_packages)
+
+ @property
+ def local_packages_ids(self) -> Set[str]:
+ """locally installed packages, lazy execution"""
+ if self._local_packages_ids 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_ids)
def initialize(self) -> None:
self._installation_dirs_dict["materials"] = Resources.getStoragePath(CuraApplication.ResourceTypes.MaterialInstanceContainer)
@@ -47,3 +74,12 @@ class CuraPackageManager(PackageManager):
machine_with_qualities.append((global_stack, str(extruder_nr), container_id))
return machine_with_materials, machine_with_qualities
+
+ def getAllLocalPackages(self) -> List[Dict[str, Any]]:
+ """ Returns an unordered list of all the package_info of installed, to be installed, or bundled packages"""
+ packages: List[Dict[str, Any]] = []
+
+ for packages_to_add in self.getAllInstalledPackagesInfo().values():
+ packages.extend(packages_to_add)
+
+ return packages