QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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
56class CORE_EXPORT QgsProcessingRegistry : public QObject
57{
58 Q_OBJECT
59
60 public:
61
65 QgsProcessingRegistry( QObject *parent SIP_TRANSFERTHIS = nullptr );
66
67 ~QgsProcessingRegistry() override;
68
73
77 QList<QgsProcessingProvider *> providers() const { return mProviders.values(); }
78
88 bool addProvider( QgsProcessingProvider *provider SIP_TRANSFER );
89
95 bool removeProvider( QgsProcessingProvider *provider );
96
102 bool removeProvider( const QString &providerId );
103
107 QgsProcessingProvider *providerById( const QString &id ) const SIP_HOLDGIL;
108
113 QList< const QgsProcessingAlgorithm *> algorithms() const;
114
123 QgsProcessingAlgorithmInformation algorithmInformation( const QString &id ) const;
124
131 const QgsProcessingAlgorithm *algorithmById( const QString &id ) const;
132
133 /*
134 * IMPORTANT: While it seems like /Factory/ would be the correct annotation here, that's not
135 * the case.
136 * As per Phil Thomson's advice on https://www.riverbankcomputing.com/pipermail/pyqt/2017-July/039450.html:
137 *
138 * "
139 * /Factory/ is used when the instance returned is guaranteed to be new to Python.
140 * In this case it isn't because it has already been seen when being returned by QgsProcessingAlgorithm::createInstance()
141 * (However for a different sub-class implemented in C++ then it would be the first time it was seen
142 * by Python so the /Factory/ on create() would be correct.)
143 *
144 * You might try using /TransferBack/ on create() instead - that might be the best compromise.
145 * "
146 */
147
161 QgsProcessingAlgorithm *createAlgorithmById( const QString &id, const QVariantMap &configuration = QVariantMap() ) const SIP_TRANSFERBACK;
162
174 void addAlgorithmAlias( const QString &aliasId, const QString &actualId );
175
185 bool addParameterType( QgsProcessingParameterType *type SIP_TRANSFER );
186
196 void removeParameterType( QgsProcessingParameterType *type );
197
203 QgsProcessingParameterType *parameterType( const QString &id ) const;
204
210 QList<QgsProcessingParameterType *> parameterTypes() const;
211
212 signals:
213
215 void providerAdded( const QString &id );
216
218 void providerRemoved( const QString &id );
219
225 void parameterTypeAdded( QgsProcessingParameterType *type );
226
233 void parameterTypeRemoved( QgsProcessingParameterType *type );
234
235 private:
236
238 QMap<QString, QgsProcessingProvider *> mProviders;
239
241 QMap<QString, QgsProcessingParameterType *> mParameterTypes;
242
243 QMap< QString, QString > mAlgorithmAliases;
244
245 mutable QMap< QString, QgsProcessingAlgorithmInformation > mCachedInformation;
246
247#ifdef SIP_RUN
249#endif
250
251 friend class TestQgsProcessing;
252};
253
254#endif // QGSPROCESSINGREGISTRY_H
255
256
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
#define SIP_HOLDGIL
Definition: qgis_sip.h:171