diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index b7eed1b2e3..38cd2b3a42 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -48,7 +48,7 @@ UM.Dialog{ { font: UM.Theme.getFont("default") text: catalog.i18nc("@label", "The following packages will be added:") - visible: toolbox.has_compatible_packages + visible: subscribedPackagesModel.hasCompatiblePackages color: UM.Theme.getColor("text") height: contentHeight + UM.Theme.getSize("default_margin").height } @@ -91,7 +91,7 @@ UM.Dialog{ { font: UM.Theme.getFont("default") text: catalog.i18nc("@label", "The following packages can not be installed because of incompatible Cura version:") - visible: toolbox.has_incompatible_packages + visible: subscribedPackagesModel.hasIncompatiblePackages color: UM.Theme.getColor("text") height: contentHeight + UM.Theme.getSize("default_margin").height } diff --git a/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py b/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py index d98db0ec4d..3fd2e34b9a 100644 --- a/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/CloudSync/SubscribedPackagesModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2020 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, pyqtProperty from UM.Qt.ListModel import ListModel from cura import ApplicationMetadata @@ -19,6 +19,20 @@ class SubscribedPackagesModel(ListModel): self.addRoleName(Qt.UserRole + 2, "icon_url") self.addRoleName(Qt.UserRole + 3, "is_compatible") + @pyqtProperty(bool, constant=True) + def hasCompatiblePackages(self) -> bool: + for item in self._items: + if item['is_compatible']: + return True + return False + + @pyqtProperty(bool, constant=True) + def hasIncompatiblePackages(self) -> bool: + for item in self._items: + if not item['is_compatible']: + return True + return False + def setMetadata(self, data): if self._metadata != data: self._metadata = data @@ -52,16 +66,4 @@ class SubscribedPackagesModel(ListModel): self._items.append(package) self.setItems(self._items) - def hasCompatiblePackages(self) -> bool: - has_compatible_items = False - for item in self._items: - if item['is_compatible'] == True: - has_compatible_items = True - return has_compatible_items - def hasIncompatiblePackages(self) -> bool: - has_incompatible_items = False - for item in self._items: - if item['is_compatible'] == False: - has_incompatible_items = True - return has_incompatible_items \ No newline at end of file diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 8098d90d99..b1928b4e84 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -733,18 +733,6 @@ class Toolbox(QObject, Extension): def authorsModel(self) -> AuthorsModel: return cast(AuthorsModel, self._models["authors"]) - @pyqtProperty(QObject, constant = True) - def subscribedPackagesModel(self) -> SubscribedPackagesModel: - return cast(SubscribedPackagesModel, self._models["subscribed_packages"]) - - @pyqtProperty(bool, constant=True) - def has_compatible_packages(self) -> str: - return self._models["subscribed_packages"].hasCompatiblePackages() - - @pyqtProperty(bool, constant=True) - def has_incompatible_packages(self) -> str: - return self._models["subscribed_packages"].hasIncompatiblePackages() - @pyqtProperty(QObject, constant = True) def packagesModel(self) -> PackagesModel: return cast(PackagesModel, self._models["packages"])