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;
641 const QList< QgsDataItemProvider * > itemProviders =
dataItemProviders( providerKey );
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 );
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.
QFlags< DataItemProviderCapability > DataItemProviderCapabilities
Capabilities for data item providers.
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.
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.
QFlags< ReadFlag > ReadFlags
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.