Add QgsProviderRegistry::filePointCloudFilters() for retrieving filter string of all supported point cloud types

This commit is contained in:
Nyall Dawson 2020-11-04 09:09:54 +10:00
parent 6885a1604c
commit e59bab7f2e
4 changed files with 52 additions and 0 deletions

View File

@ -339,6 +339,22 @@ fileMeshFilters to a string, which is then returned.
.. seealso:: :py:func:`fileMeshFilters`
.. versionadded:: 3.6
%End
QString filePointCloudFilters() const;
%Docstring
Returns a file filter string for supported point clouds.
Returns a string suitable for a QFileDialog of point cloud file formats
supported by all data providers.
.. seealso:: :py:func:`fileMeshFilters`
.. seealso:: :py:func:`fileRasterFilters`
.. seealso:: :py:func:`fileVectorFilters`
.. versionadded:: 3.18
%End
QString databaseDrivers() const;

View File

@ -292,6 +292,15 @@ void QgsProviderRegistry::init()
QgsDebugMsgLevel( QStringLiteral( "Checking %1: ...loaded OK (%2 file dataset filters)" ).arg( key ).arg( mMeshDatasetFileFilters.split( ";;" ).count() ), 2 );
}
// now get point cloud file filters, if any
const QString filePointCloudFilters = meta->filters( QgsProviderMetadata::FilterType::FilterPointCloud );
if ( !filePointCloudFilters.isEmpty() )
{
QgsDebugMsgLevel( "point cloud filters: " + filePointCloudFilters, 2 );
mPointCloudFileFilters += filePointCloudFilters;
QgsDebugMsgLevel( QStringLiteral( "Checking %1: ...loaded OK (%2 file filters)" ).arg( key ).arg( filePointCloudFilters.split( ";;" ).count() ), 2 );
}
// call initProvider() - allows provider to register its services to QGIS
meta->initProvider();
}
@ -702,6 +711,11 @@ QString QgsProviderRegistry::fileMeshDatasetFilters() const
return mMeshDatasetFileFilters;
}
QString QgsProviderRegistry::filePointCloudFilters() const
{
return mPointCloudFileFilters;
}
QString QgsProviderRegistry::databaseDrivers() const
{
return mDatabaseDrivers;

View File

@ -340,6 +340,20 @@ class CORE_EXPORT QgsProviderRegistry
*/
QString fileMeshDatasetFilters() const;
/**
* Returns a file filter string for supported point clouds.
*
* Returns a string suitable for a QFileDialog of point cloud file formats
* supported by all data providers.
*
* \see fileMeshFilters()
* \see fileRasterFilters()
* \see fileVectorFilters()
*
* \since QGIS 3.18
*/
QString filePointCloudFilters() const;
//! Returns a string containing the available database drivers
QString databaseDrivers() const;
//! Returns a string containing the available directory drivers
@ -406,6 +420,11 @@ class CORE_EXPORT QgsProviderRegistry
*/
QString mMeshDatasetFileFilters;
/**
* File filter string for point cloud files
*/
QString mPointCloudFileFilters;
/**
* Available database drivers string for vector databases
*

View File

@ -82,6 +82,9 @@ void TestQgsEptProvider::filters()
QCOMPARE( metadata->filters( QgsProviderMetadata::FilterType::FilterPointCloud ), QStringLiteral( "Entwine Point Clouds (ept.json EPT.JSON)" ) );
QCOMPARE( metadata->filters( QgsProviderMetadata::FilterType::FilterVector ), QString() );
const QString registryPointCloudFilters = QgsProviderRegistry::instance()->filePointCloudFilters();
QVERIFY( registryPointCloudFilters.contains( "(ept.json EPT.JSON)" ) );
}