CURA-5536 Calculate the number of installed packages by author.

This commit is contained in:
Diego Prado Gesto 2018-07-13 11:59:19 +02:00
parent 1b6c172e6d
commit 96cc1be2ff
3 changed files with 18 additions and 9 deletions

View file

@ -63,7 +63,7 @@ Item
Label Label
{ {
id: name id: name
text: model.name text: toolbox.viewCategory == "material" ? model.name + " (" + toolbox.getNumberOfInstalledPackagesByAuthor(model.id) + "/" + model.package_count + ")" : model.name
width: parent.width width: parent.width
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: UM.Theme.getColor("text") color: UM.Theme.getColor("text")

View file

@ -501,6 +501,15 @@ class Toolbox(QObject, Extension):
def isInstalled(self, package_id: str) -> bool: def isInstalled(self, package_id: str) -> bool:
return self._package_manager.isPackageInstalled(package_id) return self._package_manager.isPackageInstalled(package_id)
@pyqtSlot(str, result = int)
def getNumberOfInstalledPackagesByAuthor(self, author_id: str) -> int:
count = 0
for package in self._metadata["materials_installed"]:
if package["author"]["author_id"] == author_id:
if self.isInstalled(package["package_id"]):
count += 1
return count
@pyqtSlot(str, result = bool) @pyqtSlot(str, result = bool)
def isEnabled(self, package_id: str) -> bool: def isEnabled(self, package_id: str) -> bool:
if package_id in self._plugin_registry.getActivePlugins(): if package_id in self._plugin_registry.getActivePlugins():
@ -722,27 +731,27 @@ class Toolbox(QObject, Extension):
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def authorsModel(self) -> AuthorsModel: def authorsModel(self) -> AuthorsModel:
return self._models["authors"] return cast(AuthorsModel, self._models["authors"])
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def packagesModel(self) -> PackagesModel: def packagesModel(self) -> PackagesModel:
return self._models["packages"] return cast(PackagesModel, self._models["packages"])
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def pluginsShowcaseModel(self) -> PackagesModel: def pluginsShowcaseModel(self) -> PackagesModel:
return self._models["plugins_showcase"] return cast(PackagesModel, self._models["plugins_showcase"])
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def pluginsInstalledModel(self) -> PackagesModel: def pluginsInstalledModel(self) -> PackagesModel:
return self._models["plugins_installed"] return cast(PackagesModel, self._models["plugins_installed"])
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def materialsShowcaseModel(self) -> PackagesModel: def materialsShowcaseModel(self) -> AuthorsModel:
return self._models["materials_showcase"] return cast(AuthorsModel, self._models["materials_showcase"])
@pyqtProperty(QObject, notify = metadataChanged) @pyqtProperty(QObject, notify = metadataChanged)
def materialsInstalledModel(self) -> PackagesModel: def materialsInstalledModel(self) -> PackagesModel:
return self._models["materials_installed"] return cast(PackagesModel, self._models["materials_installed"])