mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -04:00
- addLayer() and addRasterLayer now take QStringList const references [0]
- now only provides file filters for supported qgis subset of GDAL drivers - disabled SDTS and GML vector format file filters as they're not yet currently supported in qgis Notes: [0] thus saving unnecessary copying of string list arguments git-svn-id: http://svn.osgeo.org/qgis/trunk@807 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
dc148c4858
commit
4194892006
@ -409,6 +409,8 @@ buildSupportedVectorFileFilter_( QString & fileFilters )
|
||||
{
|
||||
driver = driverRegistrar->GetDriver( i );
|
||||
|
||||
Q_CHECK_PTR( driver );
|
||||
|
||||
if ( ! driver )
|
||||
{
|
||||
qWarning( "unable to get driver %d", i );
|
||||
@ -432,8 +434,9 @@ buildSupportedVectorFileFilter_( QString & fileFilters )
|
||||
}
|
||||
else if ( driverName.startsWith( "SDTS" ) )
|
||||
{
|
||||
fileFilters += createFileFilter_( "Spatial Data Transfer Standard",
|
||||
"*catd.ddf" );
|
||||
// XXX not yet supported; post 0.1 release task
|
||||
// fileFilters += createFileFilter_( "Spatial Data Transfer Standard",
|
||||
// "*catd.ddf" );
|
||||
}
|
||||
else if ( driverName.startsWith( "TIGER" ) )
|
||||
{
|
||||
@ -469,8 +472,9 @@ buildSupportedVectorFileFilter_( QString & fileFilters )
|
||||
}
|
||||
else if ( driverName.startsWith( "GML" ) )
|
||||
{
|
||||
fileFilters += createFileFilter_( "Geography Markup Language",
|
||||
"*.gml" );
|
||||
// XXX not yet supported; post 0.1 release task
|
||||
// fileFilters += createFileFilter_( "Geography Markup Language",
|
||||
// "*.gml" );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -523,16 +527,18 @@ QgisApp::addLayer()
|
||||
|
||||
/** \brief overloaded vesion of the above method that takes a list of
|
||||
* filenames instead of prompting user with a dialog. */
|
||||
void QgisApp::addLayer(QStringList theLayerQStringList)
|
||||
void
|
||||
QgisApp::addLayer(QStringList const & theLayerQStringList)
|
||||
{
|
||||
// check to see if we have an ogr provider available
|
||||
QString pOgr = providerRegistry->library("ogr");
|
||||
if (pOgr.length() > 0) {
|
||||
mapCanvas->freeze();
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
QStringList::Iterator it = theLayerQStringList.begin();
|
||||
QStringList::ConstIterator it = theLayerQStringList.begin();
|
||||
while (it != theLayerQStringList.end()) {
|
||||
if (isValidVectorFileName(*it)) {
|
||||
if ( true ) {
|
||||
// if (isValidVectorFileName(*it)) {
|
||||
|
||||
QFileInfo fi(*it);
|
||||
QString base = fi.baseName();
|
||||
@ -579,6 +585,55 @@ void QgisApp::addLayer(QStringList theLayerQStringList)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The subset of GDAL formats that we currently support.
|
||||
|
||||
@note
|
||||
|
||||
Some day this won't be necessary as there'll be a time when
|
||||
theoretically we'll support everything that GDAL can throw at us.
|
||||
|
||||
These are GDAL driver description strings.
|
||||
*/
|
||||
static const char* const supportedRasterFormats_[] =
|
||||
{ "SDTS",
|
||||
"AIG",
|
||||
"AAIGrid",
|
||||
"GTiff",
|
||||
"USGSDEM",
|
||||
"HFA",
|
||||
"GRASS",
|
||||
"" // used to indicate end of list
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
returns true if the given raster driver name is one currently
|
||||
supported, otherwise it returns false
|
||||
|
||||
@param driverName GDAL driver description string
|
||||
*/
|
||||
static
|
||||
bool
|
||||
isSupportedRasterDriver_( QString const & driverName )
|
||||
{
|
||||
size_t i = 0;
|
||||
|
||||
while ( supportedRasterFormats_[i][0] ) // while not end of string list
|
||||
{
|
||||
if ( driverName == supportedRasterFormats_[i] )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return false;
|
||||
} // isSupportedRasterDriver_
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -632,12 +687,26 @@ buildSupportedRasterFileFilter_( QString & fileFilters )
|
||||
{
|
||||
driver = driverManager->GetDriver( i );
|
||||
|
||||
Q_CHECK_PTR( driver );
|
||||
|
||||
if ( ! driver )
|
||||
{
|
||||
qWarning( "unable to get driver %d", i );
|
||||
continue;
|
||||
}
|
||||
|
||||
// now we need to see if the driver is for something currently
|
||||
// supported; if not, we give it a miss for the next driver
|
||||
|
||||
if ( ! isSupportedRasterDriver_( driver->GetDescription() ) )
|
||||
{
|
||||
// not supported, therefore skip
|
||||
#ifdef QT_DEBUG
|
||||
qWarning( "skipping unsupported driver %s", driver->GetDescription() );
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
// std::cerr << "got driver string " << driver->GetDescription() << "\n";
|
||||
|
||||
driverMetadata = driver->GetMetadata();
|
||||
@ -730,7 +799,7 @@ QgisApp::addRasterLayer()
|
||||
|
||||
|
||||
|
||||
void QgisApp::addRasterLayer(QStringList theFileNameQStringList)
|
||||
void QgisApp::addRasterLayer(QStringList const & theFileNameQStringList)
|
||||
{
|
||||
if (theFileNameQStringList.empty()) { // no files selected so bail out, but
|
||||
// allow mapCanvas to handle events
|
||||
@ -740,7 +809,7 @@ void QgisApp::addRasterLayer(QStringList theFileNameQStringList)
|
||||
}
|
||||
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
for (QStringList::Iterator myIterator = theFileNameQStringList.begin(); myIterator != theFileNameQStringList.end(); ++myIterator) {
|
||||
for (QStringList::ConstIterator myIterator = theFileNameQStringList.begin(); myIterator != theFileNameQStringList.end(); ++myIterator) {
|
||||
if (isValidRasterFileName(*myIterator)) {
|
||||
QFileInfo myFileInfo(*myIterator);
|
||||
QString myDirNameQString = myFileInfo.dirPath(); //get the directory the .adf file was in
|
||||
|
@ -53,10 +53,10 @@ public:
|
||||
void addVectorLayer(QString vectorLayerPath, QString baseName, QString providerKey);
|
||||
/** \brief overloaded vesion of the privat addLayer method that takes a list of
|
||||
* filenames instead of prompting user with a dialog. */
|
||||
void addLayer(QStringList theLayerQStringList);
|
||||
void addLayer(QStringList const & theLayerQStringList);
|
||||
/** \brief overloaded vesion of the privat addLRasterayer method that takes a list of
|
||||
* filenames instead of prompting user with a dialog. */
|
||||
void addRasterLayer(QStringList theLayerQStringList);
|
||||
void addRasterLayer(QStringList const & theLayerQStringList);
|
||||
|
||||
private:
|
||||
//private:
|
||||
|
Loading…
x
Reference in New Issue
Block a user