[QGIS Commit] r13600 - in trunk/qgis/src: app providers/ogr providers/spatialite

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sun May 30 05:13:16 EDT 2010


Author: jef
Date: 2010-05-30 05:13:15 -0400 (Sun, 30 May 2010)
New Revision: 13600

Modified:
   trunk/qgis/src/app/qgisapp.cpp
   trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
   trunk/qgis/src/providers/spatialite/qgsspatialiteprovider.cpp
Log:
fix #2763

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2010-05-29 22:56:39 UTC (rev 13599)
+++ trunk/qgis/src/app/qgisapp.cpp	2010-05-30 09:13:15 UTC (rev 13600)
@@ -2990,33 +2990,24 @@
   std::list<std::pair<QString, QString> > attributes;
   geomDialog.attributes( attributes );
 
-  bool haveLastUsedFilter = false; // by default, there is no last
-  // used filter
   QString enc;
   QString fileName;
 
-  QSettings settings;         // where we keep last used filter in
-  // persistent state
+  QSettings settings;
+  QString lastUsedDir = settings.value( "/UI/lastVectorFileFilterDir", "." ).toString();
 
-  haveLastUsedFilter = settings.contains( "/UI/lastVectorFileFilter" );
-  QString lastUsedFilter = settings.value( "/UI/lastVectorFileFilter",
-                           QVariant( QString::null ) ).toString();
-
-  QString lastUsedDir = settings.value( "/UI/lastVectorFileFilterDir",
-                                        "." ).toString();
-
   QgsDebugMsg( "Saving vector file dialog without filters: " );
 
-  QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog( this,
-      tr( "Save As" ), lastUsedDir, "", QString( "" ) );
+  QgsEncodingFileDialog* openFileDialog =
+    new QgsEncodingFileDialog( this, tr( "Save As" ), lastUsedDir, "", QString( "" ) );
 
-  // allow for selection of more than one file
   openFileDialog->setFileMode( QFileDialog::AnyFile );
   openFileDialog->setAcceptMode( QFileDialog::AcceptSave );
   openFileDialog->setConfirmOverwrite( true );
 
-  if ( haveLastUsedFilter )     // set the filter to the last one used
+  if ( settings.contains( "/UI/lastVectorFileFilter" ) )
   {
+    QString lastUsedFilter = settings.value( "/UI/lastVectorFileFilter", QVariant( QString::null ) ).toString();
     openFileDialog->selectFilter( lastUsedFilter );
   }
 
@@ -3026,23 +3017,14 @@
     return;
   }
 
-  enc = openFileDialog->encoding();
+  fileName = openFileDialog->selectedFiles().first(); 
 
-  // If the file exists, delete it otherwise we'll end up loading that
-  // file, which can cause problems (e.g., if the file contains
-  // linestrings, but we're wanting to create points, we'll end up
-  // with a linestring file).
-  if ( fileformat == "ESRI Shapefile" )
-  {
-    QgsVectorFileWriter::deleteShapeFile( fileName );
-  }
-  else
-  {
-    QFile::remove( fileName );
-  }
+  if( fileformat == "ESRI Shapefile" && !fileName.endsWith( ".shp", Qt::CaseInsensitive ) )
+    fileName += ".shp";
 
-  settings.setValue( "/UI/lastVectorFileFilter", openFileDialog->selectedFilter() );
+  enc = openFileDialog->encoding();
 
+  settings.setValue( "/UI/lastVectorFileFilter", openFileDialog->selectedFilter() );
   settings.setValue( "/UI/lastVectorFileFilterDir", openFileDialog->directory().absolutePath() );
 
   delete openFileDialog;

Modified: trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
===================================================================
--- trunk/qgis/src/providers/ogr/qgsogrprovider.cpp	2010-05-29 22:56:39 UTC (rev 13599)
+++ trunk/qgis/src/providers/ogr/qgsogrprovider.cpp	2010-05-30 09:13:15 UTC (rev 13600)
@@ -43,6 +43,7 @@
 #include "qgsgeometry.h"
 #include "qgslogger.h"
 #include "qgscoordinatereferencesystem.h"
+#include "qgsvectorfilewriter.h"
 
 static const QString TEXT_PROVIDER_KEY = "ogr";
 static const QString TEXT_PROVIDER_DESCRIPTION =
@@ -1575,7 +1576,13 @@
       }
       fieldNames << name;
     }
+
+    QgsVectorFileWriter::deleteShapeFile( uri );
   }
+  else
+  {
+    QFile::remove( uri );
+  }
 
   OGRDataSourceH dataSource;
   dataSource = OGR_Dr_CreateDataSource( driver, QFile::encodeName( uri ).constData(), NULL );

Modified: trunk/qgis/src/providers/spatialite/qgsspatialiteprovider.cpp
===================================================================
--- trunk/qgis/src/providers/spatialite/qgsspatialiteprovider.cpp	2010-05-29 22:56:39 UTC (rev 13599)
+++ trunk/qgis/src/providers/spatialite/qgsspatialiteprovider.cpp	2010-05-30 09:13:15 UTC (rev 13600)
@@ -23,9 +23,6 @@
 #include <qgsrectangle.h>
 #include <qgscoordinatereferencesystem.h>
 
-#include "qgsprovidercountcalcevent.h"
-#include "qgsproviderextentcalcevent.h"
-
 #include "qgsspatialiteprovider.h"
 
 #include "qgslogger.h"



More information about the QGIS-commit mailing list