From c46213435237ade34732c1d1da9c83fd3ed3ec59 Mon Sep 17 00:00:00 2001 From: signedav Date: Wed, 27 Nov 2024 12:08:15 +0100 Subject: [PATCH] busy bar on topping exporter --- QgisModelBaker/gui/topping_wizard/ili2dbsettings_page.py | 4 ++++ QgisModelBaker/gui/topping_wizard/layers_page.py | 7 ++++++- QgisModelBaker/gui/topping_wizard/models_page.py | 2 ++ QgisModelBaker/gui/topping_wizard/referencedata_page.py | 6 ++++++ QgisModelBaker/gui/topping_wizard/topping_wizard.py | 8 ++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/QgisModelBaker/gui/topping_wizard/ili2dbsettings_page.py b/QgisModelBaker/gui/topping_wizard/ili2dbsettings_page.py index c0a6eba93..98f08d13a 100644 --- a/QgisModelBaker/gui/topping_wizard/ili2dbsettings_page.py +++ b/QgisModelBaker/gui/topping_wizard/ili2dbsettings_page.py @@ -287,6 +287,9 @@ def _refresh_combobox(self): ) def _schema_changed(self): + self.topping_wizard.busy( + self, True, self.tr("Get ili2db settings of the current schema...") + ) configuration = self.schema_combobox.currentData() if configuration: db_connector = db_utils.get_db_connector(configuration) @@ -299,3 +302,4 @@ def _schema_changed(self): self.parameters_model.refresh_model( self.topping_wizard.topping.metaconfig.ili2db_settings.parameters ) + self.topping_wizard.busy(self, False) diff --git a/QgisModelBaker/gui/topping_wizard/layers_page.py b/QgisModelBaker/gui/topping_wizard/layers_page.py index e075cdc6c..bde87fb76 100644 --- a/QgisModelBaker/gui/topping_wizard/layers_page.py +++ b/QgisModelBaker/gui/topping_wizard/layers_page.py @@ -563,7 +563,12 @@ def __init__(self, parent, title): self.categories_dialog = LayerStyleCategoriesDialog() self.stylecat_delegate.button_clicked.connect(self.open_categories_dialog) - self.reset_button.clicked.connect(lambda: self.layermodel.reload(True)) + self.reset_button.clicked.connect(self.reload_layermodel) + + def reload_layermodel(self): + self.topping_wizard.busy(self, True, self.tr("Reload layertree...")) + self.layermodel.reload(True) + self.topping_wizard.busy(self, False) def open_categories_dialog(self, index): layername = index.data(int(Qt.DisplayRole)) diff --git a/QgisModelBaker/gui/topping_wizard/models_page.py b/QgisModelBaker/gui/topping_wizard/models_page.py index 6b0461960..38f2951be 100644 --- a/QgisModelBaker/gui/topping_wizard/models_page.py +++ b/QgisModelBaker/gui/topping_wizard/models_page.py @@ -73,8 +73,10 @@ def validatePage(self) -> bool: return super().validatePage() def _refresh(self): + self.topping_wizard.busy(self, True, self.tr("Refresh model information...")) self._load_available_models_and_sources() self.models_model.check_entries(self.topping_wizard.topping.models) + self.topping_wizard.busy(self, False) def _load_available_models_and_sources(self): """ diff --git a/QgisModelBaker/gui/topping_wizard/referencedata_page.py b/QgisModelBaker/gui/topping_wizard/referencedata_page.py index 34c92be62..5c358435f 100644 --- a/QgisModelBaker/gui/topping_wizard/referencedata_page.py +++ b/QgisModelBaker/gui/topping_wizard/referencedata_page.py @@ -136,6 +136,11 @@ def validatePage(self) -> bool: def update_referecedata_cache_model(self, filter_models, type): # updates the model and waits for the end + self.topping_wizard.busy( + self, + True, + self.tr("Search for available reference data in the repositories..."), + ) loop = QEventLoop() self.ilireferencedatacache.model_refreshed.connect(lambda: loop.quit()) timer = QTimer() @@ -144,6 +149,7 @@ def update_referecedata_cache_model(self, filter_models, type): timer.start(3000) self.refresh_referencedata_cache(filter_models, type) loop.exec() + self.topping_wizard.busy(self, False) return self.ilireferencedatacache.model def refresh_referencedata_cache(self, filter_models, type): diff --git a/QgisModelBaker/gui/topping_wizard/topping_wizard.py b/QgisModelBaker/gui/topping_wizard/topping_wizard.py index cfe3a0532..e01d81279 100644 --- a/QgisModelBaker/gui/topping_wizard/topping_wizard.py +++ b/QgisModelBaker/gui/topping_wizard/topping_wizard.py @@ -97,6 +97,14 @@ def id_changed(self, new_id): self.tr(f" > ---------- {self._current_page_title(self.current_id)}") ) + def busy(self, page, busy, text="Busy..."): + page.setEnabled(not busy) + self.log_panel.busy_bar.setVisible(busy) + if busy: + self.log_panel.busy_bar.setFormat(text) + else: + self.log_panel.scrollbar.setValue(self.log_panel.scrollbar.maximum()) + def _current_page_title(self, id): if id == ToppingWizardPageIds.Target: return self.tr("Target Folder Selection")