I have been trying to run a processing algorithm that generates a table from the stats calculated from an input point layer. After the processing algorithm is run I display an external dialog window and populate that window with the output results of the processing algorithm. I like using the processing toolbox because the algorithms run in their own thread and allow the user to continue working. I don't know if what I am trying to do is completely possible or not but I am most of the way there, but I have encountered one problem that I am not sure how to solve. Here is what I have so far
I run my processing algorithm and then in postProcessingAlgorithm I open up the dialog window as follows. Note for right now I am calling the plugin "testcapabilities'. The returned result from processAlgorithm is a table. from qgis.utils import plugins ... def processAlgorithm(self, parameters, context, feedback): ... return {self.PrmOutputResults: self.dest_id} ... def postProcessAlgorithm(self, context, feedback): retval = super().postProcessAlgorithm(context, feedback) # This gives me access to the root of my plugin which contains both the # processing algorithm and the post analysis window. plugin = plugins['testcapabilities'] plugin.showDialog() # This opens up my dialog window # This is the input point vector layer in the processing algorithm input_layer = self.parameterAsLayer(self.parameters, self.PrmInputLayer, context) # I believe this gives me access to the table layer I generated in the algorithm table_layer = QgsProcessingUtils.mapLayerFromString(self.dest_id, context) # This is to attach the input and table layers to my dialogs QgsMaplayerComboBox widgets plugin.setData(input_layer, table_layer) return retval This successfully displays the dialog and passes on the input_layer to the dialog box and will display it in a QgsMaplayerComboBox in the dialog. The table generated in processAlgorithm is valid in postProcessAlgorithm, but if I try to have it displayed in a QgsMaplayerComboBox, it does not work. I think the reason is because it has not yet been added to the QGS map layers. Is there a QgsProcessingAlgorithm method that is called after the output layer has been added to the QGIS layers panel? If there is then at that point I should be able to add it to my dialog box. If this is not possible, then I won't be able to use the processing toolbox and will need to deal with implementing it in my own dialog box and in a separate thread. Thanks, Calvin
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer