QGIS API Documentation 3.32.0-Lima (311a8cb8a6)
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"
24#include <QMap>
25
28
36{
37 public:
38
40 QString displayName;
41
43 QIcon icon;
44};
45
46
57class CORE_EXPORT QgsProcessingRegistry : public QObject
58{
59 Q_OBJECT
60
61 public:
62
66 QgsProcessingRegistry( QObject *parent SIP_TRANSFERTHIS = nullptr );
67
68 ~QgsProcessingRegistry() override;
69
74
78 QList<QgsProcessingProvider *> providers() const { return mProviders.values(); }
79
89 bool addProvider( QgsProcessingProvider *provider SIP_TRANSFER );
90
96 bool removeProvider( QgsProcessingProvider *provider );
97
103 bool removeProvider( const QString &providerId );
104
108 QgsProcessingProvider *providerById( const QString &id );
109
114 QList< const QgsProcessingAlgorithm *> algorithms() const;
115
124 QgsProcessingAlgorithmInformation algorithmInformation( const QString &id ) const;
125
132 const QgsProcessingAlgorithm *algorithmById( const QString &id ) const;
133
134 /*
135 * IMPORTANT: While it seems like /Factory/ would be the correct annotation here, that's not
136 * the case.
137 * As per Phil Thomson's advice on https://www.riverbankcomputing.com/pipermail/pyqt/2017-July/039450.html:
138 *
139 * "
140 * /Factory/ is used when the instance returned is guaranteed to be new to Python.
141 * In this case it isn't because it has already been seen when being returned by QgsProcessingAlgorithm::createInstance()
142 * (However for a different sub-class implemented in C++ then it would be the first time it was seen
143 * by Python so the /Factory/ on create() would be correct.)
144 *
145 * You might try using /TransferBack/ on create() instead - that might be the best compromise.
146 * "
147 */
148
162 QgsProcessingAlgorithm *createAlgorithmById( const QString &id, const QVariantMap &configuration = QVariantMap() ) const SIP_TRANSFERBACK;
163
175 void addAlgorithmAlias( const QString &aliasId, const QString &actualId );
176
186 bool addParameterType( QgsProcessingParameterType *type SIP_TRANSFER );
187
197 void removeParameterType( QgsProcessingParameterType *type );
198
204 QgsProcessingParameterType *parameterType( const QString &id ) const;
205
211 QList<QgsProcessingParameterType *> parameterTypes() const;
212
213 signals:
214
216 void providerAdded( const QString &id );
217
219 void providerRemoved( const QString &id );
220
226 void parameterTypeAdded( QgsProcessingParameterType *type );
227
234 void parameterTypeRemoved( QgsProcessingParameterType *type );
235
236 private:
237
239 QMap<QString, QgsProcessingProvider *> mProviders;
240
242 QMap<QString, QgsProcessingParameterType *> mParameterTypes;
243
244 QMap< QString, QString > mAlgorithmAliases;
245
246 mutable QMap< QString, QgsProcessingAlgorithmInformation > mCachedInformation;
247
248#ifdef SIP_RUN
250#endif
251
252 friend class TestQgsProcessing;
253};
254
255#endif // QGSPROCESSINGREGISTRY_H
256
257
Interface base class for factories for algorithm configuration widgets.
Contains basic properties for a Processing algorithm.
QString displayName
Algorithm display name.
Abstract base class for processing algorithms.
Makes metadata of processing parameters available.
Abstract base class for processing providers.
Registry for various processing components, including providers, algorithms and various parameters an...
QgsProcessingRegistry & operator=(const QgsProcessingRegistry &other)=delete
Registry cannot be copied.
QList< QgsProcessingProvider * > providers() const
Gets list of available providers.
QgsProcessingRegistry(const QgsProcessingRegistry &other)=delete
Registry cannot be copied.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_TRANSFERBACK
Definition: qgis_sip.h:48