diff --git a/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml index dc0bd9c84d..33a98f66ed 100644 --- a/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml @@ -20,7 +20,6 @@ ScrollView width: page.width spacing: UM.Theme.getSize("default_margin").height padding: UM.Theme.getSize("wide_margin").width - visible: toolbox.pluginsInstalledModel.items.length > 0 height: childrenRect.height + 2 * UM.Theme.getSize("wide_margin").height Label @@ -35,6 +34,7 @@ ScrollView color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") renderType: Text.NativeRendering + visible: toolbox.pluginsInstalledModel.count > 0 } Rectangle @@ -50,6 +50,7 @@ ScrollView height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width + visible: toolbox.pluginsInstalledModel.count > 0 Column { anchors @@ -80,6 +81,7 @@ ScrollView color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") renderType: Text.NativeRendering + visible: toolbox.materialsInstalledModel.count > 0 } Rectangle @@ -95,6 +97,7 @@ ScrollView height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width + visible: toolbox.materialsInstalledModel.count > 0 Column { anchors @@ -108,7 +111,7 @@ ScrollView { id: installedMaterialsList model: toolbox.materialsInstalledModel - delegate: ToolboxInstalledTile { visible: ! model.is_bundled } + delegate: ToolboxInstalledTile { } } } } @@ -152,8 +155,8 @@ ScrollView Repeater { id: bundledPluginsList - model: toolbox.pluginsInstalledModel - delegate: ToolboxInstalledTile { visible: model.is_bundled } + model: toolbox.pluginsBundledModel + delegate: ToolboxInstalledTile { } } } } @@ -197,8 +200,8 @@ ScrollView Repeater { id: bundledMaterialsList - model: toolbox.materialsInstalledModel - delegate: ToolboxInstalledTile { visible: model.is_bundled } + model: toolbox.materialsBundledModel + delegate: ToolboxInstalledTile {} } } } diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 38666bb6e2..af9d6c96f1 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -77,10 +77,15 @@ class Toolbox(QObject, Extension): self._plugins_showcase_model = PackagesModel(self) self._plugins_available_model = PackagesModel(self) self._plugins_installed_model = PackagesModel(self) - + self._plugins_installed_model.setFilter({"is_bundled": "False"}) + self._plugins_bundled_model = PackagesModel(self) + self._plugins_bundled_model.setFilter({"is_bundled": "True"}) self._materials_showcase_model = AuthorsModel(self) self._materials_available_model = AuthorsModel(self) self._materials_installed_model = PackagesModel(self) + self._materials_installed_model.setFilter({"is_bundled": "False"}) + self._materials_bundled_model = PackagesModel(self) + self._materials_bundled_model.setFilter({"is_bundled": "True"}) self._materials_generic_model = PackagesModel(self) self._license_model = LicenseModel() @@ -289,9 +294,11 @@ class Toolbox(QObject, Extension): self._old_plugin_metadata = {k: v for k, v in self._old_plugin_metadata.items() if k in self._old_plugin_ids} self._plugins_installed_model.setMetadata(all_packages["plugin"] + list(self._old_plugin_metadata.values())) + self._plugins_bundled_model.setMetadata(all_packages["plugin"] + list(self._old_plugin_metadata.values())) self.metadataChanged.emit() if "material" in all_packages: self._materials_installed_model.setMetadata(all_packages["material"]) + self._materials_bundled_model.setMetadata(all_packages["material"]) self.metadataChanged.emit() @pyqtSlot(str) @@ -757,6 +764,10 @@ class Toolbox(QObject, Extension): def pluginsInstalledModel(self) -> PackagesModel: return self._plugins_installed_model + @pyqtProperty(QObject, constant=True) + def pluginsBundledModel(self) -> PackagesModel: + return self._plugins_bundled_model + @pyqtProperty(QObject, constant = True) def materialsShowcaseModel(self) -> AuthorsModel: return self._materials_showcase_model @@ -769,6 +780,10 @@ class Toolbox(QObject, Extension): def materialsInstalledModel(self) -> PackagesModel: return self._materials_installed_model + @pyqtProperty(QObject, constant=True) + def materialsBundledModel(self) -> PackagesModel: + return self._materials_bundled_model + @pyqtProperty(QObject, constant = True) def materialsGenericModel(self) -> PackagesModel: return self._materials_generic_model