From 2674179e9af06d4e84230a435398a53e0e7441ec Mon Sep 17 00:00:00 2001 From: Etienne Trimaille Date: Tue, 20 Aug 2024 19:05:08 +0200 Subject: [PATCH] Some small Python fixes about Qt, Python and Processing --- dynamic_layers/core/layer_datasource_modifier.py | 7 +++++-- dynamic_layers/dynamic_layers.py | 10 +++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/dynamic_layers/core/layer_datasource_modifier.py b/dynamic_layers/core/layer_datasource_modifier.py index 48df826..2059756 100644 --- a/dynamic_layers/core/layer_datasource_modifier.py +++ b/dynamic_layers/core/layer_datasource_modifier.py @@ -7,6 +7,7 @@ from qgis.core import ( QgsFeature, QgsMapLayer, + QgsProcessingException, QgsProject, QgsReadWriteContext, QgsVectorLayer, @@ -14,7 +15,7 @@ from qgis.PyQt.QtXml import QDomDocument from dynamic_layers.definitions import CustomProperty -from dynamic_layers.tools import string_substitution +from dynamic_layers.tools import string_substitution, tr class LayerDataSourceModifier: @@ -51,7 +52,9 @@ def compute_new_uri(self, search_and_replace_dictionary: dict = None): ) if not new_uri: - raise Exception(f"New URI invalid : {new_uri}") + raise QgsProcessingException(tr( + "New URI is invalid. Was it a valid QGIS expression ?" + ) + " " + str(new_uri)) # Set the layer datasource self.set_data_source(new_uri) diff --git a/dynamic_layers/dynamic_layers.py b/dynamic_layers/dynamic_layers.py index fdd3125..055d2eb 100644 --- a/dynamic_layers/dynamic_layers.py +++ b/dynamic_layers/dynamic_layers.py @@ -6,6 +6,7 @@ from functools import partial from pathlib import Path +from typing import Optional from qgis import processing from qgis.core import ( @@ -356,7 +357,7 @@ def populate_layer_table(self): self.dlg.twLayers.setItem(tw_row_count, i, new_item) @staticmethod - def get_layer_property(layer: QgsMapLayer, prop: str) -> str | None: + def get_layer_property(layer: QgsMapLayer, prop: str) -> Optional[str]: """ Get a layer property """ @@ -766,9 +767,9 @@ def on_copy_from_project_clicked(self): self.project.writeEntry(WmsProjectProperty.Capabilities, "/", True) self.dlg.inProjectTitle.setText(f"'{p_title}'" if self.is_expression else p_title) - self.dlg.inProjectAbstract.setText(f"'{p_abstract}'" if self.is_expression else p_abstract) + self.dlg.inProjectAbstract.setPlainText(f"'{p_abstract}'" if self.is_expression else p_abstract) - def on_project_property_changed(self, prop: str) -> str | None: + def on_project_property_changed(self, prop: str) -> Optional[str]: """ Save project dynamic property in the project when the user changes the content @@ -879,11 +880,10 @@ def on_apply_variables_clicked(self): def generate_projects_clicked(): """ Open the Processing algorithm dialog. """ # noinspection PyUnresolvedReferences - dialog = processing.createAlgorithmDialog( + processing.execAlgorithmDialog( "dynamic_layers:generate_projects", {} ) - dialog.show() def run(self): """Run method that performs all the real work"""