21#include "providers/gdal/qgsgdalprovider.h"
23#include "providers/meshmemory/qgsmeshmemorydataprovider.h"
24#include "providers/ogr/qgsogrprovider.h"
25#include "providers/ogr/qgsogrprovidermetadata.h"
47using namespace Qt::StringLiterals;
50#include "providers/ept/qgseptprovider.h"
54#include "providers/copc/qgscopcprovider.h"
55#include "providers/vpc/qgsvirtualpointcloudprovider.h"
61#ifdef HAVE_STATIC_PROVIDERS
62#include "qgswmsprovider.h"
63#include "qgswcsprovider.h"
64#include "qgsdelimitedtextprovider.h"
65#include "qgsafsprovider.h"
66#include "qgsamsprovider.h"
68#include "qgsspatialiteprovider.h"
69#include "qgswfsprovider.h"
70#include "qgswfsprovidermetadata.h"
71#include "qgsoapifprovider.h"
72#include "qgsvirtuallayerprovider.h"
75#include "qgspostgresprovider.h"
82#include <QRegularExpression>
91 const QMutexLocker locker( &sMutex );
94 sInstance =
new QgsProviderRegistry( pluginPath );
111 const QString &providerKey )
114 const QgsProviderRegistry::Providers::const_iterator i =
115 metaData.find( providerKey );
117 if ( i != metaData.end() )
123 for (
auto it = metaData.begin(); it != metaData.end(); ++it )
125 if ( providerKey.compare( it->first, Qt::CaseInsensitive ) == 0 )
132QgsProviderRegistry::QgsProviderRegistry(
const QString &pluginPath )
140 char **argv = qApp->argv();
141 QString appDir = argv[0];
142 int bin = appDir.findRev(
"/bin", -1,
false );
143 QString baseDir = appDir.left( bin );
144 QString mLibraryDirectory = baseDir +
"/lib";
147 const QgsScopedRuntimeProfile profile( QObject::tr(
"Initialize data providers" ) );
148 mLibraryDirectory.setPath( pluginPath );
156 bool matchesUri(
const QString &uri )
const override
158 const QFileInfo fi( uri );
159 if ( fi.suffix().compare(
"las"_L1, Qt::CaseInsensitive ) == 0 || fi.suffix().compare(
"laz"_L1, Qt::CaseInsensitive ) == 0 )
165 QgsProviderRegistry::UnusableUriDetails
details(
const QString &uri )
const override
167 QgsProviderRegistry::UnusableUriDetails res = QgsProviderRegistry::UnusableUriDetails( uri,
168 QObject::tr(
"LAS and LAZ files cannot be opened by this QGIS install." ),
172 res.
detailedWarning = QObject::tr(
"The installer used to install this version of QGIS does "
173 "not include the PDAL library required for opening LAS and LAZ point clouds. Please "
174 "obtain one of the alternative installers from https://qgis.org which has point "
175 "cloud support enabled." );
177 res.
detailedWarning = QObject::tr(
"This QGIS build does not include the PDAL library dependency required for opening LAS or LAZ point clouds." );
184void QgsProviderRegistry::init()
188 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create memory layer provider" ) );
189 mProviders[ QgsMemoryProvider::providerKey() ] =
new QgsMemoryProviderMetadata();
192 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create mesh memory layer provider" ) );
193 mProviders[ QgsMeshMemoryDataProvider::providerKey() ] =
new QgsMeshMemoryProviderMetadata();
196 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create GDAL provider" ) );
197 mProviders[ QgsGdalProvider::providerKey() ] =
new QgsGdalProviderMetadata();
200 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create OGR provider" ) );
201 mProviders[ QgsOgrProvider::providerKey() ] =
new QgsOgrProviderMetadata();
204 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create OGC SensorThings API provider" ) );
205 mProviders[ QgsSensorThingsProvider::providerKey() ] =
new QgsSensorThingsProviderMetadata();
208 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create vector tile providers" ) );
209 QgsProviderMetadata *vt =
new QgsVectorTileProviderMetadata();
210 mProviders[ vt->
key() ] = vt;
211 vt =
new QgsXyzVectorTileDataProviderMetadata();
212 mProviders[ vt->
key() ] = vt;
213 vt =
new QgsVtpkVectorTileDataProviderMetadata();
214 mProviders[ vt->
key() ] = vt;
215 vt =
new QgsArcGisVectorTileServiceDataProviderMetadata();
216 mProviders[ vt->
key() ] = vt;
217 vt =
new QgsMbTilesVectorTileDataProviderMetadata();
218 mProviders[ vt->
key() ] = vt;
222 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create EPT point cloud provider" ) );
223 QgsProviderMetadata *pc =
new QgsEptProviderMetadata();
224 mProviders[ pc->
key() ] = pc;
229 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create COPC point cloud provider" ) );
230 QgsProviderMetadata *pc =
new QgsCopcProviderMetadata();
231 mProviders[ pc->
key() ] = pc;
234 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create Virtual point cloud provider" ) );
235 QgsProviderMetadata *pc =
new QgsVirtualPointCloudProviderMetadata();
236 mProviders[ pc->
key() ] = pc;
242 const QgsScopedRuntimeProfile profile( QObject::tr(
"Create tiled scene providers" ) );
243 QgsProviderMetadata *metadata =
new QgsTiledSceneProviderMetadata();
244 mProviders[ metadata->
key() ] = metadata;
246 metadata =
new QgsCesiumTilesProviderMetadata();
247 mProviders[ metadata->
key() ] = metadata;
249 metadata =
new QgsQuantizedMeshProviderMetadata();
250 mProviders[ metadata->
key() ] = metadata;
252 metadata =
new QgsEsriI3SProviderMetadata();
253 mProviders[ metadata->
key() ] = metadata;
256#ifdef HAVE_STATIC_PROVIDERS
257 mProviders[ QgsWmsProvider::providerKey() ] =
new QgsWmsProviderMetadata();
258 mProviders[ QgsWcsProvider::providerKey() ] =
new QgsWcsProviderMetadata();
259 mProviders[ QgsDelimitedTextProvider::providerKey() ] =
new QgsDelimitedTextProviderMetadata();
260 mProviders[ QgsAfsProvider::providerKey() ] =
new QgsAfsProviderMetadata();
261 mProviders[ QgsAmsProvider::providerKey() ] =
new QgsAmsProviderMetadata();
262#ifdef HAVE_SPATIALITE
263 mProviders[ QgsSpatiaLiteProvider::providerKey() ] =
new QgsSpatiaLiteProviderMetadata();
264 mProviders[ QgsWFSProvider::providerKey() ] =
new QgsWfsProviderMetadata();
265 mProviders[ QgsOapifProvider::providerKey() ] =
new QgsOapifProviderMetadata();
266 mProviders[ QgsVirtualLayerProvider::providerKey() ] =
new QgsVirtualLayerProviderMetadata();
268#ifdef HAVE_POSTGRESQL
269 mProviders[ QgsPostgresProvider::providerKey() ] =
new QgsPostgresProviderMetadata();
274#ifdef HAVE_STATIC_PROVIDERS
277 typedef QgsProviderMetadata *factory_function( );
279 mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase );
280 mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks );
282#if defined(Q_OS_WIN) || defined(__CYGWIN__)
283 mLibraryDirectory.setNameFilters( QStringList(
"*.dll" ) );
284#elif defined(ANDROID)
285 mLibraryDirectory.setNameFilters( QStringList(
"*provider_*.so" ) );
287 mLibraryDirectory.setNameFilters( QStringList( u
"*.so"_s ) );
290 QgsDebugMsgLevel( u
"Checking %1 for provider plugins"_s.arg( mLibraryDirectory.path() ), 2 );
292 if ( mLibraryDirectory.count() == 0 )
294 QgsDebugError( u
"No dynamic QGIS data provider plugins found in:\n%1\n"_s.arg( mLibraryDirectory.path() ) );
298 const QString filePattern = getenv(
"QGIS_PROVIDER_FILE" );
299 QRegularExpression fileRegexp;
300 if ( !filePattern.isEmpty() )
302 fileRegexp.setPattern( filePattern );
305 typedef std::vector<QgsProviderMetadata *> *multiple_factory_function();
307 const auto constEntryInfoList = mLibraryDirectory.entryInfoList();
308 for (
const QFileInfo &fi : constEntryInfoList )
310 if ( !filePattern.isEmpty() )
312 if ( fi.fileName().indexOf( fileRegexp ) == -1 )
314 QgsDebugMsgLevel(
"provider " + fi.fileName() +
" skipped because doesn't match pattern " + filePattern, 2 );
320 if ( fi.fileName().contains( u
"authmethod"_s, Qt::CaseSensitivity::CaseInsensitive ) )
325 const QgsScopedRuntimeProfile profile( QObject::tr(
"Load %1" ).arg( fi.fileName() ) );
326 QLibrary myLib( fi.filePath() );
329 QgsDebugError( u
"Checking %1: ...invalid (lib not loadable): %2"_s.arg( myLib.fileName(), myLib.errorString() ) );
333 bool libraryLoaded {
false };
334 QFunctionPointer func = myLib.resolve( u
"providerMetadataFactory"_s.toLatin1().data() );
338 QgsProviderMetadata *meta =
function();
341 if ( findMetadata_( mProviders, meta->
key() ) )
343 QgsDebugError( u
"Checking %1: ...invalid (key %2 already registered)"_s.arg( myLib.fileName() ).arg( meta->
key() ) );
348 mProviders[meta->
key()] = meta;
349 libraryLoaded =
true;
354 QFunctionPointer multi_func = myLib.resolve( u
"multipleProviderMetadataFactory"_s.toLatin1().data() );
355 multiple_factory_function *multi_function =
reinterpret_cast< multiple_factory_function *
>(
cast_to_fptr( multi_func ) );
356 if ( multi_function )
358 std::vector<QgsProviderMetadata *> *metadatas = multi_function();
359 for (
const auto meta : *metadatas )
361 if ( findMetadata_( mProviders, meta->
key() ) )
363 QgsDebugError( u
"Checking %1: ...invalid (key %2 already registered)"_s.arg( myLib.fileName() ).arg( meta->
key() ) );
368 mProviders[meta->
key()] = meta;
369 libraryLoaded =
true;
375 if ( ! libraryLoaded )
377 QgsDebugMsgLevel( u
"Checking %1: ...invalid (no providerMetadataFactory method)"_s.arg( myLib.fileName() ), 2 );
385 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
387 const QString &key = it->first;
389 const QgsScopedRuntimeProfile profile( QObject::tr(
"Initialize %1" ).arg( key ) );
391 QgsProviderMetadata *meta = it->second;
397 rebuildFilterStrings();
400 mDatabaseDrivers = QgsOgrProviderUtils::databaseDrivers();
403 mDirectoryDrivers = QgsOgrProviderUtils::directoryDrivers();
406 mProtocolDrivers = QgsOgrProviderUtils::protocolDrivers();
409void QgsProviderRegistry::rebuildFilterStrings()
411 mVectorFileFilters.clear();
412 mRasterFileFilters.clear();
413 mMeshFileFilters.clear();
414 mMeshDatasetFileFilters.clear();
415 mPointCloudFileFilters.clear();
416 mVectorTileFileFilters.clear();
417 mTiledSceneFileFilters.clear();
419 QStringList pointCloudWildcards;
420 QStringList pointCloudFilters;
422 QStringList vectorTileWildcards;
423 QStringList vectorTileFilters;
425 QStringList tiledSceneWildcards;
426 QStringList tiledSceneFilters;
428 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
430 QgsProviderMetadata *meta = it->second;
454 QgsDebugMsgLevel( u
"Checking %1: ...loaded OK (%2 file mesh filters)"_s.arg( it->first ).arg( mMeshFileFilters.split(
";;" ).count() ), 2 );
462 QgsDebugMsgLevel( u
"Checking %1: ...loaded OK (%2 file dataset filters)"_s.arg( it->first ).arg( mMeshDatasetFileFilters.split(
";;" ).count() ), 2 );
472 for (
const QString &filter : filters )
474 pointCloudFilters.append( filter );
486 for (
const QString &filter : filters )
488 vectorTileFilters.append( filter );
500 for (
const QString &filter : filters )
502 tiledSceneFilters.append( filter );
508 if ( !pointCloudFilters.empty() )
510 pointCloudFilters.insert( 0, QObject::tr(
"All Supported Files" ) + u
" (%1)"_s.arg( pointCloudWildcards.join(
' ' ) ) );
511 pointCloudFilters.insert( 1, QObject::tr(
"All Files" ) + u
" (*.*)"_s );
512 mPointCloudFileFilters = pointCloudFilters.join(
";;"_L1 );
515 if ( !vectorTileFilters.empty() )
517 vectorTileFilters.insert( 0, QObject::tr(
"All Supported Files" ) + u
" (%1)"_s.arg( vectorTileWildcards.join(
' ' ) ) );
518 vectorTileFilters.insert( 1, QObject::tr(
"All Files" ) + u
" (*.*)"_s );
519 mVectorTileFileFilters = vectorTileFilters.join(
";;"_L1 );
522 if ( !tiledSceneFilters.empty() )
524 tiledSceneFilters.insert( 0, QObject::tr(
"All Supported Files" ) + u
" (%1)"_s.arg( tiledSceneWildcards.join(
' ' ) ) );
525 tiledSceneFilters.insert( 1, QObject::tr(
"All Files" ) + u
" (*.*)"_s );
526 mTiledSceneFileFilters = tiledSceneFilters.join(
";;"_L1 );
533void QgsProviderRegistry::clean()
536 if ( QgsProject::sProject )
539 Providers::const_iterator it = mProviders.begin();
541 while ( it != mProviders.end() )
544 it->second->cleanupProvider();
551bool QgsProviderRegistry::exists()
553 return static_cast< bool >( sInstance );
558 qDeleteAll( mUnusableUriHandlers );
561 if ( sInstance ==
this )
581 Providers::const_iterator it = mProviders.begin();
583 if ( mProviders.empty() )
584 return QObject::tr(
"No data provider plugins are available. No vector layers can be loaded" );
591 while ( it != mProviders.end() )
596 list += it->second->description();
599 list +=
"<br></li>"_L1;
614 mLibraryDirectory = path;
621 return mLibraryDirectory;
651 const QList< QgsDataItemProvider * > itemProviders =
dataItemProviders( providerKey );
656 ret |= itemProvider->capabilities();
667 return QVariantMap();
702 bool overwrite, QMap<int, int> &oldToNewAttrIdxMap,
703 QString &errorMessage,
704 const QMap<QString, QVariant> *options, QString &createdLayerName )
708 return meta->
createEmptyLayer( uri, fields, wkbType, srs, overwrite, oldToNewAttrIdxMap, errorMessage, options, createdLayerName );
711 errorMessage = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
719 const QStringList &creationOptions )
723 return meta->
createRasterDataProvider( uri, format, nBands, type, width, height, geoTransform, crs, creationOptions );
734 return QList<QPair<QString, QString> >();
743 return QList<QgsDataItemProvider *>();
746int QgsProviderRegistry::listStyles(
const QString &providerKey,
const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause )
752 res = meta->
listStyles( uri, ids, names, descriptions, errCause );
756 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
767 return meta->
styleExists( uri, styleId, errorCause );
771 errorCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
786 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
793 const bool ret(
false );
800 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
806 const QString &sldStyle,
const QString &styleName,
const QString &styleDescription,
807 const QString &uiFileContent,
bool useAsDefault, QString &errCause )
812 ret = meta->
saveStyle( uri, qmlStyle, sldStyle, styleName, styleDescription,
813 uiFileContent, useAsDefault, errCause );
816 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
829 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
842 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
849 errorMessage.clear();
862 return meta->
createDb( dbPath, errCause );
865 errCause = u
"Resolving createDb(...) failed"_s;
882 Q_UNUSED( providerKey );
885 Q_UNUSED( widgetMode );
886 QgsDebugError(
"deprecated call - use QgsGui::sourceSelectProviderRegistry()->createDataSourceWidget() instead" );
891 QString
const &functionName )
const
894 const QString lib =
library( providerKey );
899 QLibrary myLib( lib );
905 return myLib.resolve( functionName.toLatin1().data() );
909 QgsDebugError(
"Cannot load library: " + myLib.errorString() );
917 const QString lib =
library( providerKey );
922 auto myLib = std::make_unique<QLibrary>( lib );
927 return myLib.release();
929 QgsDebugError(
"Cannot load library: " + myLib->errorString() );
936 QgsDebugError(
"deprecated - use QgsGui::providerGuiRegistry() instead." );
947 rebuildFilterStrings();
964 return mVectorFileFilters;
969 return mRasterFileFilters;
974 return mMeshFileFilters;
979 return mMeshDatasetFileFilters;
984 return mPointCloudFileFilters;
989 return mVectorTileFileFilters;
994 return mTiledSceneFileFilters;
999 return mDatabaseDrivers;
1004 return mDirectoryDrivers;
1009 return mProtocolDrivers;
1015 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1017 lst.append( it->first );
1024 return findMetadata_( mProviders, providerKey );
1030 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1032 if ( it->second->supportedLayerTypes().contains( type ) )
1033 lst.insert( it->first );
1040 QList< QgsProviderRegistry::ProviderCandidateDetails > res;
1041 int maxPriority = 0;
1042 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1047 const int thisProviderPriority = it->second->priorityForUri( uri );
1048 if ( thisProviderPriority == 0 )
1051 if ( thisProviderPriority > maxPriority )
1054 maxPriority = thisProviderPriority;
1056 if ( thisProviderPriority == maxPriority )
1066 mUnusableUriHandlers << handler;
1074 if ( handler->matchesUri( uri ) )
1076 details = handler->details( uri );
1086 if ( providers.empty() )
1091 if ( provider.metadata()->key() == providerKey )
1099 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1101 if ( it->second->uriIsBlocklisted( uri ) )
1113 QList<QgsProviderSublayerDetails> res;
1114 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1120 res.append( it->second->querySublayers( uri, flags, feedback ) );
@ TiledScene
Tiled scene layers.
@ VectorTile
Vector tile layers.
@ MeshDataset
Mesh datasets.
@ PointCloud
Point clouds.
VectorExportResult
Vector layer export result codes.
@ ErrorInvalidProvider
Could not find a matching provider key.
QFlags< DataItemProviderCapability > DataItemProviderCapabilities
Capabilities for data item providers.
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
DataType
Raster data types.
QFlags< SublayerQueryFlag > SublayerQueryFlags
Sublayer query flags.
LayerType
Types of layers that can be added to a map.
@ PointCloud
Point cloud layer. Added in QGIS 3.18.
WkbType
The WKB type describes the number of dimensions a geometry has.
Represents a coordinate reference system (CRS).
Interface for providers that add custom data items to the browser tree.
Abstract base class for spatial data provider implementations.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
bool isCanceled() const
Tells whether the operation has been canceled already.
Container of fields for a vector layer.
static QString wildcardsFromFilter(const QString &filter)
Given a filter string like GeoTIFF Files (*.tiff *.tif), extracts the wildcard portion of this filter...
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true, const char *file=__builtin_FILE(), const char *function=__builtin_FUNCTION(), int line=__builtin_LINE())
Adds a message to the log instance (and creates it if necessary).
Custom exception class which is raised when an operation is not supported.
static QgsProject * instance()
Returns the QgsProject singleton instance.
void removeAllMapLayers()
Removes all registered layers.
Contains information pertaining to a candidate provider.
Contains information about unusable URIs which aren't handled by any registered providers.
QString detailedWarning
Contains a longer, user-friendly, translated message advising why the URI is not usable.
An interface used to handle unusable URIs which aren't handled by any registered providers,...
virtual UnusableUriDetails details(const QString &uri) const =0
Returns the details for advising the user why the uri is not usable.
virtual bool matchesUri(const QString &uri) const =0
Returns true if the handle is an unusable URI handler for the specified uri.
A registry / canonical manager of data providers.
QString absoluteToRelativeUri(const QString &providerKey, const QString &uri, const QgsReadWriteContext &context) const
Converts absolute path(s) to relative path(s) in the given provider-specific URI.
std::map< QString, QgsProviderMetadata * > Providers
Type for data provider metadata associative container.
bool styleExists(const QString &providerKey, const QString &uri, const QString &styleId, QString &errorCause)
Returns true if a layer style with the specified styleId exists in the provider defined by providerKe...
QString loadStyle(const QString &providerKey, const QString &uri, QString &errCause)
Loads a layer style defined by uri.
QString getStyleById(const QString &providerKey, const QString &uri, const QString &styleId, QString &errCause)
Gets a layer style defined by styleId.
QVariantMap decodeUri(const QString &providerKey, const QString &uri)
Breaks a provider data source URI into its component paths (e.g.
void setLibraryDirectory(const QDir &path)
Sets library directory where to search for plugins.
QString fileVectorTileFilters() const
Returns a file filter string for supported vector tile files.
Qgis::VectorExportResult createEmptyLayer(const QString &providerKey, const QString &uri, const QgsFields &fields, Qgis::WkbType wkbType, const QgsCoordinateReferenceSystem &srs, bool overwrite, QMap< int, int > &oldToNewAttrIdxMap, QString &errorMessage, const QMap< QString, QVariant > *options, QString &createdLayerName)
Creates new empty vector layer.
QgsTransaction * createTransaction(const QString &providerKey, const QString &connString)
Returns new instance of transaction.
QList< QgsProviderSublayerDetails > querySublayers(const QString &uri, Qgis::SublayerQueryFlags flags=Qgis::SublayerQueryFlags(), QgsFeedback *feedback=nullptr) const
Queries the specified uri and returns a list of any valid sublayers found in the dataset which can be...
Q_DECL_DEPRECATED void registerGuis(QWidget *widget)
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
WidgetMode
Different ways a source select dialog can be used.
Q_DECL_DEPRECATED QWidget * createSelectionWidget(const QString &providerKey, QWidget *parent=nullptr, Qt::WindowFlags fl=Qt::WindowFlags(), QgsProviderRegistry::WidgetMode widgetMode=QgsProviderRegistry::WidgetMode::Standalone)
Returns a new widget for selecting layers from a provider.
QString protocolDrivers() const
Returns a string containing the available protocol drivers.
QList< QgsProviderRegistry::ProviderCandidateDetails > preferredProvidersForUri(const QString &uri) const
Returns the details for the preferred provider(s) for opening the specified uri.
Q_DECL_DEPRECATED QString library(const QString &providerKey) const
Returns path for the library of the provider.
QString fileTiledSceneFilters() const
Returns a file filter string for supported tiled scene files.
QString databaseDrivers() const
Returns a string containing the available database drivers.
QString encodeUri(const QString &providerKey, const QVariantMap &parts)
Reassembles a provider data source URI from its component paths (e.g.
QList< QgsDataItemProvider * > dataItemProviders(const QString &providerKey) const
Returns list of data item providers of the provider.
QgsRasterDataProvider * createRasterDataProvider(const QString &providerKey, const QString &uri, const QString &format, int nBands, Qgis::DataType type, int width, int height, double *geoTransform, const QgsCoordinateReferenceSystem &crs, const QStringList &createOptions=QStringList())
Creates new instance of raster data provider.
QList< QPair< QString, QString > > pyramidResamplingMethods(const QString &providerKey)
Returns list of raster pyramid resampling methods.
bool uriIsBlocklisted(const QString &uri) const
Returns true if the specified uri is known by any registered provider to be something which should be...
Q_DECL_DEPRECATED QLibrary * createProviderLibrary(const QString &providerKey) const
Returns a new QLibrary for the specified providerKey.
bool handleUnusableUri(const QString &uri, UnusableUriDetails &details) const
Returns true if the specified uri can potentially be handled by QGIS, if additional dependencies or b...
QString fileVectorFilters() const
Returns a file filter string for supported vector files.
QgsDataProvider * createProvider(const QString &providerKey, const QString &dataSource, const QgsDataProvider::ProviderOptions &options=QgsDataProvider::ProviderOptions(), Qgis::DataProviderReadFlags flags=Qgis::DataProviderReadFlags())
Creates a new instance of a provider.
QString fileRasterFilters() const
Returns a file filter string for supported raster files.
bool saveLayerMetadata(const QString &providerKey, const QString &uri, const QgsLayerMetadata &metadata, QString &errorMessage)
Saves metadata to the layer corresponding to the specified uri.
QString fileMeshFilters() const
Returns a file filter string for supported mesh files.
QString pluginList(bool asHtml=false) const
Returns list of provider plugins found.
bool shouldDeferUriForOtherProviders(const QString &uri, const QString &providerKey) const
Returns true if the provider with matching providerKey should defer handling of the specified uri to ...
bool deleteStyleById(const QString &providerKey, const QString &uri, const QString &styleId, QString &errCause)
Deletes a layer style defined by styleId.
QStringList providerList() const
Returns list of available providers by their keys.
Q_DECL_DEPRECATED Qgis::DataItemProviderCapabilities providerCapabilities(const QString &providerKey) const
Returns the provider capabilities.
QString fileMeshDatasetFilters() const
Returns a file filter string for supported mesh dataset files.
QString loadStoredStyle(const QString &providerKey, const QString &uri, QString &styleName, QString &errCause)
Loads a layer style from the provider storage, reporting its name.
QDir libraryDirectory() const
Returns the library directory where plugins are found.
QString relativeToAbsoluteUri(const QString &providerKey, const QString &uri, const QgsReadWriteContext &context) const
Converts relative path(s) to absolute path(s) in the given provider-specific URI.
QgsProviderMetadata * providerMetadata(const QString &providerKey) const
Returns metadata of the provider or nullptr if not found.
int listStyles(const QString &providerKey, const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause)
Lists stored layer styles in the provider defined by providerKey and uri.
bool createDb(const QString &providerKey, const QString &dbPath, QString &errCause)
Creates database by the provider on the path.
bool saveStyle(const QString &providerKey, const QString &uri, const QString &qmlStyle, const QString &sldStyle, const QString &styleName, const QString &styleDescription, const QString &uiFileContent, bool useAsDefault, QString &errCause)
Saves a layer style to provider.
QSet< QString > providersForLayerType(Qgis::LayerType type) const
Returns a list of the provider keys for available providers which handle the specified layer type.
bool registerProvider(QgsProviderMetadata *providerMetadata)
register a new vector data provider from its providerMetadata
Q_DECL_DEPRECATED QFunctionPointer function(const QString &providerKey, const QString &functionName) const
Gets pointer to provider function.
QString directoryDrivers() const
Returns a string containing the available directory drivers.
bool registerUnusableUriHandler(UnusableUriHandlerInterface *handler)
Registers an unusable URI handler, used to handle unusable URIs which aren't handled by any registere...
QString filePointCloudFilters() const
Returns a file filter string for supported point clouds.
Base class for raster data providers.
A container for the context for various read/write operations on objects.
Allows creation of a multi-layer database-side transaction.
#define Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_PUSH
#define QgsDebugMsgLevel(str, level)
#define QgsDebugError(str)
void cleanupProviderFunction_t()
Setting options for creating vector data providers.