diff --git a/python/plugins/processing/ProcessingPlugin.py b/python/plugins/processing/ProcessingPlugin.py index 9c2cd1b8bc1..87fe6e96af6 100644 --- a/python/plugins/processing/ProcessingPlugin.py +++ b/python/plugins/processing/ProcessingPlugin.py @@ -253,6 +253,7 @@ class ProcessingPlugin: self.resultsDock.setVisible(False) self.iface.removeDockWidget(self.resultsDock) + self.toolbox.deleteLater() self.menu.deleteLater() # delete temporary output files diff --git a/python/plugins/processing/core/Processing.py b/python/plugins/processing/core/Processing.py index b546fe4aa7d..06289b325c8 100644 --- a/python/plugins/processing/core/Processing.py +++ b/python/plugins/processing/core/Processing.py @@ -85,11 +85,15 @@ class Processing(object): if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]: return # Add the basic providers - for c in QgsProcessingProvider.__subclasses__(): + for c in [ + QgisAlgorithmProvider, + Grass7AlgorithmProvider, + GdalAlgorithmProvider, + SagaAlgorithmProvider, + ScriptAlgorithmProvider, + ModelerAlgorithmProvider + ]: p = c() - if p.id() in ('native', '3d'): - # c++ providers are already registered - continue if QgsApplication.processingRegistry().addProvider(p): Processing.BASIC_PROVIDERS.append(p) # And initialize diff --git a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py index 5ba5efb77a6..3c9be7a4b1f 100644 --- a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py +++ b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py @@ -63,7 +63,10 @@ class ModelerAlgorithmProvider(QgsProcessingProvider): # must reload models if providers list is changed - previously unavailable algorithms # which models depend on may now be available - QgsApplication.processingRegistry().providerAdded.connect(self.refreshAlgorithms) + QgsApplication.processingRegistry().providerAdded.connect(self.onProviderAdded) + + def onProviderAdded(self, provider_id): + self.refreshAlgorithms() def load(self): ProcessingConfig.settingIcons[self.name()] = self.icon()