Estoy tratando de usar QgsProcessingException
dentro de un script de procesamiento si el parámetro de salida está vacío o corresponde a algo.
En el caso específico, la salida definida es QgsProcessingParameterFolderDestination
y me gustaría mostrar una bonita advertencia amarilla en el cuadro de diálogo principal si la ruta elegida es igual a una ruta específica y no permitir que se ejecute el algoritmo.
En el método processAlgorithm
intenté usar algo como:
# set the output folder
Results = self.parameterAsString(parameters, self.OUTPUT, context)
if Results.startswith('/tmp'):
raise QgsProcessingException(self.tr('Por favor, elija otra ruta'))
funciona bien, lo que significa que el algoritmo no se inicia, pero el mensaje de advertencia se escribe en la ficha de registro y no en la ficha de diálogo principal.
La API de Python no es tan útil (https://qgis.org/pyqgis/3.0/core/Processing/QgsProcessingException.html) mientras que la API de C++ es un poco más detallada (https://qgis.org/api/classQgsProcessingException.html)
P.D.: utilizando QGIS master (3.1) en una máquina Debian Linux.
Para ser claro, a la izquierda está el manejo correcto de la excepción para un parámetro de ráster faltante, a la derecha lo que sucede con la excepción con el código anterior: