QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgsprocessingregistry.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsprocessingregistry.h
3  ------------------------
4  begin : December 2016
5  copyright : (C) 2016 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSPROCESSINGREGISTRY_H
19 #define QGSPROCESSINGREGISTRY_H
20 
21 #include "qgis_core.h"
22 #include "qgis.h"
23 #include "qgsprocessingprovider.h"
24 #include <QMap>
25 
28 
39 class CORE_EXPORT QgsProcessingRegistry : public QObject
40 {
41  Q_OBJECT
42 
43  public:
44 
48  QgsProcessingRegistry( QObject *parent SIP_TRANSFERTHIS = nullptr );
49 
50  ~QgsProcessingRegistry() override;
51 
53  QgsProcessingRegistry( const QgsProcessingRegistry &other ) = delete;
55  QgsProcessingRegistry &operator=( const QgsProcessingRegistry &other ) = delete;
56 
60  QList<QgsProcessingProvider *> providers() const { return mProviders.values(); }
61 
71  bool addProvider( QgsProcessingProvider *provider SIP_TRANSFER );
72 
78  bool removeProvider( QgsProcessingProvider *provider );
79 
85  bool removeProvider( const QString &providerId );
86 
90  QgsProcessingProvider *providerById( const QString &id );
91 
96  QList< const QgsProcessingAlgorithm *> algorithms() const;
97 
104  const QgsProcessingAlgorithm *algorithmById( const QString &id ) const;
105 
106  /*
107  * IMPORTANT: While it seems like /Factory/ would be the correct annotation here, that's not
108  * the case.
109  * As per Phil Thomson's advice on https://www.riverbankcomputing.com/pipermail/pyqt/2017-July/039450.html:
110  *
111  * "
112  * /Factory/ is used when the instance returned is guaranteed to be new to Python.
113  * In this case it isn't because it has already been seen when being returned by QgsProcessingAlgorithm::createInstance()
114  * (However for a different sub-class implemented in C++ then it would be the first time it was seen
115  * by Python so the /Factory/ on create() would be correct.)
116  *
117  * You might try using /TransferBack/ on create() instead - that might be the best compromise.
118  * "
119  */
120 
134  QgsProcessingAlgorithm *createAlgorithmById( const QString &id, const QVariantMap &configuration = QVariantMap() ) const SIP_TRANSFERBACK;
135 
145  bool addParameterType( QgsProcessingParameterType *type SIP_TRANSFER );
146 
156  void removeParameterType( QgsProcessingParameterType *type );
157 
163  QgsProcessingParameterType *parameterType( const QString &id ) const;
164 
170  QList<QgsProcessingParameterType *> parameterTypes() const;
171 
172  signals:
173 
175  void providerAdded( const QString &id );
176 
178  void providerRemoved( const QString &id );
179 
185  void parameterTypeAdded( QgsProcessingParameterType *type );
186 
193  void parameterTypeRemoved( QgsProcessingParameterType *type );
194 
195  private:
196 
198  QMap<QString, QgsProcessingProvider *> mProviders;
199 
201  QMap<QString, QgsProcessingParameterType *> mParameterTypes;
202 
203 #ifdef SIP_RUN
205 #endif
206 };
207 
208 #endif // QGSPROCESSINGREGISTRY_H
209 
210 
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:46
Abstract base class for processing providers.
#define SIP_TRANSFERBACK
Definition: qgis_sip.h:41
Abstract base class for processing algorithms.
#define SIP_TRANSFER
Definition: qgis_sip.h:36
Registry for various processing components, including providers, algorithms and various parameters an...
Interface base class for factories for algorithm configuration widgets.
Makes metadata of processing parameters available.
QList< QgsProcessingProvider * > providers() const
Gets list of available providers.