31#include "providers/gdal/qgsgdalprovider.h"
32#include "providers/ogr/qgsogrprovidermetadata.h"
33#include "providers/ogr/qgsogrprovider.h"
34#include "providers/meshmemory/qgsmeshmemorydataprovider.h"
45#include "providers/ept/qgseptprovider.h"
49#include "providers/copc/qgscopcprovider.h"
50#include "providers/vpc/qgsvirtualpointcloudprovider.h"
56#ifdef HAVE_STATIC_PROVIDERS
57#include "qgswmsprovider.h"
58#include "qgswcsprovider.h"
59#include "qgsdelimitedtextprovider.h"
60#include "qgsafsprovider.h"
61#include "qgsamsprovider.h"
63#include "qgsspatialiteprovider.h"
64#include "qgswfsprovider.h"
65#include "qgswfsprovidermetadata.h"
66#include "qgsoapifprovider.h"
67#include "qgsvirtuallayerprovider.h"
70#include "qgspostgresprovider.h"
77#include <QRegularExpression>
86 const QMutexLocker locker( &sMutex );
106 const QString &providerKey )
109 const QgsProviderRegistry::Providers::const_iterator i =
110 metaData.find( providerKey );
112 if ( i != metaData.end() )
118 for (
auto it = metaData.begin(); it != metaData.end(); ++it )
120 if ( providerKey.compare( it->first, Qt::CaseInsensitive ) == 0 )
127QgsProviderRegistry::QgsProviderRegistry(
const QString &pluginPath )
135 char **argv = qApp->argv();
136 QString appDir = argv[0];
137 int bin = appDir.findRev(
"/bin", -1,
false );
138 QString baseDir = appDir.left( bin );
139 QString mLibraryDirectory = baseDir +
"/lib";
143 mLibraryDirectory.setPath( pluginPath );
151 bool matchesUri(
const QString &uri )
const override
153 const QFileInfo fi( uri );
154 if ( fi.suffix().compare( QLatin1String(
"las" ), Qt::CaseInsensitive ) == 0 || fi.suffix().compare( QLatin1String(
"laz" ), Qt::CaseInsensitive ) == 0 )
163 QObject::tr(
"LAS and LAZ files cannot be opened by this QGIS install." ),
167 res.
detailedWarning = QObject::tr(
"The installer used to install this version of QGIS does "
168 "not include the PDAL library required for opening LAS and LAZ point clouds. Please "
169 "obtain one of the alternative installers from https://qgis.org which has point "
170 "cloud support enabled." );
172 res.
detailedWarning = QObject::tr(
"This QGIS build does not include the PDAL library dependency required for opening LAS or LAZ point clouds." );
179void QgsProviderRegistry::init()
184 mProviders[ QgsMemoryProvider::providerKey() ] =
new QgsMemoryProviderMetadata();
188 mProviders[ QgsMeshMemoryDataProvider::providerKey() ] =
new QgsMeshMemoryProviderMetadata();
192 mProviders[ QgsGdalProvider::providerKey() ] =
new QgsGdalProviderMetadata();
196 mProviders[ QgsOgrProvider::providerKey() ] =
new QgsOgrProviderMetadata();
201 mProviders[ vt->
key() ] = vt;
202 vt =
new QgsXyzVectorTileDataProviderMetadata();
203 mProviders[ vt->
key() ] = vt;
204 vt =
new QgsVtpkVectorTileDataProviderMetadata();
205 mProviders[ vt->
key() ] = vt;
206 vt =
new QgsArcGisVectorTileServiceDataProviderMetadata();
207 mProviders[ vt->
key() ] = vt;
208 vt =
new QgsMbTilesVectorTileDataProviderMetadata();
209 mProviders[ vt->
key() ] = vt;
215 mProviders[ pc->
key() ] = pc;
222 mProviders[ pc->
key() ] = pc;
227 mProviders[ pc->
key() ] = pc;
235 mProviders[ metadata->
key() ] = metadata;
237 metadata =
new QgsCesiumTilesProviderMetadata();
238 mProviders[ metadata->
key() ] = metadata;
241#ifdef HAVE_STATIC_PROVIDERS
242 mProviders[ QgsWmsProvider::providerKey() ] =
new QgsWmsProviderMetadata();
243 mProviders[ QgsWcsProvider::providerKey() ] =
new QgsWcsProviderMetadata();
244 mProviders[ QgsDelimitedTextProvider::providerKey() ] =
new QgsDelimitedTextProviderMetadata();
245 mProviders[ QgsAfsProvider::providerKey() ] =
new QgsAfsProviderMetadata();
246 mProviders[ QgsAmsProvider::providerKey() ] =
new QgsAmsProviderMetadata();
247#ifdef HAVE_SPATIALITE
248 mProviders[ QgsSpatiaLiteProvider::providerKey() ] =
new QgsSpatiaLiteProviderMetadata();
249 mProviders[ QgsWFSProvider::providerKey() ] =
new QgsWfsProviderMetadata();
250 mProviders[ QgsOapifProvider::providerKey() ] =
new QgsOapifProviderMetadata();
251 mProviders[ QgsVirtualLayerProvider::providerKey() ] =
new QgsVirtualLayerProviderMetadata();
253#ifdef HAVE_POSTGRESQL
254 mProviders[ QgsPostgresProvider::providerKey() ] =
new QgsPostgresProviderMetadata();
259#ifdef HAVE_STATIC_PROVIDERS
264 mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase );
265 mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks );
267#if defined(Q_OS_WIN) || defined(__CYGWIN__)
268 mLibraryDirectory.setNameFilters( QStringList(
"*.dll" ) );
269#elif defined(ANDROID)
270 mLibraryDirectory.setNameFilters( QStringList(
"*provider_*.so" ) );
272 mLibraryDirectory.setNameFilters( QStringList( QStringLiteral(
"*.so" ) ) );
275 QgsDebugMsgLevel( QStringLiteral(
"Checking %1 for provider plugins" ).arg( mLibraryDirectory.path() ), 2 );
277 if ( mLibraryDirectory.count() == 0 )
279 QgsDebugError( QStringLiteral(
"No dynamic QGIS data provider plugins found in:\n%1\n" ).arg( mLibraryDirectory.path() ) );
283 const QString filePattern = getenv(
"QGIS_PROVIDER_FILE" );
284 QRegularExpression fileRegexp;
285 if ( !filePattern.isEmpty() )
287 fileRegexp.setPattern( filePattern );
290 typedef std::vector<QgsProviderMetadata *> *multiple_factory_function();
292 const auto constEntryInfoList = mLibraryDirectory.entryInfoList();
293 for (
const QFileInfo &fi : constEntryInfoList )
295 if ( !filePattern.isEmpty() )
297 if ( fi.fileName().indexOf( fileRegexp ) == -1 )
299 QgsDebugMsgLevel(
"provider " + fi.fileName() +
" skipped because doesn't match pattern " + filePattern, 2 );
305 if ( fi.fileName().contains( QStringLiteral(
"authmethod" ), Qt::CaseSensitivity::CaseInsensitive ) )
311 QLibrary myLib( fi.filePath() );
314 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (lib not loadable): %2" ).arg( myLib.fileName(), myLib.errorString() ) );
318 bool libraryLoaded {
false };
319 QFunctionPointer func = myLib.resolve( QStringLiteral(
"providerMetadataFactory" ).toLatin1().data() );
326 if ( findMetadata_( mProviders, meta->
key() ) )
328 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (key %2 already registered)" ).arg( myLib.fileName() ).arg( meta->
key() ) );
333 mProviders[meta->
key()] = meta;
334 libraryLoaded =
true;
339 QFunctionPointer multi_func = myLib.resolve( QStringLiteral(
"multipleProviderMetadataFactory" ).toLatin1().data() );
340 multiple_factory_function *multi_function =
reinterpret_cast< multiple_factory_function *
>(
cast_to_fptr( multi_func ) );
341 if ( multi_function )
343 std::vector<QgsProviderMetadata *> *metadatas = multi_function();
344 for (
const auto meta : *metadatas )
346 if ( findMetadata_( mProviders, meta->
key() ) )
348 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (key %2 already registered)" ).arg( myLib.fileName() ).arg( meta->
key() ) );
353 mProviders[meta->
key()] = meta;
354 libraryLoaded =
true;
360 if ( ! libraryLoaded )
362 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...invalid (no providerMetadataFactory method)" ).arg( myLib.fileName() ), 2 );
370 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
372 const QString &key = it->first;
382 rebuildFilterStrings();
385 mDatabaseDrivers = QgsOgrProviderUtils::databaseDrivers();
388 mDirectoryDrivers = QgsOgrProviderUtils::directoryDrivers();
391 mProtocolDrivers = QgsOgrProviderUtils::protocolDrivers();
394void QgsProviderRegistry::rebuildFilterStrings()
396 mVectorFileFilters.clear();
397 mRasterFileFilters.clear();
398 mMeshFileFilters.clear();
399 mMeshDatasetFileFilters.clear();
400 mPointCloudFileFilters.clear();
401 mVectorTileFileFilters.clear();
402 mTiledSceneFileFilters.clear();
404 QStringList pointCloudWildcards;
405 QStringList pointCloudFilters;
407 QStringList vectorTileWildcards;
408 QStringList vectorTileFilters;
410 QStringList tiledSceneWildcards;
411 QStringList tiledSceneFilters;
413 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
439 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...loaded OK (%2 file mesh filters)" ).arg( it->first ).arg( mMeshFileFilters.split(
";;" ).count() ), 2 );
447 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...loaded OK (%2 file dataset filters)" ).arg( it->first ).arg( mMeshDatasetFileFilters.split(
";;" ).count() ), 2 );
456#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
457 const QStringList filters =
filePointCloudFilters.split( QStringLiteral(
";;" ), QString::SkipEmptyParts );
459 const QStringList filters =
filePointCloudFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
461 for (
const QString &filter : filters )
463 pointCloudFilters.append( filter );
474#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
475 const QStringList filters =
fileVectorTileFilters.split( QStringLiteral(
";;" ), QString::SkipEmptyParts );
477 const QStringList filters =
fileVectorTileFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
479 for (
const QString &filter : filters )
481 vectorTileFilters.append( filter );
492#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
493 const QStringList filters =
fileTiledSceneFilters.split( QStringLiteral(
";;" ), QString::SkipEmptyParts );
495 const QStringList filters =
fileTiledSceneFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
497 for (
const QString &filter : filters )
499 tiledSceneFilters.append( filter );
505 if ( !pointCloudFilters.empty() )
507 pointCloudFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( pointCloudWildcards.join(
' ' ) ) );
508 pointCloudFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
509 mPointCloudFileFilters = pointCloudFilters.join( QLatin1String(
";;" ) );
512 if ( !vectorTileFilters.empty() )
514 vectorTileFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( vectorTileWildcards.join(
' ' ) ) );
515 vectorTileFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
516 mVectorTileFileFilters = vectorTileFilters.join( QLatin1String(
";;" ) );
519 if ( !tiledSceneFilters.empty() )
521 tiledSceneFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( tiledSceneWildcards.join(
' ' ) ) );
522 tiledSceneFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
523 mTiledSceneFileFilters = tiledSceneFilters.join( QLatin1String(
";;" ) );
530void QgsProviderRegistry::clean()
533 if ( QgsProject::sProject )
536 Providers::const_iterator it = mProviders.begin();
538 while ( it != mProviders.end() )
541 it->second->cleanupProvider();
548bool QgsProviderRegistry::exists()
550 return static_cast< bool >( sInstance );
555 qDeleteAll( mUnusableUriHandlers );
558 if ( sInstance ==
this )
578 Providers::const_iterator it = mProviders.begin();
580 if ( mProviders.empty() )
581 return QObject::tr(
"No data provider plugins are available. No vector layers can be loaded" );
586 list += QLatin1String(
"<ol>" );
588 while ( it != mProviders.end() )
591 list += QLatin1String(
"<li>" );
593 list += it->second->description();
596 list += QLatin1String(
"<br></li>" );
604 list += QLatin1String(
"</ol>" );
611 mLibraryDirectory = path;
618 return mLibraryDirectory;
631 QgsDataProvider::ReadFlags flags )
648 const QList< QgsDataItemProvider * > itemProviders =
dataItemProviders( providerKey );
653 ret = ret | itemProvider->capabilities();
664 return QVariantMap();
699 bool overwrite, QMap<int, int> &oldToNewAttrIdxMap,
700 QString &errorMessage,
701 const QMap<QString, QVariant> *options )
705 return meta->
createEmptyLayer( uri, fields, wkbType, srs, overwrite, oldToNewAttrIdxMap, errorMessage, options );
708 errorMessage = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
716 const QStringList &createOptions )
731 return QList<QPair<QString, QString> >();
740 return QList<QgsDataItemProvider *>();
743int QgsProviderRegistry::listStyles(
const QString &providerKey,
const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause )
749 res = meta->
listStyles( uri, ids, names, descriptions, errCause );
753 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
764 return meta->
styleExists( uri, styleId, errorCause );
768 errorCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
783 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
790 const bool ret(
false );
797 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
803 const QString &sldStyle,
const QString &styleName,
const QString &styleDescription,
804 const QString &uiFileContent,
bool useAsDefault, QString &errCause )
809 ret = meta->
saveStyle( uri, qmlStyle, sldStyle, styleName, styleDescription,
810 uiFileContent, useAsDefault, errCause );
813 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
826 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
839 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
846 errorMessage.clear();
859 return meta->
createDb( dbPath, errCause );
862 errCause = QStringLiteral(
"Resolving createDb(...) failed" );
879 Q_UNUSED( providerKey );
882 Q_UNUSED( widgetMode );
883 QgsDebugError(
"deprecated call - use QgsGui::sourceSelectProviderRegistry()->createDataSourceWidget() instead" );
888 QString
const &functionName )
const
891 const QString lib =
library( providerKey );
896 QLibrary myLib( lib );
902 return myLib.resolve( functionName.toLatin1().data() );
906 QgsDebugError(
"Cannot load library: " + myLib.errorString() );
914 const QString lib =
library( providerKey );
919 std::unique_ptr< QLibrary > myLib(
new QLibrary( lib ) );
924 return myLib.release();
926 QgsDebugError(
"Cannot load library: " + myLib->errorString() );
933 QgsDebugError(
"deprecated - use QgsGui::providerGuiRegistry() instead." );
944 rebuildFilterStrings();
954 QgsDebugMsgLevel( QStringLiteral(
"Trying to register a null metadata provider!" ), 2 );
961 return mVectorFileFilters;
966 return mRasterFileFilters;
971 return mMeshFileFilters;
976 return mMeshDatasetFileFilters;
981 return mPointCloudFileFilters;
986 return mVectorTileFileFilters;
991 return mTiledSceneFileFilters;
996 return mDatabaseDrivers;
1001 return mDirectoryDrivers;
1006 return mProtocolDrivers;
1012 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1014 lst.append( it->first );
1021 return findMetadata_( mProviders, providerKey );
1027 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1029 if ( it->second->supportedLayerTypes().contains( type ) )
1030 lst.insert( it->first );
1037 QList< QgsProviderRegistry::ProviderCandidateDetails > res;
1038 int maxPriority = 0;
1039 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1044 const int thisProviderPriority = it->second->priorityForUri( uri );
1045 if ( thisProviderPriority == 0 )
1048 if ( thisProviderPriority > maxPriority )
1051 maxPriority = thisProviderPriority;
1053 if ( thisProviderPriority == maxPriority )
1063 mUnusableUriHandlers << handler;
1071 if ( handler->matchesUri( uri ) )
1073 details = handler->details( uri );
1083 if ( providers.empty() )
1088 if ( provider.metadata()->key() == providerKey )
1096 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1098 if ( it->second->uriIsBlocklisted( uri ) )
1110 QList<QgsProviderSublayerDetails> res;
1111 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1117 res.append( it->second->querySublayers( uri, flags, feedback ) );
@ TiledScene
Tiled scene layers (since QGIS 3.34)
@ VectorTile
Vector tile layers (since QGIS 3.32)
@ MeshDataset
Mesh datasets.
@ PointCloud
Point clouds (since QGIS 3.18)
VectorExportResult
Vector layer export result codes.
@ ErrorInvalidProvider
Could not find a matching provider key.
DataType
Raster data types.
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.
This class represents a coordinate reference system (CRS).
This is the interface for those who want to 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 filt...
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
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.
QgsDataProvider * createProvider(const QString &providerKey, const QString &dataSource, const QgsDataProvider::ProviderOptions &options=QgsDataProvider::ProviderOptions(), QgsDataProvider::ReadFlags flags=QgsDataProvider::ReadFlags())
Creates a new instance of a provider.
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.
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.
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.
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)
Creates new empty vector layer.
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.
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.
Q_DECL_DEPRECATED int providerCapabilities(const QString &providerKey) const
Returns the provider capabilities.
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.
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...
Q_DECL_DEPRECATED QWidget * createSelectionWidget(const QString &providerKey, QWidget *parent=nullptr, Qt::WindowFlags fl=Qt::WindowFlags(), QgsProviderRegistry::WidgetMode widgetMode=QgsProviderRegistry::WidgetMode::None)
Returns a new widget for selecting layers from a provider.
QString filePointCloudFilters() const
Returns a file filter string for supported point clouds.
Base class for raster data providers.
The class is used as a container of context for various read/write operations on other objects.
Scoped object for logging of the runtime for a single operation or group of operations.
This class allows including a set of layers in a database-side transaction, provided the layer data p...
#define Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_PUSH
#define QgsDebugMsgLevel(str, level)
#define QgsDebugError(str)
void cleanupProviderFunction_t()
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.