[QGIS Commit] r15165 - in trunk/qgis/src: app/ogr core providers/ogr
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sun Feb 13 12:20:42 EST 2011
Author: jef
Date: 2011-02-13 09:20:42 -0800 (Sun, 13 Feb 2011)
New Revision: 15165
Modified:
trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp
trunk/qgis/src/core/qgsvectorfilewriter.cpp
trunk/qgis/src/core/qgsvectorfilewriter.h
trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
Log:
fix #3477 & #3778
Modified: trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
===================================================================
--- trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp 2011-02-13 11:39:26 UTC (rev 15164)
+++ trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp 2011-02-13 17:20:42 UTC (rev 15165)
@@ -98,13 +98,11 @@
QStringList QgsOpenVectorLayerDialog::openFile()
{
-
QStringList selectedFiles;
QgsDebugMsg( "Vector file filters: " + mVectorFileFilter );
QString enc = encoding();
QString title = tr( "Open an OGR Supported Vector Layer" );
- QgisGui::openFilesRememberingFilter( "lastVectorFileFilter", mVectorFileFilter, selectedFiles, enc,
- title );
+ QgisGui::openFilesRememberingFilter( "lastVectorFileFilter", mVectorFileFilter, selectedFiles, enc, title );
return selectedFiles;
}
Modified: trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp
===================================================================
--- trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp 2011-02-13 11:39:26 UTC (rev 15164)
+++ trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp 2011-02-13 17:20:42 UTC (rev 15165)
@@ -26,15 +26,15 @@
#include <QTextCodec>
QgsVectorLayerSaveAsDialog::QgsVectorLayerSaveAsDialog( QWidget* parent, Qt::WFlags fl )
- : QDialog( parent, fl )
- , mCRS( -1 )
+ : QDialog( parent, fl )
+ , mCRS( -1 )
{
setupUi( this );
QSettings settings;
QMap<QString, QString> map = QgsVectorFileWriter::ogrDriverList();
mFormatComboBox->blockSignals( true );
- for( QMap< QString, QString>::const_iterator it = map.constBegin(); it != map.constEnd(); ++it )
+ for ( QMap< QString, QString>::const_iterator it = map.constBegin(); it != map.constEnd(); ++it )
{
mFormatComboBox->addItem( it.key(), it.value() );
}
@@ -47,7 +47,7 @@
QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
int idx = mEncodingComboBox->findText( enc );
- if( idx < 0 )
+ if ( idx < 0 )
{
mEncodingComboBox->insertItem( 0, enc );
idx = 0;
@@ -77,14 +77,21 @@
browseFilename->setEnabled( true );
leFilename->setEnabled( true );
- if( format() == "KML" )
+ if ( format() == "KML" )
{
mEncodingComboBox->setCurrentIndex( mEncodingComboBox->findText( "UTF-8" ) );
mEncodingComboBox->setDisabled( true );
+ mSkipAttributeCreation->setEnabled( true );
}
+ else if ( format() == "DXF" )
+ {
+ mSkipAttributeCreation->setChecked( true );
+ mSkipAttributeCreation->setDisabled( true );
+ }
else
{
mEncodingComboBox->setEnabled( true );
+ mSkipAttributeCreation->setEnabled( true );
}
}
@@ -94,7 +101,7 @@
QString dirName = leFilename->text().isEmpty() ? settings.value( "/UI/lastVectorFileFilterDir", "." ).toString() : leFilename->text();
QString filterString = QgsVectorFileWriter::filterForDriver( format() );
QString outputFile = QFileDialog::getSaveFileName( 0, tr( "Save layer as..." ), dirName, filterString );
- if( !outputFile.isNull() )
+ if ( !outputFile.isNull() )
{
leFilename->setText( outputFile );
}
@@ -103,12 +110,12 @@
void QgsVectorLayerSaveAsDialog::on_browseCRS_clicked()
{
QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector();
- if( mCRS >= 0 )
+ if ( mCRS >= 0 )
mySelector->setSelectedCrsId( mCRS );
mySelector->setMessage( tr( "Select the coordinate reference system for the vector file. "
"The data points will be transformed from the layer coordinate reference system." ) );
- if( mySelector->exec() )
+ if ( mySelector->exec() )
{
QgsCoordinateReferenceSystem srs( mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
mCRS = srs.srsid();
Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp 2011-02-13 11:39:26 UTC (rev 15164)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp 2011-02-13 17:20:42 UTC (rev 15165)
@@ -117,6 +117,18 @@
}
else
{
+ QString longName;
+ QString trLongName;
+ QString glob;
+ QString ext;
+ if ( QgsVectorFileWriter::driverMetadata( driverName, longName, trLongName, glob, ext ) )
+ {
+ if ( !vectorFileName.endsWith( "." + ext, Qt::CaseInsensitive ) )
+ {
+ vectorFileName += "." + ext;
+ }
+ }
+
QFile::remove( vectorFileName );
}
@@ -730,11 +742,14 @@
QString drvName = OGR_Dr_GetName( drv );
if ( OGR_Dr_TestCapability( drv, "CreateDataSource" ) != 0 )
{
- QPair<QString, QString> p = nameAndGlob( drvName );
- if ( p.first.isEmpty() )
- continue;
-
- resultMap.insert( p.first, drvName );
+ QString longName;
+ QString trLongName;
+ QString glob;
+ QString ext;
+ if ( QgsVectorFileWriter::driverMetadata( drvName, longName, trLongName, glob, ext ) && !trLongName.isEmpty() )
+ {
+ resultMap.insert( trLongName, drvName );
+ }
}
}
}
@@ -759,119 +774,165 @@
QString QgsVectorFileWriter::filterForDriver( const QString& driverName )
{
- QPair<QString, QString> p = nameAndGlob( driverName );
-
- if ( p.first.isEmpty() || p.second.isEmpty() )
+ QString longName;
+ QString trLongName;
+ QString glob;
+ QString ext;
+ if ( !QgsVectorFileWriter::driverMetadata( driverName, longName, trLongName, glob, ext )
+ || trLongName.isEmpty()
+ || glob.isEmpty()
+ )
return "";
- return "[OGR] " + p.first + " (" + p.second.toLower() + " " + p.second.toUpper() + ")";
+ return trLongName + " [OGR] (" + glob.toLower() + " " + glob.toUpper() + ")";
}
-QPair<QString, QString> QgsVectorFileWriter::nameAndGlob( QString driverName )
+bool QgsVectorFileWriter::driverMetadata( QString driverName, QString &longName, QString &trLongName, QString &glob, QString &ext )
{
- QString longName;
- QString glob;
-
if ( driverName.startsWith( "AVCE00" ) )
{
longName = "Arc/Info ASCII Coverage";
+ trLongName = QObject::tr( "Arc/Info ASCII Coverage" );
glob = "*.e00";
+ ext = "e00";
}
else if ( driverName.startsWith( "BNA" ) )
{
longName = "Atlas BNA";
+ trLongName = QObject::tr( "Atlas BNA" );
glob = "*.bna";
+ ext = "bna";
}
else if ( driverName.startsWith( "CSV" ) )
{
longName = "Comma Separated Value";
+ trLongName = QObject::tr( "Comma Separated Value" );
glob = "*.csv";
+ ext = "*.bna";
}
else if ( driverName.startsWith( "ESRI" ) )
{
longName = "ESRI Shapefile";
+ trLongName = QObject::tr( "ESRI Shapefile" );
glob = "*.shp";
+ ext = "shp";
}
else if ( driverName.startsWith( "FMEObjects Gateway" ) )
{
longName = "FMEObjects Gateway";
+ trLongName = QObject::tr( "FMEObjects Gateway" );
glob = "*.fdd";
+ ext = "fdd";
}
else if ( driverName.startsWith( "GeoJSON" ) )
{
longName = "GeoJSON";
+ trLongName = QObject::tr( "GeoJSON" );
glob = "*.geojson";
+ ext = "geojson";
}
else if ( driverName.startsWith( "GeoRSS" ) )
{
longName = "GeoRSS";
+ trLongName = QObject::tr( "GeoRSS" );
glob = "*.xml";
+ ext = "xml";
}
else if ( driverName.startsWith( "GML" ) )
{
longName = "Geography Markup Language (GML)";
+ trLongName = QObject::tr( "Geography Markup Language (GML)" );
glob = "*.gml";
+ ext = "gml";
}
else if ( driverName.startsWith( "GMT" ) )
{
longName = "Generic Mapping Tools (GMT)";
+ trLongName = QObject::tr( "Generic Mapping Tools (GMT)" );
glob = "*.gmt";
+ ext = "gmt";
}
else if ( driverName.startsWith( "GPX" ) )
{
longName = "GPS eXchange Format";
+ trLongName = QObject::tr( "GPS eXchange Format" );
glob = "*.gpx";
+ ext = "gpx";
}
else if ( driverName.startsWith( "Interlis 1" ) )
{
longName = "INTERLIS 1";
+ trLongName = QObject::tr( "INTERLIS 1" );
glob = "*.itf *.xml *.ili";
+ ext = "ili";
}
else if ( driverName.startsWith( "Interlis 2" ) )
{
longName = "INTERLIS 2";
+ trLongName = QObject::tr( "INTERLIS 2" );
glob = "*.itf *.xml *.ili";
+ ext = "ili";
}
else if ( driverName.startsWith( "KML" ) )
{
longName = "Keyhole Markup Language (KML)";
+ trLongName = QObject::tr( "Keyhole Markup Language (KML)" );
glob = "*.kml" ;
+ ext = "kml" ;
}
else if ( driverName.startsWith( "MapInfo File" ) )
{
longName = "Mapinfo File";
+ trLongName = QObject::tr( "Mapinfo File" );
glob = "*.mif *.tab";
+ ext = "mif" ;
}
else if ( driverName.startsWith( "DGN" ) )
{
longName = "Microstation DGN";
+ trLongName = QObject::tr( "Microstation DGN" );
glob = "*.dgn";
+ ext = "dgn";
}
else if ( driverName.startsWith( "S57" ) )
{
longName = "S-57 Base file";
+ trLongName = QObject::tr( "S-57 Base file" );
glob = "*.000";
+ ext = "000";
}
else if ( driverName.startsWith( "SDTS" ) )
{
longName = "Spatial Data Transfer Standard (SDTS)";
+ trLongName = QObject::tr( "Spatial Data Transfer Standard (SDTS)" );
glob = "*catd.ddf";
+ ext = "ddf";
}
else if ( driverName.startsWith( "SQLite" ) )
{
longName = "SQLite";
+ trLongName = QObject::tr( "SQLite" );
glob = "*.sqlite";
+ ext = "sqlite";
}
else if ( driverName.startsWith( "DXF" ) )
{
longName = "AutoCAD DXF";
+ trLongName = QObject::tr( "AutoCAD DXF" );
glob = "*.dxf";
+ ext = "dxf";
}
else if ( driverName.startsWith( "Geoconcept" ) )
{
longName = "Geoconcept";
+ trLongName = QObject::tr( "Geoconcept" );
glob = "*.gxt *.txt";
+ ext = "gxt";
}
+ else
+ {
+ return false;
+ }
- return QPair<QString, QString>( longName, glob );
+ return true;
}
Modified: trunk/qgis/src/core/qgsvectorfilewriter.h
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.h 2011-02-13 11:39:26 UTC (rev 15164)
+++ trunk/qgis/src/core/qgsvectorfilewriter.h 2011-02-13 17:20:42 UTC (rev 15165)
@@ -148,7 +148,7 @@
QMap<int, int> mAttrIdxToOgrIdx;
private:
- static QPair<QString, QString> nameAndGlob( QString driverName );
+ static bool driverMetadata( QString driverName, QString &longName, QString &trLongName, QString &glob, QString &ext );
};
#endif
Modified: trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
===================================================================
--- trunk/qgis/src/providers/ogr/qgsogrprovider.cpp 2011-02-13 11:39:26 UTC (rev 15164)
+++ trunk/qgis/src/providers/ogr/qgsogrprovider.cpp 2011-02-13 17:20:42 UTC (rev 15165)
@@ -1250,8 +1250,7 @@
*/
static QString createFileFilter_( QString const &longName, QString const &glob )
{
- return "[OGR] " +
- longName + " (" + glob.toLower() + " " + glob.toUpper() + ");;";
+ return longName + " [OGR] (" + glob.toLower() + " " + glob.toUpper() + ");;";
} // createFileFilter_
@@ -1272,16 +1271,11 @@
if ( myFileFilters.isEmpty() || myFileFilters.isNull() )
{
-
-
-
// register ogr plugins
QgsApplication::registerOgrDrivers();
// first get the GDAL driver manager
-
OGRSFDriverH driver; // current driver
-
QString driverName; // current driver name
// Grind through all the drivers and their respective metadata.
@@ -1308,156 +1302,156 @@
if ( driverName.startsWith( "AVCBin" ) )
{
- myDirectoryDrivers += "Arc/Info Binary Coverage,AVCBin;";
+ myDirectoryDrivers += QObject::tr( "Arc/Info Binary Coverage" ) + ",AVCBin;";
}
else if ( driverName.startsWith( "AVCE00" ) )
{
- myFileFilters += createFileFilter_( "Arc/Info ASCII Coverage", "*.e00" );
+ myFileFilters += createFileFilter_( QObject::tr( "Arc/Info ASCII Coverage" ), "*.e00" );
}
else if ( driverName.startsWith( "BNA" ) )
{
- myFileFilters += createFileFilter_( "Atlas BNA", "*.bna" );
+ myFileFilters += createFileFilter_( QObject::tr( "Atlas BNA" ), "*.bna" );
}
else if ( driverName.startsWith( "CSV" ) )
{
- myFileFilters += createFileFilter_( "Comma Separated Value", "*.csv" );
+ myFileFilters += createFileFilter_( QObject::tr( "Comma Separated Value" ), "*.csv" );
}
- else if ( driverName.startsWith( "DODS" ) )
+ else if ( driverName.startsWith( QObject::tr( "DODS" ) ) )
{
myProtocolDrivers += "DODS/OPeNDAP,DODS;";
}
else if ( driverName.startsWith( "PGeo" ) )
{
- myDatabaseDrivers += "ESRI Personal GeoDatabase,PGeo;";
+ myDatabaseDrivers += QObject::tr( "ESRI Personal GeoDatabase" ) + ",PGeo;";
#ifdef WIN32
- myFileFilters += createFileFilter_( "ESRI Personal GeoDatabase", "*.mdb" );
+ myFileFilters += createFileFilter_( QObject::tr( "ESRI Personal GeoDatabase" ), "*.mdb" );
#endif
}
else if ( driverName.startsWith( "SDE" ) )
{
- myDatabaseDrivers += "ESRI ArcSDE,SDE;";
+ myDatabaseDrivers += QObject::tr( "ESRI ArcSDE" ) + ",SDE;";
}
else if ( driverName.startsWith( "ESRI" ) )
{
- myFileFilters += createFileFilter_( "ESRI Shapefiles", "*.shp" );
+ myFileFilters += createFileFilter_( QObject::tr( "ESRI Shapefiles" ), "*.shp" );
}
- else if ( driverName.startsWith( "FMEObjects Gateway" ) )
+ else if ( driverName.startsWith( QObject::tr( "FMEObjects Gateway" ) ) )
{
- myFileFilters += createFileFilter_( "FMEObjects Gateway", "*.fdd" );
+ myFileFilters += createFileFilter_( QObject::tr( "FMEObjects Gateway" ), "*.fdd" );
}
else if ( driverName.startsWith( "GeoJSON" ) )
{
myProtocolDrivers += "GeoJSON,GeoJSON;";
- myFileFilters += createFileFilter_( "GeoJSON", "*.geojson" );
+ myFileFilters += createFileFilter_( QObject::tr( "GeoJSON" ), "*.geojson" );
}
else if ( driverName.startsWith( "GeoRSS" ) )
{
- myFileFilters += createFileFilter_( "GeoRSS", "*.xml" );
+ myFileFilters += createFileFilter_( QObject::tr( "GeoRSS" ), "*.xml" );
}
else if ( driverName.startsWith( "GML" ) )
{
- myFileFilters += createFileFilter_( "Geography Markup Language", "*.gml" );
+ myFileFilters += createFileFilter_( QObject::tr( "Geography Markup Language (GML)" ), "*.gml" );
}
else if ( driverName.startsWith( "GMT" ) )
{
- myFileFilters += createFileFilter_( "GMT", "*.gmt" );
+ myFileFilters += createFileFilter_( QObject::tr( "GMT" ), "*.gmt" );
}
else if ( driverName.startsWith( "GPX" ) )
{
- myFileFilters += createFileFilter_( "GPX", "*.gpx" );
+ myFileFilters += createFileFilter_( QObject::tr( "GPX" ), "*.gpx" );
}
else if ( driverName.startsWith( "GRASS" ) )
{
- myDirectoryDrivers += "Grass Vector,GRASS;";
+ myDirectoryDrivers += QObject::tr( "Grass Vector" ) + ",GRASS;";
}
else if ( driverName.startsWith( "IDB" ) )
{
- myDatabaseDrivers += "Informix DataBlade,IDB;";
+ myDatabaseDrivers += QObject::tr( "Informix DataBlade" ) + ",IDB;";
}
else if ( driverName.startsWith( "Interlis 1" ) )
{
- myFileFilters += createFileFilter_( "INTERLIS 1", "*.itf *.xml *.ili" );
+ myFileFilters += createFileFilter_( QObject::tr( "INTERLIS 1" ), "*.itf *.xml *.ili" );
}
else if ( driverName.startsWith( "Interlis 2" ) )
{
- myFileFilters += createFileFilter_( "INTERLIS 2", "*.itf *.xml *.ili" );
+ myFileFilters += createFileFilter_( QObject::tr( "INTERLIS 2" ), "*.itf *.xml *.ili" );
}
else if ( driverName.startsWith( "INGRES" ) )
{
- myDatabaseDrivers += "INGRES,INGRES;";
+ myDatabaseDrivers += QObject::tr( "INGRES" ) + ",INGRES;";
}
else if ( driverName.startsWith( "KML" ) )
{
- myFileFilters += createFileFilter_( "KML", "*.kml" );
+ myFileFilters += createFileFilter_( QObject::tr( "Keyhole Markup Language (KML)" ), "*.kml" );
}
else if ( driverName.startsWith( "MapInfo File" ) )
{
- myFileFilters += createFileFilter_( "Mapinfo File", "*.mif *.tab" );
+ myFileFilters += createFileFilter_( QObject::tr( "Mapinfo File" ), "*.mif *.tab" );
}
else if ( driverName.startsWith( "DGN" ) )
{
- myFileFilters += createFileFilter_( "Microstation DGN", "*.dgn" );
+ myFileFilters += createFileFilter_( QObject::tr( "Microstation DGN" ), "*.dgn" );
}
else if ( driverName.startsWith( "MySQL" ) )
{
- myDatabaseDrivers += "MySQL,MySQL;";
+ myDatabaseDrivers += QObject::tr( "MySQL" ) + ",MySQL;";
}
else if ( driverName.startsWith( "OCI" ) )
{
- myDatabaseDrivers += "Oracle Spatial,OCI;";
+ myDatabaseDrivers += QObject::tr( "Oracle Spatial" ) + ",OCI;";
}
else if ( driverName.startsWith( "ODBC" ) )
{
- myDatabaseDrivers += "ODBC,ODBC;";
+ myDatabaseDrivers += QObject::tr( "ODBC" ) + ",ODBC;";
}
else if ( driverName.startsWith( "OGDI" ) )
{
- myDatabaseDrivers += "OGDI Vectors,OGDI;";
+ myDatabaseDrivers += QObject::tr( "OGDI Vectors" ) + ",OGDI;";
}
else if ( driverName.startsWith( "PostgreSQL" ) )
{
- myDatabaseDrivers += "PostgreSQL,PostgreSQL;";
+ myDatabaseDrivers += QObject::tr( "PostgreSQL" ) + ",PostgreSQL;";
}
else if ( driverName.startsWith( "S57" ) )
{
- myFileFilters += createFileFilter_( "S-57 Base file",
+ myFileFilters += createFileFilter_( QObject::tr( "S-57 Base file" ),
"*.000" );
}
else if ( driverName.startsWith( "SDTS" ) )
{
- myFileFilters += createFileFilter_( "Spatial Data Transfer Standard",
+ myFileFilters += createFileFilter_( QObject::tr( "Spatial Data Transfer Standard" ),
"*catd.ddf" );
}
else if ( driverName.startsWith( "SQLite" ) )
{
- myFileFilters += createFileFilter_( "SQLite",
+ myFileFilters += createFileFilter_( QObject::tr( "SQLite" ),
"*.sqlite" );
}
else if ( driverName.startsWith( "UK .NTF" ) )
{
- myDirectoryDrivers += "UK. NTF,UK. NTF;";
+ myDirectoryDrivers += QObject::tr( "UK. NTF2" ) + ",UK. NTF;";
}
else if ( driverName.startsWith( "TIGER" ) )
{
- myDirectoryDrivers += "U.S. Census TIGER/Line,TIGER;";
+ myDirectoryDrivers += QObject::tr( "U.S. Census TIGER/Line" ) + ",TIGER;";
}
else if ( driverName.startsWith( "VRT" ) )
{
- myFileFilters += createFileFilter_( "VRT - Virtual Datasource ",
+ myFileFilters += createFileFilter_( QObject::tr( "VRT - Virtual Datasource" ),
"*.vrt" );
}
else if ( driverName.startsWith( "XPlane" ) )
{
- myFileFilters += createFileFilter_( "X-Plane/Flightgear",
+ myFileFilters += createFileFilter_( QObject::tr( "X-Plane/Flightgear" ),
"apt.dat nav.dat fix.dat awy.dat" );
}
else if ( driverName.startsWith( "Geoconcept" ) )
{
- myFileFilters += createFileFilter_( "Geoconcept", "*.gxt *.txt" );
+ myFileFilters += createFileFilter_( QObject::tr( "Geoconcept" ), "*.gxt *.txt" );
}
else if ( driverName.startsWith( "DXF" ) )
{
- myFileFilters += createFileFilter_( "AutoCAD DXF", "*.dxf" );
+ myFileFilters += createFileFilter_( QObject::tr( "AutoCAD DXF" ), "*.dxf" );
}
else
{
@@ -1470,7 +1464,7 @@
// can't forget the default case
- myFileFilters += "All files (*)";
+ myFileFilters += QObject::tr( "All files" ) + " (*)";
}
if ( type == "file" )
More information about the QGIS-commit
mailing list