QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgsproviderregistry.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsproviderregistry.h - Singleton class for
3  registering data providers.
4  -------------------
5  begin : Sat Jan 10 2004
6  copyright : (C) 2004 by Gary E.Sherman
7  email : sherman at mrcc.com
8  ***************************************************************************/
9 
10 /***************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  ***************************************************************************/
18 
19 #ifndef QGSPROVIDERREGISTRY_H
20 #define QGSPROVIDERREGISTRY_H
21 
22 #include <map>
23 
24 #include <QDir>
25 #include <QLibrary>
26 #include <QString>
27 
28 #include "qgsvectorlayerexporter.h"
29 #include "qgsdataprovider.h"
30 #include "qgis_core.h"
31 #include "qgis_sip.h"
32 
34 class QgsVectorLayer;
37 class QgsDataItem;
39 
54 class CORE_EXPORT QgsProviderRegistry
55 {
56 
57  public:
58 
59  // TODO QGIS 4 - either move to QgsAbstractDataSourceWidget or remove altogether
60 
65  {
66 
73 
79 
86  };
87 
89  static QgsProviderRegistry *instance( const QString &pluginPath = QString() );
90 
91  virtual ~QgsProviderRegistry();
92 
101  Q_DECL_DEPRECATED QString library( const QString &providerKey ) const SIP_DEPRECATED;
102 
104  QString pluginList( bool asHtml = false ) const;
105 
109  QDir libraryDirectory() const;
110 
112  void setLibraryDirectory( const QDir &path );
113 
124  QgsDataProvider *createProvider( const QString &providerKey,
125  const QString &dataSource,
127  QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) SIP_FACTORY;
128 
135  Q_DECL_DEPRECATED int providerCapabilities( const QString &providerKey ) const SIP_DEPRECATED;
136 
142  SIP_SKIP QgsVectorLayerExporter::ExportError createEmptyLayer( const QString &providerKey, const QString &uri, const QgsFields &fields, QgsWkbTypes::Type wkbType, const QgsCoordinateReferenceSystem &srs, bool overwrite, QMap<int, int> &oldToNewAttrIdxMap, QString &errorMessage, const QMap<QString, QVariant> *options );
143 
150  virtual QgsRasterDataProvider *createRasterDataProvider(
151  const QString &providerKey,
152  const QString &uri,
153  const QString &format,
154  int nBands,
155  Qgis::DataType type,
156  int width, int height,
157  double *geoTransform,
159  const QStringList &createOptions = QStringList() ) SIP_FACTORY;
160 
166  QList<QPair<QString, QString> > pyramidResamplingMethods( const QString &providerKey );
167 
176  QVariantMap decodeUri( const QString &providerKey, const QString &uri );
177 
187  QString encodeUri( const QString &providerKey, const QVariantMap &parts );
188 
195  Q_DECL_DEPRECATED QWidget *createSelectionWidget( const QString &providerKey, QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::WindowFlags(), QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None ) SIP_DEPRECATED;
196 
202  QList< QgsDataItemProvider * > dataItemProviders( const QString &providerKey ) const SIP_FACTORY;
203 
209  int listStyles( const QString &providerKey,
210  const QString &uri,
211  QStringList &ids,
212  QStringList &names,
213  QStringList &descriptions,
214  QString &errCause );
215 
221  QString getStyleById( const QString &providerKey, const QString &uri, QString styleId, QString &errCause );
222 
227  bool deleteStyleById( const QString &providerKey, const QString &uri, QString styleId, QString &errCause );
228 
234  bool saveStyle( const QString &providerKey, const QString &uri, const QString &qmlStyle, const QString &sldStyle,
235  const QString &styleName, const QString &styleDescription,
236  const QString &uiFileContent, bool useAsDefault, QString &errCause );
237 
242  QString loadStyle( const QString &providerKey, const QString &uri, QString &errCause );
243 
248  bool createDb( const QString &providerKey, const QString &dbPath, QString &errCause );
249 
254  QgsTransaction *createTransaction( const QString &providerKey, const QString &connString ) SIP_FACTORY;
255 
266  Q_DECL_DEPRECATED QFunctionPointer function( const QString &providerKey, const QString &functionName ) SIP_DEPRECATED;
267 
277  Q_DECL_DEPRECATED QLibrary *createProviderLibrary( const QString &providerKey ) const SIP_FACTORY SIP_DEPRECATED;
278 
280  QStringList providerList() const;
281 
283  QgsProviderMetadata *providerMetadata( const QString &providerKey ) const;
284 
298  virtual QString fileVectorFilters() const;
299 
311  virtual QString fileRasterFilters() const;
312 
326  virtual QString fileMeshFilters() const;
327 
341  virtual QString fileMeshDatasetFilters() const;
342 
344  virtual QString databaseDrivers() const;
346  virtual QString directoryDrivers() const;
348  virtual QString protocolDrivers() const;
349 
353  Q_DECL_DEPRECATED void registerGuis( QWidget *widget ) SIP_DEPRECATED;
354 
361  bool registerProvider( QgsProviderMetadata *providerMetadata SIP_TRANSFER );
362 
364  SIP_SKIP typedef std::map<QString, QgsProviderMetadata *> Providers;
365 
366  private:
368  QgsProviderRegistry( const QString &pluginPath );
369 
370 #ifdef SIP_RUN
371  QgsProviderRegistry( const QString &pluginPath );
372 #endif
373 
374  void init();
375  void clean();
376 
378  Providers mProviders;
379 
381  QDir mLibraryDirectory;
382 
392  QString mVectorFileFilters;
393 
397  QString mRasterFileFilters;
398 
402  QString mMeshFileFilters;
403 
407  QString mMeshDatasetFileFilters;
408 
415  QString mDatabaseDrivers;
416 
422  QString mDirectoryDrivers;
423 
430  QString mProtocolDrivers;
431 
435  static bool exists();
436 
437  friend class QgsApplication;
438 
439 }; // class QgsProviderRegistry
440 
441 #endif //QGSPROVIDERREGISTRY_H
442 
QgsProviderRegistry::Embedded
@ Embedded
Used for the data source manager dialog where the widget is embedded as the main content for a partic...
Definition: qgsproviderregistry.h:78
QgsDataProvider::ProviderOptions
Setting options for creating vector data providers.
Definition: qgsdataprovider.h:105
QgsDataProvider
Abstract base class for spatial data provider implementations.
Definition: qgsdataprovider.h:42
QgsProviderRegistry::None
@ None
Basic mode when the widget is used as a standalone dialog.
Definition: qgsproviderregistry.h:72
QgsProviderRegistry
A registry / canonical manager of data providers.
Definition: qgsproviderregistry.h:55
crs
const QgsCoordinateReferenceSystem & crs
Definition: qgswfsgetfeature.cpp:51
QgsFields
Container of fields for a vector layer.
Definition: qgsfields.h:45
QgsTransaction
This class allows including a set of layers in a database-side transaction, provided the layer data p...
Definition: qgstransaction.h:57
QgsProviderRegistry::Providers
std::map< QString, QgsProviderMetadata * > Providers
Type for data provider metadata associative container.
Definition: qgsproviderregistry.h:364
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
SIP_DEPRECATED
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
QgsProviderRegistry::WidgetMode
WidgetMode
Different ways a source select dialog can be used.
Definition: qgsproviderregistry.h:65
SIP_SKIP
#define SIP_SKIP
Definition: qgis_sip.h:126
QgsDataItemProvider
This is the interface for those who want to add custom data items to the browser tree.
Definition: qgsdataitemprovider.h:46
qgis_sip.h
SIP_TRANSFER
#define SIP_TRANSFER
Definition: qgis_sip.h:36
QgsApplication
Extends QApplication to provide access to QGIS specific resources such as theme paths,...
Definition: qgsapplication.h:83
QgsCoordinateReferenceSystem
This class represents a coordinate reference system (CRS).
Definition: qgscoordinatereferencesystem.h:206
QgsProviderMetadata
Holds data provider key, description, and associated shared library file or function pointer informat...
Definition: qgsprovidermetadata.h:137
QgsProviderRegistry::Manager
@ Manager
Used by data items for QgsDataItem::paramWidget().
Definition: qgsproviderregistry.h:85
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:387
qgsvectorlayerexporter.h
qgsdataprovider.h
QgsVectorLayerExporter
A convenience class for exporting vector layers to a destination data provider.
Definition: qgsvectorlayerexporter.h:47
Qgis
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:46
QgsWkbTypes
Handles storage of information regarding WKB types and their properties.
Definition: qgswkbtypes.h:42
QgsDataItem
Base class for all items in the model.
Definition: qgsdataitem.h:51
QgsRasterDataProvider
Base class for raster data providers.
Definition: qgsrasterdataprovider.h:89