diff --git a/plugins/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml index b7f0c44a98..997e7c30ec 100644 --- a/plugins/Toolbox/resources/qml/Toolbox.qml +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -14,6 +14,7 @@ import UM 1.1 as UM Window { id: base + property bool dataReady: manager.dataReady title: catalog.i18nc("@title:tab", "Toolbox"); modality: Qt.ApplicationModal width: 800 * screenScaleFactor @@ -40,20 +41,25 @@ Window top: topBar.bottom bottom: bottomBar.top } + ToolboxLoading + { + id: loading + visible: !dataReady && manager.currentView != "installed" + } ToolboxDownloadsPage { id: viewDownloads - visible: manager.currentView != "installed" && manager.detailView == "" + visible: dataReady && manager.currentView != "installed" && manager.detailView == "" } ToolboxDetailsPage { id: viewDetail - visible: manager.currentView != "installed" && manager.detailView != "" + visible: dataReady && manager.currentView != "installed" && manager.detailView != "" } ToolboxInstalledPage { id: installedPluginList - visible: manager.currentView == "installed" + visible: dataReady && manager.currentView == "installed" } } ToolboxShadow diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 410355bae7..0bc56e95df 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -48,7 +48,7 @@ class Toolbox(QObject, Extension): # Nowadays can be 'plugins', 'materials' or 'installed' self._current_view = "plugins" - self._detail_view = False + self._detail_view = "" self._restart_required = False @@ -291,18 +291,17 @@ class Toolbox(QObject, Extension): def setCurrentView(self, view = "plugins"): self._current_view = view - self._detail_view = False self.viewChanged.emit() @pyqtProperty(str, fset = setCurrentView, notify = viewChanged) def currentView(self): return self._current_view - def setDetailView(self, item = False): - self._detail_view = item + def setDetailView(self, detail_view = ""): + self._detail_view = detail_view self.detailViewChanged.emit() - @pyqtProperty(bool, fset = setDetailView, notify = detailViewChanged) + @pyqtProperty(str, fset = setDetailView, notify = detailViewChanged) def detailView(self): return self._detail_view @@ -328,6 +327,10 @@ class Toolbox(QObject, Extension): def packagesModel(self): return self._packages_model + @pyqtProperty(bool, notify = packagesMetadataChanged) + def dataReady(self): + return self._packages_model is not None + def _checkCanUpgrade(self, id, version): # TODO: This could maybe be done more efficiently using a dictionary... @@ -392,7 +395,6 @@ class Toolbox(QObject, Extension): if not self._packages_model: self._packages_model = CuraPackageModel() self._packages_model.setPackagesMetaData(self._packages_metadata) - # self._plugin_registry.addExternalPlugins(self._packages_metadata) self.packagesMetadataChanged.emit() except json.decoder.JSONDecodeError: Logger.log("w", "Received an invalid print job state message: Not valid JSON.")