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.