31#include "providers/gdal/qgsgdalprovider.h"
32#include "providers/ogr/qgsogrprovidermetadata.h"
33#include "providers/ogr/qgsogrprovider.h"
34#include "providers/meshmemory/qgsmeshmemorydataprovider.h"
46#include "providers/ept/qgseptprovider.h"
50#include "providers/copc/qgscopcprovider.h"
51#include "providers/vpc/qgsvirtualpointcloudprovider.h"
57#ifdef HAVE_STATIC_PROVIDERS
58#include "qgswmsprovider.h"
59#include "qgswcsprovider.h"
60#include "qgsdelimitedtextprovider.h"
61#include "qgsafsprovider.h"
62#include "qgsamsprovider.h"
64#include "qgsspatialiteprovider.h"
65#include "qgswfsprovider.h"
66#include "qgswfsprovidermetadata.h"
67#include "qgsoapifprovider.h"
68#include "qgsvirtuallayerprovider.h"
71#include "qgspostgresprovider.h"
78#include <QRegularExpression>
87 const QMutexLocker locker( &sMutex );
107 const QString &providerKey )
110 const QgsProviderRegistry::Providers::const_iterator i =
111 metaData.find( providerKey );
113 if ( i != metaData.end() )
119 for (
auto it = metaData.begin(); it != metaData.end(); ++it )
121 if ( providerKey.compare( it->first, Qt::CaseInsensitive ) == 0 )
128QgsProviderRegistry::QgsProviderRegistry(
const QString &pluginPath )
136 char **argv = qApp->argv();
137 QString appDir = argv[0];
138 int bin = appDir.findRev(
"/bin", -1,
false );
139 QString baseDir = appDir.left( bin );
140 QString mLibraryDirectory = baseDir +
"/lib";
144 mLibraryDirectory.setPath( pluginPath );
152 bool matchesUri(
const QString &uri )
const override
154 const QFileInfo fi( uri );
155 if ( fi.suffix().compare( QLatin1String(
"las" ), Qt::CaseInsensitive ) == 0 || fi.suffix().compare( QLatin1String(
"laz" ), Qt::CaseInsensitive ) == 0 )
164 QObject::tr(
"LAS and LAZ files cannot be opened by this QGIS install." ),
168 res.
detailedWarning = QObject::tr(
"The installer used to install this version of QGIS does "
169 "not include the PDAL library required for opening LAS and LAZ point clouds. Please "
170 "obtain one of the alternative installers from https://qgis.org which has point "
171 "cloud support enabled." );
173 res.
detailedWarning = QObject::tr(
"This QGIS build does not include the PDAL library dependency required for opening LAS or LAZ point clouds." );
180void QgsProviderRegistry::init()
185 mProviders[ QgsMemoryProvider::providerKey() ] =
new QgsMemoryProviderMetadata();
189 mProviders[ QgsMeshMemoryDataProvider::providerKey() ] =
new QgsMeshMemoryProviderMetadata();
193 mProviders[ QgsGdalProvider::providerKey() ] =
new QgsGdalProviderMetadata();
197 mProviders[ QgsOgrProvider::providerKey() ] =
new QgsOgrProviderMetadata();
201 mProviders[ QgsSensorThingsProvider::providerKey() ] =
new QgsSensorThingsProviderMetadata();
206 mProviders[ vt->
key() ] = vt;
207 vt =
new QgsXyzVectorTileDataProviderMetadata();
208 mProviders[ vt->
key() ] = vt;
209 vt =
new QgsVtpkVectorTileDataProviderMetadata();
210 mProviders[ vt->
key() ] = vt;
211 vt =
new QgsArcGisVectorTileServiceDataProviderMetadata();
212 mProviders[ vt->
key() ] = vt;
213 vt =
new QgsMbTilesVectorTileDataProviderMetadata();
214 mProviders[ vt->
key() ] = vt;
220 mProviders[ pc->
key() ] = pc;
227 mProviders[ pc->
key() ] = pc;
232 mProviders[ pc->
key() ] = pc;
240 mProviders[ metadata->
key() ] = metadata;
242 metadata =
new QgsCesiumTilesProviderMetadata();
243 mProviders[ metadata->
key() ] = metadata;
246#ifdef HAVE_STATIC_PROVIDERS
247 mProviders[ QgsWmsProvider::providerKey() ] =
new QgsWmsProviderMetadata();
248 mProviders[ QgsWcsProvider::providerKey() ] =
new QgsWcsProviderMetadata();
249 mProviders[ QgsDelimitedTextProvider::providerKey() ] =
new QgsDelimitedTextProviderMetadata();
250 mProviders[ QgsAfsProvider::providerKey() ] =
new QgsAfsProviderMetadata();
251 mProviders[ QgsAmsProvider::providerKey() ] =
new QgsAmsProviderMetadata();
252#ifdef HAVE_SPATIALITE
253 mProviders[ QgsSpatiaLiteProvider::providerKey() ] =
new QgsSpatiaLiteProviderMetadata();
254 mProviders[ QgsWFSProvider::providerKey() ] =
new QgsWfsProviderMetadata();
255 mProviders[ QgsOapifProvider::providerKey() ] =
new QgsOapifProviderMetadata();
256 mProviders[ QgsVirtualLayerProvider::providerKey() ] =
new QgsVirtualLayerProviderMetadata();
258#ifdef HAVE_POSTGRESQL
259 mProviders[ QgsPostgresProvider::providerKey() ] =
new QgsPostgresProviderMetadata();
264#ifdef HAVE_STATIC_PROVIDERS
269 mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase );
270 mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks );
272#if defined(Q_OS_WIN) || defined(__CYGWIN__)
273 mLibraryDirectory.setNameFilters( QStringList(
"*.dll" ) );
274#elif defined(ANDROID)
275 mLibraryDirectory.setNameFilters( QStringList(
"*provider_*.so" ) );
277 mLibraryDirectory.setNameFilters( QStringList( QStringLiteral(
"*.so" ) ) );
280 QgsDebugMsgLevel( QStringLiteral(
"Checking %1 for provider plugins" ).arg( mLibraryDirectory.path() ), 2 );
282 if ( mLibraryDirectory.count() == 0 )
284 QgsDebugError( QStringLiteral(
"No dynamic QGIS data provider plugins found in:\n%1\n" ).arg( mLibraryDirectory.path() ) );
288 const QString filePattern = getenv(
"QGIS_PROVIDER_FILE" );
289 QRegularExpression fileRegexp;
290 if ( !filePattern.isEmpty() )
292 fileRegexp.setPattern( filePattern );
295 typedef std::vector<QgsProviderMetadata *> *multiple_factory_function();
297 const auto constEntryInfoList = mLibraryDirectory.entryInfoList();
298 for (
const QFileInfo &fi : constEntryInfoList )
300 if ( !filePattern.isEmpty() )
302 if ( fi.fileName().indexOf( fileRegexp ) == -1 )
304 QgsDebugMsgLevel(
"provider " + fi.fileName() +
" skipped because doesn't match pattern " + filePattern, 2 );
310 if ( fi.fileName().contains( QStringLiteral(
"authmethod" ), Qt::CaseSensitivity::CaseInsensitive ) )
316 QLibrary myLib( fi.filePath() );
319 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (lib not loadable): %2" ).arg( myLib.fileName(), myLib.errorString() ) );
323 bool libraryLoaded {
false };
324 QFunctionPointer func = myLib.resolve( QStringLiteral(
"providerMetadataFactory" ).toLatin1().data() );
331 if ( findMetadata_( mProviders, meta->
key() ) )
333 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (key %2 already registered)" ).arg( myLib.fileName() ).arg( meta->
key() ) );
338 mProviders[meta->
key()] = meta;
339 libraryLoaded =
true;
344 QFunctionPointer multi_func = myLib.resolve( QStringLiteral(
"multipleProviderMetadataFactory" ).toLatin1().data() );
345 multiple_factory_function *multi_function =
reinterpret_cast< multiple_factory_function *
>(
cast_to_fptr( multi_func ) );
346 if ( multi_function )
348 std::vector<QgsProviderMetadata *> *metadatas = multi_function();
349 for (
const auto meta : *metadatas )
351 if ( findMetadata_( mProviders, meta->
key() ) )
353 QgsDebugError( QStringLiteral(
"Checking %1: ...invalid (key %2 already registered)" ).arg( myLib.fileName() ).arg( meta->
key() ) );
358 mProviders[meta->
key()] = meta;
359 libraryLoaded =
true;
365 if ( ! libraryLoaded )
367 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...invalid (no providerMetadataFactory method)" ).arg( myLib.fileName() ), 2 );
375 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
377 const QString &key = it->first;
387 rebuildFilterStrings();
390 mDatabaseDrivers = QgsOgrProviderUtils::databaseDrivers();
393 mDirectoryDrivers = QgsOgrProviderUtils::directoryDrivers();
396 mProtocolDrivers = QgsOgrProviderUtils::protocolDrivers();
399void QgsProviderRegistry::rebuildFilterStrings()
401 mVectorFileFilters.clear();
402 mRasterFileFilters.clear();
403 mMeshFileFilters.clear();
404 mMeshDatasetFileFilters.clear();
405 mPointCloudFileFilters.clear();
406 mVectorTileFileFilters.clear();
407 mTiledSceneFileFilters.clear();
409 QStringList pointCloudWildcards;
410 QStringList pointCloudFilters;
412 QStringList vectorTileWildcards;
413 QStringList vectorTileFilters;
415 QStringList tiledSceneWildcards;
416 QStringList tiledSceneFilters;
418 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
444 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...loaded OK (%2 file mesh filters)" ).arg( it->first ).arg( mMeshFileFilters.split(
";;" ).count() ), 2 );
452 QgsDebugMsgLevel( QStringLiteral(
"Checking %1: ...loaded OK (%2 file dataset filters)" ).arg( it->first ).arg( mMeshDatasetFileFilters.split(
";;" ).count() ), 2 );
461 const QStringList filters =
filePointCloudFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
462 for (
const QString &filter : filters )
464 pointCloudFilters.append( filter );
475 const QStringList filters =
fileVectorTileFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
476 for (
const QString &filter : filters )
478 vectorTileFilters.append( filter );
489 const QStringList filters =
fileTiledSceneFilters.split( QStringLiteral(
";;" ), Qt::SkipEmptyParts );
490 for (
const QString &filter : filters )
492 tiledSceneFilters.append( filter );
498 if ( !pointCloudFilters.empty() )
500 pointCloudFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( pointCloudWildcards.join(
' ' ) ) );
501 pointCloudFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
502 mPointCloudFileFilters = pointCloudFilters.join( QLatin1String(
";;" ) );
505 if ( !vectorTileFilters.empty() )
507 vectorTileFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( vectorTileWildcards.join(
' ' ) ) );
508 vectorTileFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
509 mVectorTileFileFilters = vectorTileFilters.join( QLatin1String(
";;" ) );
512 if ( !tiledSceneFilters.empty() )
514 tiledSceneFilters.insert( 0, QObject::tr(
"All Supported Files" ) + QStringLiteral(
" (%1)" ).arg( tiledSceneWildcards.join(
' ' ) ) );
515 tiledSceneFilters.insert( 1, QObject::tr(
"All Files" ) + QStringLiteral(
" (*.*)" ) );
516 mTiledSceneFileFilters = tiledSceneFilters.join( QLatin1String(
";;" ) );
523void QgsProviderRegistry::clean()
526 if ( QgsProject::sProject )
529 Providers::const_iterator it = mProviders.begin();
531 while ( it != mProviders.end() )
534 it->second->cleanupProvider();
541bool QgsProviderRegistry::exists()
543 return static_cast< bool >( sInstance );
548 qDeleteAll( mUnusableUriHandlers );
551 if ( sInstance ==
this )
571 Providers::const_iterator it = mProviders.begin();
573 if ( mProviders.empty() )
574 return QObject::tr(
"No data provider plugins are available. No vector layers can be loaded" );
579 list += QLatin1String(
"<ol>" );
581 while ( it != mProviders.end() )
584 list += QLatin1String(
"<li>" );
586 list += it->second->description();
589 list += QLatin1String(
"<br></li>" );
597 list += QLatin1String(
"</ol>" );
604 mLibraryDirectory = path;
611 return mLibraryDirectory;
624 QgsDataProvider::ReadFlags flags )
641 const QList< QgsDataItemProvider * > itemProviders =
dataItemProviders( providerKey );
642 Qgis::DataItemProviderCapabilities ret;
646 ret |= itemProvider->capabilities();
657 return QVariantMap();
692 bool overwrite, QMap<int, int> &oldToNewAttrIdxMap,
693 QString &errorMessage,
694 const QMap<QString, QVariant> *options )
698 return meta->
createEmptyLayer( uri, fields, wkbType, srs, overwrite, oldToNewAttrIdxMap, errorMessage, options );
701 errorMessage = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
709 const QStringList &createOptions )
724 return QList<QPair<QString, QString> >();
733 return QList<QgsDataItemProvider *>();
736int QgsProviderRegistry::listStyles(
const QString &providerKey,
const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause )
742 res = meta->
listStyles( uri, ids, names, descriptions, errCause );
746 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
736int QgsProviderRegistry::listStyles(
const QString &providerKey,
const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause ) {
…}
757 return meta->
styleExists( uri, styleId, errorCause );
761 errorCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
776 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
783 const bool ret(
false );
790 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
796 const QString &sldStyle,
const QString &styleName,
const QString &styleDescription,
797 const QString &uiFileContent,
bool useAsDefault, QString &errCause )
802 ret = meta->
saveStyle( uri, qmlStyle, sldStyle, styleName, styleDescription,
803 uiFileContent, useAsDefault, errCause );
806 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
819 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
832 errCause = QObject::tr(
"Unable to load %1 provider" ).arg( providerKey );
839 errorMessage.clear();
852 return meta->
createDb( dbPath, errCause );
855 errCause = QStringLiteral(
"Resolving createDb(...) failed" );
872 Q_UNUSED( providerKey );
875 Q_UNUSED( widgetMode );
876 QgsDebugError(
"deprecated call - use QgsGui::sourceSelectProviderRegistry()->createDataSourceWidget() instead" );
881 QString
const &functionName )
const
884 const QString lib =
library( providerKey );
889 QLibrary myLib( lib );
895 return myLib.resolve( functionName.toLatin1().data() );
899 QgsDebugError(
"Cannot load library: " + myLib.errorString() );
907 const QString lib =
library( providerKey );
912 std::unique_ptr< QLibrary > myLib(
new QLibrary( lib ) );
917 return myLib.release();
919 QgsDebugError(
"Cannot load library: " + myLib->errorString() );
926 QgsDebugError(
"deprecated - use QgsGui::providerGuiRegistry() instead." );
937 rebuildFilterStrings();
947 QgsDebugMsgLevel( QStringLiteral(
"Trying to register a null metadata provider!" ), 2 );
954 return mVectorFileFilters;
959 return mRasterFileFilters;
964 return mMeshFileFilters;
969 return mMeshDatasetFileFilters;
974 return mPointCloudFileFilters;
979 return mVectorTileFileFilters;
984 return mTiledSceneFileFilters;
989 return mDatabaseDrivers;
994 return mDirectoryDrivers;
999 return mProtocolDrivers;
1005 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1007 lst.append( it->first );
1014 return findMetadata_( mProviders, providerKey );
1020 for ( Providers::const_iterator it = mProviders.begin(); it != mProviders.end(); ++it )
1022 if ( it->second->supportedLayerTypes().contains( type ) )
1023 lst.insert( it->first );
1030 QList< QgsProviderRegistry::ProviderCandidateDetails > res;
1031 int maxPriority = 0;
1032 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1037 const int thisProviderPriority = it->second->priorityForUri( uri );
1038 if ( thisProviderPriority == 0 )
1041 if ( thisProviderPriority > maxPriority )
1044 maxPriority = thisProviderPriority;
1046 if ( thisProviderPriority == maxPriority )
1056 mUnusableUriHandlers << handler;
1064 if ( handler->matchesUri( uri ) )
1066 details = handler->details( uri );
1076 if ( providers.empty() )
1081 if ( provider.metadata()->key() == providerKey )
1089 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1091 if ( it->second->uriIsBlocklisted( uri ) )
1103 QList<QgsProviderSublayerDetails> res;
1104 for (
auto it = mProviders.begin(); it != mProviders.end(); ++it )
1110 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.
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...
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.