Skip to content

Commit 7cceaaf

Browse files
committed
replace QgsRasterLayer::buildSupportedRasterFileFilter() with QgsProviderRegistry::instance()->fileRasterFilters()
1 parent 3efe9e3 commit 7cceaaf

12 files changed

+59
-45
lines changed

python/core/qgsproviderregistry.sip

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ class QgsProviderRegistry
6969
It'd be nice to eventually be raster/vector neutral.
7070
*/
7171
virtual QString fileVectorFilters() const;
72+
/** return raster file filter string
73+
74+
Returns a string suitable for a QFileDialog of raster file formats
75+
supported by all data providers.
76+
77+
@note this method was added in QGIS 2.0
78+
@note This replaces QgsRasterLayer::buildSupportedRasterFileFilter()
79+
*/
80+
virtual QString fileRasterFilters() const;
7281
/** return a string containing the available database drivers
7382
* @note this method was added in QGIS 1.1
7483
*/

python/core/raster/qgsrasterlayer.sip

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,6 @@ class QgsRasterLayer : QgsMapLayer
7777
//
7878
// Static methods:
7979
//
80-
static void buildSupportedRasterFileFilter( QString & fileFilters );
81-
static QString buildSupportedRasterFileFilter2(); /* for sip api v2 */
8280

8381
/** This helper checks to see whether the file name appears to be a valid
8482
* raster file name. If the file name looks like it could be valid,

python/plugins/GdalTools/tools/GdalTools_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ def setFilter(self, typeName, aFilter):
428428
@classmethod
429429
def allRastersFilter(self):
430430
if self.rastersFilter == '':
431-
self.rastersFilter = QgsRasterLayer.buildSupportedRasterFileFilter2()
431+
self.rastersFilter = QgsProviderRegistry.instance().fileRasterFilters()
432432

433433
# workaround for QGis < 1.5 (see #2376)
434434
# removed as this is a core plugin QGis >= 1.9

src/app/qgisapp.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -638,11 +638,10 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
638638

639639
mSplash->showMessage( tr( "Initializing file filters" ), Qt::AlignHCenter | Qt::AlignBottom );
640640
qApp->processEvents();
641-
// now build vector file filter
642-
mVectorFileFilter = QgsProviderRegistry::instance()->fileVectorFilters();
643641

644-
// now build raster file filter
645-
QgsRasterLayer::buildSupportedRasterFileFilter( mRasterFileFilter );
642+
// now build vector and raster file filters
643+
mVectorFileFilter = QgsProviderRegistry::instance()->fileVectorFilters();
644+
mRasterFileFilter = QgsProviderRegistry::instance()->fileRasterFilters();
646645

647646
// set handler for missing layers (will be owned by QgsProject)
648647
QgsProject::instance()->setBadLayerHandler( new QgsHandleBadLayersHandler() );
@@ -6596,8 +6595,7 @@ void QgisApp::options()
65966595
//do we need this? TS
65976596
mMapCanvas->refresh();
65986597

6599-
mRasterFileFilter.clear();
6600-
QgsRasterLayer::buildSupportedRasterFileFilter( mRasterFileFilter );
6598+
mRasterFileFilter = QgsProviderRegistry::instance()->fileRasterFilters();
66016599

66026600
if ( oldScales != mySettings.value( "Map/scales", PROJECT_SCALES ).toString() )
66036601
{

src/app/qgshandlebadlayers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ QgsHandleBadLayers::QgsHandleBadLayers( const QList<QDomNode> &layers, const QDo
6363
setupUi( this );
6464

6565
mVectorFileFilter = QgsProviderRegistry::instance()->fileVectorFilters();
66-
QgsRasterLayer::buildSupportedRasterFileFilter( mRasterFileFilter );
66+
mRasterFileFilter = QgsProviderRegistry::instance()->fileRasterFilters();
6767

6868
mBrowseButton = new QPushButton( tr( "Browse" ) );
6969
buttonBox->addButton( mBrowseButton, QDialogButtonBox::ActionRole );

src/core/qgsproviderregistry.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ typedef QString providerkey_t();
3636
typedef QString description_t();
3737
typedef bool isprovider_t();
3838
typedef QString fileVectorFilters_t();
39+
typedef void buildsupportedrasterfilefilter_t( QString & theFileFiltersString );
3940
typedef QString databaseDrivers_t();
4041
typedef QString directoryDrivers_t();
4142
typedef QString protocolDrivers_t();
@@ -183,6 +184,22 @@ QgsProviderRegistry::QgsProviderRegistry( QString pluginPath )
183184

184185
QgsDebugMsg( QString( "Checking %1: ...loaded ok (%2 file filters)" ).arg( myLib.fileName() ).arg( fileVectorFilters.split( ";;" ).count() ) );
185186
}
187+
188+
// now get raster file filters, if any
189+
// this replaces deprecated QgsRasterLayer::buildSupportedRasterFileFilter
190+
buildsupportedrasterfilefilter_t *pBuild =
191+
( buildsupportedrasterfilefilter_t * ) cast_to_fptr( myLib.resolve( "buildSupportedRasterFileFilter" ) );
192+
if ( pBuild )
193+
{
194+
QString fileRasterFilters;
195+
pBuild( fileRasterFilters );
196+
197+
QgsDebugMsg( "raster filters: "+fileRasterFilters);
198+
if ( !fileRasterFilters.isEmpty() )
199+
mRasterFileFilters += fileRasterFilters;
200+
201+
QgsDebugMsg( QString( "Checking %1: ...loaded ok (%2 file filters)" ).arg( myLib.fileName() ).arg( fileRasterFilters.split( ";;" ).count() ) );
202+
}
186203
}
187204
} // QgsProviderRegistry ctor
188205

@@ -411,6 +428,11 @@ QString QgsProviderRegistry::fileVectorFilters() const
411428
return mVectorFileFilters;
412429
}
413430

431+
QString QgsProviderRegistry::fileRasterFilters() const
432+
{
433+
return mRasterFileFilters;
434+
}
435+
414436
QString QgsProviderRegistry::databaseDrivers() const
415437
{
416438
return mDatabaseDrivers;

src/core/qgsproviderregistry.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,18 @@ class CORE_EXPORT QgsProviderRegistry
100100
It'd be nice to eventually be raster/vector neutral.
101101
*/
102102
virtual QString fileVectorFilters() const;
103+
/** return raster file filter string
104+
105+
Returns a string suitable for a QFileDialog of raster file formats
106+
supported by all data providers.
107+
108+
This walks through all data providers appending calls to their
109+
buildSupportedRasterFileFilter to a string, which is then returned.
110+
111+
@note this method was added in QGIS 2.0
112+
@note This replaces QgsRasterLayer::buildSupportedRasterFileFilter()
113+
*/
114+
virtual QString fileRasterFilters() const;
103115
/** return a string containing the available database drivers
104116
* @note this method was added in QGIS 1.1
105117
*/
@@ -165,6 +177,9 @@ class CORE_EXPORT QgsProviderRegistry
165177
one time.
166178
*/
167179
QString mVectorFileFilters;
180+
/** file filter string for raster files
181+
*/
182+
QString mRasterFileFilters;
168183
/** Available database drivers string for vector databases
169184
170185
This is a string of form:

src/core/raster/qgsrasterlayer.cpp

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ email : tim at linfiniti.com
6868
#include <QTime>
6969

7070
// typedefs for provider plugin functions of interest
71-
typedef void buildsupportedrasterfilefilter_t( QString & theFileFiltersString );
7271
typedef bool isvalidrasterfilename_t( QString const & theFileNameQString, QString & retErrMsg );
7372

7473
#define ERR(message) QGS_ERROR_MESSAGE(message,"Raster layer")
@@ -162,33 +161,6 @@ QgsRasterLayer::~QgsRasterLayer()
162161
// Static Methods and members
163162
//
164163
/////////////////////////////////////////////////////////
165-
/**
166-
Builds the list of file filter strings to later be used by
167-
QgisApp::addRasterLayer()
168-
We query GDAL for a list of supported raster formats; we then build
169-
a list of file filter strings from that list. We return a string
170-
that contains this list that is suitable for use in a
171-
QFileDialog::getOpenFileNames() call.
172-
*/
173-
void QgsRasterLayer::buildSupportedRasterFileFilter( QString & theFileFiltersString )
174-
{
175-
QgsDebugMsg( "Entered" );
176-
buildsupportedrasterfilefilter_t *pBuild = ( buildsupportedrasterfilefilter_t * ) cast_to_fptr( QgsProviderRegistry::instance()->function( "gdal", "buildSupportedRasterFileFilter" ) );
177-
if ( ! pBuild )
178-
{
179-
QgsDebugMsg( "Could not get buildSupportedRasterFileFilter in gdal provider library" );
180-
return;
181-
}
182-
183-
pBuild( theFileFiltersString );
184-
}
185-
186-
QString QgsRasterLayer::buildSupportedRasterFileFilter2( )
187-
{
188-
QString theFileFiltersString;
189-
buildSupportedRasterFileFilter( theFileFiltersString );
190-
return theFileFiltersString;
191-
}
192164

193165
/**
194166
* This helper checks to see whether the file name appears to be a valid raster file name

src/core/raster/qgsrasterlayer.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,6 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
228228
ColorLayer
229229
};
230230

231-
static void buildSupportedRasterFileFilter( QString & fileFilters );
232-
static QString buildSupportedRasterFileFilter2(); /* for sip api v2 */
233-
234231
/** This helper checks to see whether the file name appears to be a valid
235232
* raster file name. If the file name looks like it could be valid,
236233
* but some sort of error occurs in processing the file, the error is

src/plugins/georeferencer/qgsgeorefplugingui.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "qgsproject.h"
4949
#include "qgsrasterlayer.h"
5050
#include "../../app/qgsrasterlayerproperties.h"
51+
#include "qgsproviderregistry.h"
5152

5253
#include "qgsgeorefdatapoint.h"
5354
#include "qgsgeoreftooladdpoint.h"
@@ -211,8 +212,7 @@ void QgsGeorefPluginGui::openRaster()
211212
QString otherFiles = tr( "All other files (*)" );
212213
QString lastUsedFilter = s.value( "/Plugin-GeoReferencer/lastusedfilter", otherFiles ).toString();
213214

214-
QString filters;
215-
QgsRasterLayer::buildSupportedRasterFileFilter( filters );
215+
QString filters = QgsProviderRegistry::instance()->fileRasterFilters();
216216
filters.prepend( otherFiles + ";;" );
217217
filters.chop( otherFiles.size() + 2 );
218218
mRasterFileName = QFileDialog::getOpenFileName( this, tr( "Open raster" ), dir, filters, &lastUsedFilter );

src/plugins/georeferencer/qgsopenrasterdialog.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ void QgsOpenRasterDialog::on_tbnSelectRaster_clicked()
6464

6565
QString lastUsedFilter = settings.value( "/Plugin-GeoReferencer/lastusedfilter" ).toString();
6666

67-
QString filters;
68-
QgsRasterLayer::buildSupportedRasterFileFilter( filters );
67+
QString filters = QgsProviderRegistry::instance()->fileRasterFilters();
6968
filters.prepend( "(*.*);;" );
7069
QString rasterFileName = QFileDialog::getOpenFileName( this, tr( "Choose a name of the raster" ), dir,
7170
filters, &lastUsedFilter );

src/providers/gdal/qgsgdalprovider.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,6 +1818,8 @@ void buildSupportedRasterFileFilterAndExtensions( QString & theFileFiltersString
18181818

18191819
GDALDriverH jp2Driver = NULL; // first JPEG2000 driver found
18201820

1821+
QgsGdalProviderBase::registerGdalDrivers();
1822+
18211823
// Grind through all the drivers and their respective metadata.
18221824
// We'll add a file filter for those drivers that have a file
18231825
// extension defined for them; the others, well, even though
@@ -1832,6 +1834,8 @@ void buildSupportedRasterFileFilterAndExtensions( QString & theFileFiltersString
18321834
// start with the default case
18331835
theFileFiltersString = QObject::tr( "[GDAL] All files (*)" );
18341836

1837+
QgsDebugMsg( QString( "GDAL driver count: %1" ).arg( GDALGetDriverCount() ) );
1838+
18351839
for ( int i = 0; i < GDALGetDriverCount(); ++i )
18361840
{
18371841
myGdalDriver = GDALGetDriver( i );

0 commit comments

Comments
 (0)