LocalPackageList.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # Copyright (c) 2021 Ultimaker B.V.
  2. # Cura is released under the terms of the LGPLv3 or higher.
  3. from PyQt5.QtCore import pyqtSlot, Qt
  4. from typing import TYPE_CHECKING
  5. from UM.i18n import i18nCatalog
  6. from UM.Logger import Logger
  7. from cura.CuraApplication import CuraApplication
  8. from .PackageList import PackageList
  9. from .PackageModel import PackageModel # The contents of this list.
  10. if TYPE_CHECKING:
  11. from PyQt5.QtCore import QObject
  12. catalog = i18nCatalog("cura")
  13. class LocalPackageList(PackageList):
  14. PackageRole = Qt.UserRole + 1
  15. def __init__(self, parent: "QObject" = None) -> None:
  16. super().__init__(parent)
  17. self._application = CuraApplication.getInstance()
  18. self._has_footer = False
  19. @pyqtSlot()
  20. def updatePackages(self) -> None:
  21. """
  22. Make a request for the first paginated page of packages.
  23. When the request is done, the list will get updated with the new package models.
  24. """
  25. self.setErrorMessage("") # Clear any previous errors.
  26. self.setIsLoading(True)
  27. self._getLocalPackages()
  28. def _getLocalPackages(self) -> None:
  29. plugin_registry = self._application.getPluginRegistry()
  30. package_manager = self._application.getPackageManager()
  31. bundled = plugin_registry.getInstalledPlugins()
  32. for b in bundled:
  33. package = PackageModel({"package_id": b, "display_name": b, "section_title": "bundled"}, parent = self)
  34. self.appendItem({"package": package})
  35. packages = package_manager.getInstalledPackageIDs()
  36. for p in packages:
  37. package = PackageModel({"package_id": p, "display_name": p, "section_title": "package"}, parent = self)
  38. self.appendItem({"package": package})
  39. self.setIsLoading(False)
  40. self.setHasMore(False)