[QGIS Commit] r13169 - in trunk/qgis: python/core src/app src/app/legend src/app/ogr src/core src/gui src/plugins/ogr_converter src/providers/ogr src/ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Mar 26 20:39:00 EDT 2010


Author: jef
Date: 2010-03-26 20:38:59 -0400 (Fri, 26 Mar 2010)
New Revision: 13169

Added:
   trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp
   trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.h
   trunk/qgis/src/ui/qgsvectorlayersaveasdialogbase.ui
Modified:
   trunk/qgis/python/core/qgsvectordataprovider.sip
   trunk/qgis/src/app/CMakeLists.txt
   trunk/qgis/src/app/legend/qgslegendlayer.cpp
   trunk/qgis/src/app/legend/qgslegendlayer.h
   trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
   trunk/qgis/src/app/qgisapp.cpp
   trunk/qgis/src/app/qgisapp.h
   trunk/qgis/src/core/qgsproviderregistry.h
   trunk/qgis/src/core/qgsvectordataprovider.cpp
   trunk/qgis/src/core/qgsvectordataprovider.h
   trunk/qgis/src/core/qgsvectorfilewriter.cpp
   trunk/qgis/src/core/qgsvectorfilewriter.h
   trunk/qgis/src/gui/qgsencodingfiledialog.cpp
   trunk/qgis/src/plugins/ogr_converter/format.cpp
   trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
   trunk/qgis/src/ui/qgsopenvectorlayerdialogbase.ui
Log:
[FEATURE] allow saving vector layers as ogr vector files

Modified: trunk/qgis/python/core/qgsvectordataprovider.sip
===================================================================
--- trunk/qgis/python/core/qgsvectordataprovider.sip	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/python/core/qgsvectordataprovider.sip	2010-03-27 00:38:59 UTC (rev 13169)
@@ -296,4 +296,7 @@
           (e.g. no multipolygon in a polygon layer)
           @note: added in version 1.4*/
       bool doesStrictFeatureTypeCheck() const;
+
+      /** Returns a list of available encodings */
+      static const QStringList &availableEncodings();
 };

Modified: trunk/qgis/src/app/CMakeLists.txt
===================================================================
--- trunk/qgis/src/app/CMakeLists.txt	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/CMakeLists.txt	2010-03-27 00:38:59 UTC (rev 13169)
@@ -105,6 +105,7 @@
   ogr/qgsopenvectorlayerdialog.cpp
   ogr/qgsnewogrconnection.cpp
   ogr/qgsogrsublayersdialog.cpp
+  ogr/qgsvectorlayersaveasdialog.cpp
   
   attributetable/qgsattributetabledialog.cpp
   attributetable/qgsattributetablemodel.cpp
@@ -199,6 +200,7 @@
   ogr/qgsopenvectorlayerdialog.h
   ogr/qgsnewogrconnection.h
   ogr/qgsogrsublayersdialog.h
+  ogr/qgsvectorlayersaveasdialog.h
   
   attributetable/qgsattributetableview.h
   attributetable/qgsattributetablemodel.h

Modified: trunk/qgis/src/app/legend/qgslegendlayer.cpp
===================================================================
--- trunk/qgis/src/app/legend/qgslegendlayer.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/legend/qgslegendlayer.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -36,7 +36,7 @@
 #include "qgsvectorfilewriter.h"
 #include "qgsgenericprojectionselector.h"
 #include "qgsattributetabledialog.h"
-#include "qgsencodingfiledialog.h"
+#include "ogr/qgsvectorlayersaveasdialog.h"
 
 #include "qgsrendererv2.h"
 #include "qgssymbolv2.h"
@@ -53,6 +53,7 @@
 #include <QMessageBox>
 #include <QPainter>
 #include <QSettings>
+#include <QFileDialog>
 
 
 QgsLegendLayer::QgsLegendLayer( QgsMapLayer* layer )
@@ -450,16 +451,6 @@
   // the dialog will be deleted by itself on close
 }
 
-void QgsLegendLayer::saveAsShapefile()
-{
-  saveAsShapefileGeneral( FALSE );
-}
-
-void QgsLegendLayer::saveSelectionAsShapefile()
-{
-  saveAsShapefileGeneral( TRUE );
-}
-
 void QgsLegendLayer::saveAsVectorFile()
 {
   saveAsVectorFileGeneral( false );
@@ -504,177 +495,73 @@
 
 void QgsLegendLayer::saveAsVectorFileGeneral( bool saveOnlySelection )
 {
+  QgsCoordinateReferenceSystem destCRS;
+
   if ( mLyr.layer()->type() != QgsMapLayer::VectorLayer )
     return;
 
   QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( mLyr.layer() );
 
-  //get output name and format
-  QSettings settings;
-  QString filter =  QString( "Shapefiles (*.shp)" );
-  QString dirName = settings.value( "/UI/lastVectorfileDir", "." ).toString();
-  QString filterString = QgsVectorFileWriter::fileFilterString();
-  QString selectedFilter = settings.value( "/UI/lastVectorFilter", "[OGR] ESRI Shapefiles (*.shp *.SHP)" ).toString();
-  QString outputFile = QFileDialog::getSaveFileName( 0, tr( "Save layer as..." ), dirName, filterString, &selectedFilter );
-  if ( outputFile.isNull() )
-  {
-    return; //cancelled
-  }
+  QgsVectorLayerSaveAsDialog *dialog = new QgsVectorLayerSaveAsDialog( QgisApp::instance() );
 
-  settings.setValue( "/UI/lastVectorfileDir", QFileInfo( outputFile ).absolutePath() );
-  settings.setValue( "/UI/lastVectorFilter", selectedFilter );
-
-  QMap< QString, QString> filterDriverMap = QgsVectorFileWriter::supportedFiltersAndFormats();
-  QMap< QString, QString>::const_iterator it = filterDriverMap.find( selectedFilter + ";;" );
-  if ( it == filterDriverMap.constEnd() )
+  if( dialog->exec() == QDialog::Accepted )
   {
-    return; //unknown format
-  }
+    QString encoding = dialog->encoding();
+    QString vectorFilename = dialog->filename();
+    QString format = dialog->format();
+    
+    if( dialog->crs() < 0 )
+    {
+      // Find out if we have projections enabled or not
+      if ( QgisApp::instance()->mapCanvas()->mapRenderer()->hasCrsTransformEnabled() )
+      {
+        destCRS = QgisApp::instance()->mapCanvas()->mapRenderer()->destinationSrs();
+      }
+      else
+      {
+        destCRS = vlayer->srs();
+      }
+    }
+    else
+    {
+      destCRS = QgsCoordinateReferenceSystem( dialog->crs(), QgsCoordinateReferenceSystem::InternalCrsId );
+    }
 
-  QString driverKey = *it;
-
-  //output CRS
-  QgsCoordinateReferenceSystem destCRS = vlayer->srs();
-  // Find out if we have projections enabled or not
-  if ( QgisApp::instance()->mapCanvas()->mapRenderer()->hasCrsTransformEnabled() )
-  {
-    destCRS = QgisApp::instance()->mapCanvas()->mapRenderer()->destinationSrs();
-  }
-
-  QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector();
-  mySelector->setSelectedCrsId( destCRS.srsid() );
-  mySelector->setMessage( tr( "Select the coordinate reference system for the saved shapefile. "
-                              "The data points will be transformed from the layer coordinate reference system." ) );
-
-  if ( mySelector->exec() )
-  {
-    QgsCoordinateReferenceSystem srs( mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
-    destCRS = srs;
-    //   destCRS->createFromId(mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId)
-  }
-  else
-  {
-    // Aborted CS selection, don't save.
-    delete mySelector;
-    return;
-  }
-  delete mySelector;
-
-  // overwrite the file - user will already have been prompted
-  // to verify they want to overwrite by the file dialog above
-  // might not even exists in the given case.
-  if ( driverKey == "ESRI Shapefile" )
-  {
+    // overwrite the file - user will already have been prompted
+    // to verify they want to overwrite by the file dialog above
+    // might not even exists in the given case.
     // add the extension if not present
-    if ( !outputFile.endsWith( ".shp", Qt::CaseInsensitive ) )
+    if( format == "ESRI Shapefile" )
     {
-      outputFile += ".shp";
+      if ( !vectorFilename.endsWith( ".shp", Qt::CaseInsensitive ) )
+      {
+        vectorFilename += ".shp";
+      }
+      QgsVectorFileWriter::deleteShapeFile( vectorFilename );
     }
-    QgsVectorFileWriter::deleteShapeFile( outputFile );
-  }
+  
+    // ok if the file existed it should be deleted now so we can continue...
+    QApplication::setOverrideCursor( Qt::WaitCursor );
+  
+    QgsVectorFileWriter::WriterError error;
+    QString errorMessage;
+    error = QgsVectorFileWriter::writeAsVectorFormat( vlayer, vectorFilename, encoding, &destCRS, format, saveOnlySelection, &errorMessage );
 
-  QString errorMessage;
-  QgsVectorFileWriter::WriterError error;
-  error = QgsVectorFileWriter::writeAsVectorFormat( vlayer, outputFile, "utf-8", &destCRS, driverKey, saveOnlySelection, &errorMessage );
-}
-
-
-void QgsLegendLayer::saveAsShapefileGeneral( bool saveOnlySelection )
-{
-  QgsCoordinateReferenceSystem destCRS;
-
-  if ( mLyr.layer()->type() != QgsMapLayer::VectorLayer )
-    return;
-
-  QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( mLyr.layer() );
-
-  // get a name for the shapefile
-  // Get a file to process, starting at the current directory
-  QSettings settings;
-  QString filter =  QString( "Shapefiles (*.shp)" );
-  QString dirName = settings.value( "/UI/lastShapefileDir", "." ).toString();
-
-  QgsEncodingFileDialog* openFileDialog = new QgsEncodingFileDialog( 0,
-      tr( "Save layer as..." ),
-      dirName,
-      filter,
-      QString( "" ) );
-  openFileDialog->setAcceptMode( QFileDialog::AcceptSave );
-
-  // allow for selection of more than one file
-  //openFileDialog->setMode(QFileDialog::AnyFile);
-
-  if ( openFileDialog->exec() != QDialog::Accepted )
-    return;
-
-
-  QString encoding = openFileDialog->encoding();
-  QString shapefileName = openFileDialog->selectedFiles().first();
-  settings.setValue( "/UI/lastShapefileDir", QFileInfo( shapefileName ).absolutePath() );
-
-
-  if ( shapefileName.isNull() )
-    return;
-
-  // add the extension if not present
-  if ( !shapefileName.endsWith( ".shp", Qt::CaseInsensitive ) )
-  {
-    shapefileName += ".shp";
+    QApplication::restoreOverrideCursor();
+  
+    if ( error == QgsVectorFileWriter::NoError )
+    {
+      QMessageBox::information( 0, tr( "Saving done" ), tr( "Export to vector file has been completed" ) );
+    }
+    else
+    {
+      QMessageBox::warning( 0, tr( "Save error" ), tr( "Export to vector file failed.\nError: %1").arg( errorMessage ) );
+    }
   }
 
-  destCRS = vlayer->srs();
-  // Find out if we have projections enabled or not
-  if ( QgisApp::instance()->mapCanvas()->mapRenderer()->hasCrsTransformEnabled() )
-  {
-    destCRS = QgisApp::instance()->mapCanvas()->mapRenderer()->destinationSrs();
-  }
-
-  QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector();
-  mySelector->setSelectedCrsId( destCRS.srsid() );
-  mySelector->setMessage( tr( "Select the coordinate reference system for the saved shapefile. "
-                              "The data points will be transformed from the layer coordinate reference system." ) );
-
-  if ( mySelector->exec() )
-  {
-    QgsCoordinateReferenceSystem srs( mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
-    destCRS = srs;
-    //   destCRS->createFromId(mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId)
-  }
-  else
-  {
-    // Aborted CS selection, don't save.
-    delete mySelector;
-    return;
-  }
-
-  delete mySelector;
-
-  // overwrite the file - user will already have been prompted
-  // to verify they want to overwrite by the file dialog above
-  // might not even exists in the given case.
-  QgsVectorFileWriter::deleteShapeFile( shapefileName );
-
-  // ok if the file existed it should be deleted now so we can continue...
-  QApplication::setOverrideCursor( Qt::WaitCursor );
-
-  QgsVectorFileWriter::WriterError error;
-  QString errorMessage;
-  error = QgsVectorFileWriter::writeAsShapefile( vlayer, shapefileName, encoding, &destCRS, saveOnlySelection, &errorMessage );
-
-  QApplication::restoreOverrideCursor();
-
-  if ( error == QgsVectorFileWriter::NoError )
-  {
-    QMessageBox::information( 0, tr( "Saving done" ), tr( "Export to Shapefile has been completed" ) );
-  }
-  else
-  {
-    QMessageBox::warning( 0, tr( "Save error" ), errorMessage );
-  }
+  delete dialog;
 }
 
-
-
 QString QgsLegendLayer::nameFromLayer( QgsMapLayer* layer )
 {
   QString sourcename = layer->publicSource(); //todo: move this duplicated code into a new function

Modified: trunk/qgis/src/app/legend/qgslegendlayer.h
===================================================================
--- trunk/qgis/src/app/legend/qgslegendlayer.h	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/legend/qgslegendlayer.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -1,6 +1,6 @@
 /***************************************************************************
- *   Copyright (C) 2005 by Tim Sutton   *
- *   aps02ts at macbuntu   *
+ *   Copyright (C) 2005 by Tim Sutton                                      *
+ *   aps02ts at macbuntu                                                      *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -84,9 +84,6 @@
     /**Show layer attribute table*/
     void table();
 
-    void saveAsShapefile();
-    void saveSelectionAsShapefile();
-
     void saveAsVectorFile();
     void saveSelectionAsVectorFile();
 
@@ -111,9 +108,6 @@
 
     QPixmap getOriginalPixmap();
 
-    /**Save as shapefile (called from saveAsShapefile and saveSelectionAsShapefile)*/
-    void saveAsShapefileGeneral( bool saveOnlySelection );
-
     void saveAsVectorFileGeneral( bool saveOnlySelection );
 
   private:

Modified: trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp
===================================================================
--- trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/ogr/qgsopenvectorlayerdialog.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -22,9 +22,11 @@
 #include <QMessageBox>
 #include <QInputDialog>
 #include <QTextCodec>
+
 #include "qgslogger.h"
-#include "qgsencodingfiledialog.h"
 #include "qgsopenvectorlayerdialog.h"
+#include "qgsvectordataprovider.h"
+
 #include <ogr_api.h>
 #include "qgsproviderregistry.h"
 #include "qgsnewogrconnection.h"
@@ -40,8 +42,10 @@
   cmbConnections->blockSignals( true );
   radioSrcFile->setChecked( true );
   mDataSourceType = "file";
+
   //set encoding
-  // cmbEncodings->setItemText( cmbEncodings->currentIndex(), QString( QTextCodec::codecForLocale()->name() ) );
+  cmbEncodings->addItems( QgsVectorDataProvider::availableEncodings() );
+
   QSettings settings;
   QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
 

Added: trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp
===================================================================
--- trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp	                        (rev 0)
+++ trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -0,0 +1,127 @@
+/***************************************************************************
+                          qgsvectorlayersaveasdialog.h
+ Dialog to select destination, type and crs for ogr layers
+                             -------------------
+    begin                : Mon Mar 22 2010
+    copyright            : (C) 2010 by Juergen E. Fischer
+    email                : jef at norbit dot de
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+/* $Id:$ */
+#include "qgsvectorlayersaveasdialog.h"
+#include "qgsgenericprojectionselector.h"
+#include "qgsvectordataprovider.h"
+#include "qgsvectorfilewriter.h"
+
+#include <QSettings>
+#include <QFileDialog>
+#include <QTextCodec>
+
+QgsVectorLayerSaveAsDialog::QgsVectorLayerSaveAsDialog( QWidget* parent, Qt::WFlags fl )
+    : QDialog( parent, fl )
+    , mCRS( -1 )
+{
+  setupUi( this );
+
+  QSettings settings;
+  QMap<QString, QString> map = QgsVectorFileWriter::ogrDriverList();
+  for ( QMap< QString, QString>::const_iterator it = map.constBegin(); it != map.constEnd(); ++it )
+  {
+    mFormatComboBox->addItem( it.key(), it.value() );
+  }
+
+  QString format = settings.value( "/UI/lastVectorFormat", "ESRI Shapefile" ).toString();
+  mFormatComboBox->setCurrentIndex( mFormatComboBox->findData( format ) );
+
+
+  mEncodingComboBox->addItems( QgsVectorDataProvider::availableEncodings() );
+
+  QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
+  int idx = mEncodingComboBox->findText( enc );
+  if ( idx < 0 )
+  {
+    mEncodingComboBox->insertItem( 0, enc );
+    idx = 0;
+  }
+
+  mEncodingComboBox->setCurrentIndex( idx );
+  
+  leCRS->setText( tr("Original CRS") );
+}
+
+QgsVectorLayerSaveAsDialog::~QgsVectorLayerSaveAsDialog()
+{
+}
+
+void QgsVectorLayerSaveAsDialog::accept()
+{
+  QSettings settings;
+  settings.setValue( "/UI/lastVectorFileFilterDir", QFileInfo( filename() ).absolutePath() );
+  settings.setValue( "/UI/lastVectorFormat", format() );
+  settings.setValue( "/UI/encoding", encoding() );
+  QDialog::accept();
+}
+
+void QgsVectorLayerSaveAsDialog::on_mFormatComboBox_currentIndexChanged( int idx )
+{
+  browseFilename->setEnabled( true );
+  leFilename->setEnabled( true );
+}
+
+void QgsVectorLayerSaveAsDialog::on_browseFilename_clicked()
+{
+  QSettings settings;
+  QString dirName = leFilename->text().isEmpty() ? settings.value( "/UI/lastVectorfileDir", "." ).toString() : leFilename->text();
+  QString filterString = QgsVectorFileWriter::filterForDriver( format() );
+  QString outputFile = QFileDialog::getSaveFileName( 0, tr( "Save layer as..." ), dirName, filterString );
+  if ( !outputFile.isNull() )
+  {
+    leFilename->setText( outputFile );
+  }
+}
+
+void QgsVectorLayerSaveAsDialog::on_browseCRS_clicked()
+{
+  QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector();
+  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() )
+  {
+    QgsCoordinateReferenceSystem srs( mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
+    mCRS = srs.srsid();
+    leCRS->setText( srs.description() );
+  }
+
+  delete mySelector;
+}
+
+QString QgsVectorLayerSaveAsDialog::filename() const
+{
+  return leFilename->text();
+}
+
+QString QgsVectorLayerSaveAsDialog::encoding() const
+{
+  return mEncodingComboBox->currentText();
+}
+
+QString QgsVectorLayerSaveAsDialog::format() const
+{
+  return mFormatComboBox->itemData( mFormatComboBox->currentIndex() ).toString();
+}
+
+long QgsVectorLayerSaveAsDialog::crs() const
+{
+  return mCRS;
+}

Added: trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.h
===================================================================
--- trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.h	                        (rev 0)
+++ trunk/qgis/src/app/ogr/qgsvectorlayersaveasdialog.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -0,0 +1,53 @@
+/***************************************************************************
+                          qgsvectorlayersaveasdialog.h
+ Dialog to select destination, type and crs to save as ogr layers
+                             -------------------
+    begin                : Mon Mar 22 2010
+    copyright            : (C) 2010 by Juergen E. Fischer
+    email                : jef at norbit dot de
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+/* $Id:$ */
+#ifndef QGSVECTORLAYERSAVEASDIALOG_H
+#define QGSVECTORLAYERSAVEASDIALOG_H
+
+#include <ui_qgsvectorlayersaveasdialogbase.h>
+#include <QDialog>
+#include "qgscontexthelp.h"
+
+/**
+ *  Class to select destination file, type and CRS for ogr layrs
+ */
+class QgsVectorLayerSaveAsDialog : public QDialog, private Ui::QgsVectorLayerSaveAsDialogBase
+{
+    Q_OBJECT
+
+  public:
+    QgsVectorLayerSaveAsDialog( QWidget* parent = 0,  Qt::WFlags fl = 0 );
+    ~QgsVectorLayerSaveAsDialog();
+
+    QString format() const;
+    QString encoding() const;
+    QString filename() const;
+    long crs() const;
+   
+  private slots:
+    void on_mFormatComboBox_currentIndexChanged( int idx );
+    void on_browseFilename_clicked();
+    void on_browseCRS_clicked();
+    void on_buttonBox_helpRequested() { QgsContextHelp::run( metaObject()->className() ); }
+    void accept();
+
+  private:
+    long mCRS;
+};
+
+#endif // QGSVECTORLAYERSAVEASDIALOG_H

Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/qgisapp.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -965,16 +965,16 @@
   connect( mActionToggleEditing, SIGNAL( triggered() ), this, SLOT( toggleEditing() ) );
   mActionToggleEditing->setEnabled( false );
 
-  mActionLayerSaveAs = new QAction( tr( "Save as Shapefile..." ), this );
+  mActionLayerSaveAs = new QAction( tr( "Save as..." ), this );
   shortcuts->registerAction( mActionLayerSaveAs );
-  mActionLayerSaveAs->setStatusTip( tr( "Save the current layer as a shapefile" ) );
-  connect( mActionLayerSaveAs, SIGNAL( triggered() ), this, SLOT( saveAsShapefile() ) );
+  mActionLayerSaveAs->setStatusTip( tr( "Save the current layer as a vector file" ) );
+  connect( mActionLayerSaveAs, SIGNAL( triggered() ), this, SLOT( saveAsVectorFile() ) );
   mActionLayerSaveAs->setEnabled( false );
 
-  mActionLayerSelectionSaveAs = new QAction( tr( "Save Selection as Shapefile..." ), this );
+  mActionLayerSelectionSaveAs = new QAction( tr( "Save Selection as vector file..." ), this );
   shortcuts->registerAction( mActionLayerSelectionSaveAs );
-  mActionLayerSelectionSaveAs->setStatusTip( tr( "Save the selection as a shapefile" ) );
-  connect( mActionLayerSelectionSaveAs, SIGNAL( triggered() ), this, SLOT( saveSelectionAsShapefile() ) );
+  mActionLayerSelectionSaveAs->setStatusTip( tr( "Save the selection as a vector file" ) );
+  connect( mActionLayerSelectionSaveAs, SIGNAL( triggered() ), this, SLOT( saveSelectionAsVectorFile() ) );
   mActionLayerSelectionSaveAs->setEnabled( false );
 
   mActionRemoveLayer = new QAction( getThemeIcon( "mActionRemoveLayer.png" ), tr( "Remove Layer" ), this );
@@ -3657,14 +3657,14 @@
   // the dialog will be deleted by itself on close
 }
 
-void QgisApp::saveAsShapefile()
+void QgisApp::saveAsVectorFile()
 {
-  mMapLegend->currentLegendLayer()->saveAsShapefile();
+  mMapLegend->currentLegendLayer()->saveAsVectorFile();
 }
 
-void QgisApp::saveSelectionAsShapefile()
+void QgisApp::saveSelectionAsVectorFile()
 {
-  mMapLegend->currentLegendLayer()->saveSelectionAsShapefile();
+  mMapLegend->currentLegendLayer()->saveSelectionAsVectorFile();
 }
 
 void QgisApp::layerProperties()
@@ -5669,9 +5669,9 @@
 // This is the method that does the actual work of adding a raster layer - the others
 // here simply create a raster layer object and delegate here. It is the responsibility
 // of the calling method to manage things such as the frozen state of the mapcanvas and
-// using waitcursors etc. - this method wont and SHOULDNT do it
+// using waitcursors etc. - this method won't and SHOULDN'T do it
 //
-bool QgisApp::addRasterLayer( QgsRasterLayer * theRasterLayer )
+bool QgisApp::addRasterLayer( QgsRasterLayer *theRasterLayer )
 {
   if ( mMapCanvas && mMapCanvas->isDrawing() )
   {
@@ -5697,16 +5697,12 @@
   QgsMapLayerRegistry::instance()->addMapLayer( theRasterLayer );
 
   // connect up any request the raster may make to update the app progress
-  QObject::connect( theRasterLayer,
-                    SIGNAL( drawingProgress( int, int ) ),
-                    this,
-                    SLOT( showProgress( int, int ) ) );
+  QObject::connect( theRasterLayer, SIGNAL( drawingProgress( int, int ) ),
+                    this, SLOT( showProgress( int, int ) ) );
 
   // connect up any request the raster may make to update the statusbar message
-  QObject::connect( theRasterLayer,
-                    SIGNAL( statusChanged( QString ) ),
-                    this,
-                    SLOT( showStatusMessage( QString ) ) );
+  QObject::connect( theRasterLayer, SIGNAL( statusChanged( QString ) ),
+                    this, SLOT( showStatusMessage( QString ) ) );
 
   return true;
 }

Modified: trunk/qgis/src/app/qgisapp.h
===================================================================
--- trunk/qgis/src/app/qgisapp.h	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/app/qgisapp.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -625,8 +625,8 @@
     void toggleEditing( QgsMapLayer *layer );
 
     //! save current vector layer
-    void saveAsShapefile();
-    void saveSelectionAsShapefile();
+    void saveAsVectorFile();
+    void saveSelectionAsVectorFile();
 
     //! open the properties dialog for the currently selected layer
     void layerProperties();

Modified: trunk/qgis/src/core/qgsproviderregistry.h
===================================================================
--- trunk/qgis/src/core/qgsproviderregistry.h	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/core/qgsproviderregistry.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -99,7 +99,6 @@
     */
     virtual QString protocolDrivers() const;
 
-
     /** open the given vector data source
 
     Similar to open(QString const &), except that the user specifies a data provider
@@ -127,7 +126,6 @@
     /** type for data provider metadata associative container */
     typedef std::map<QString, QgsProviderMetadata*> Providers;
 
-
   private:
 
     /** ctor private since instance() creates it */

Modified: trunk/qgis/src/core/qgsvectordataprovider.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectordataprovider.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/core/qgsvectordataprovider.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -417,3 +417,59 @@
 
   return v;
 }
+
+const QStringList &QgsVectorDataProvider::availableEncodings()
+{
+  if( smEncodings.isEmpty() )
+  {
+    smEncodings << "BIG5";
+    smEncodings << "BIG5-HKSCS";
+    smEncodings << "EUCJP";
+    smEncodings << "EUCKR";
+    smEncodings << "GB2312";
+    smEncodings << "GBK";
+    smEncodings << "GB18030";
+    smEncodings << "JIS7";
+    smEncodings << "SHIFT-JIS";
+    smEncodings << "TSCII";
+    smEncodings << "UTF-8";
+    smEncodings << "UTF-16";
+    smEncodings << "KOI8-R";
+    smEncodings << "KOI8-U";
+    smEncodings << "ISO8859-1";
+    smEncodings << "ISO8859-2";
+    smEncodings << "ISO8859-3";
+    smEncodings << "ISO8859-4";
+    smEncodings << "ISO8859-5";
+    smEncodings << "ISO8859-6";
+    smEncodings << "ISO8859-7";
+    smEncodings << "ISO8859-8";
+    smEncodings << "ISO8859-8-I";
+    smEncodings << "ISO8859-9";
+    smEncodings << "ISO8859-10";
+    smEncodings << "ISO8859-11";
+    smEncodings << "ISO8859-12";
+    smEncodings << "ISO8859-13";
+    smEncodings << "ISO8859-14";
+    smEncodings << "ISO8859-15";
+    smEncodings << "IBM 850";
+    smEncodings << "IBM 866";
+    smEncodings << "CP874";
+    smEncodings << "CP1250";
+    smEncodings << "CP1251";
+    smEncodings << "CP1252";
+    smEncodings << "CP1253";
+    smEncodings << "CP1254";
+    smEncodings << "CP1255";
+    smEncodings << "CP1256";
+    smEncodings << "CP1257";
+    smEncodings << "CP1258";
+    smEncodings << "Apple Roman";
+    smEncodings << "TIS-620";
+    smEncodings << "System";
+  }
+
+  return smEncodings;
+}
+
+QStringList QgsVectorDataProvider::smEncodings;

Modified: trunk/qgis/src/core/qgsvectordataprovider.h
===================================================================
--- trunk/qgis/src/core/qgsvectordataprovider.h	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/core/qgsvectordataprovider.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -348,6 +348,9 @@
           @note: added in version 1.4*/
     virtual bool doesStrictFeatureTypeCheck() const { return true;}
 
+
+    static const QStringList &availableEncodings();
+
   protected:
     QVariant convertValue( QVariant::Type type, QString value );
 
@@ -374,6 +377,8 @@
   private:
     /** old notation **/
     QMap<QString, QVariant::Type> mOldTypeList;
+
+    static QStringList smEncodings;
 };
 
 #endif

Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -387,92 +387,6 @@
                                        QString *errorMessage )
 {
   return writeAsVectorFormat( layer, shapefileName, fileEncoding, destCRS, "ESRI Shapefile", onlySelected, errorMessage );
-#if 0
-  const QgsCoordinateReferenceSystem* outputCRS;
-  QgsCoordinateTransform* ct = 0;
-  int shallTransform = false;
-
-  if ( destCRS && destCRS->isValid() )
-  {
-    // This means we should transform
-    outputCRS = destCRS;
-    shallTransform = true;
-  }
-  else
-  {
-    // This means we shouldn't transform, use source CRS as output (if defined)
-    outputCRS = &layer->srs();
-  }
-  QgsVectorFileWriter* writer =
-    new QgsVectorFileWriter( shapefileName, fileEncoding, layer->pendingFields(), layer->wkbType(), outputCRS );
-
-  // check whether file creation was successful
-  WriterError err = writer->hasError();
-  if ( err != NoError )
-  {
-    if ( errorMessage )
-      *errorMessage = writer->errorMessage();
-    delete writer;
-    return err;
-  }
-
-  QgsAttributeList allAttr = layer->pendingAllAttributesList();
-  QgsFeature fet;
-
-  layer->select( allAttr, QgsRectangle(), true );
-
-  const QgsFeatureIds& ids = layer->selectedFeaturesIds();
-
-  // Create our transform
-  if ( destCRS )
-  {
-    ct = new QgsCoordinateTransform( layer->srs(), *destCRS );
-  }
-
-  // Check for failure
-  if ( ct == NULL )
-  {
-    shallTransform = false;
-  }
-
-  // write all features
-  while ( layer->nextFeature( fet ) )
-  {
-    if ( onlySelected && !ids.contains( fet.id() ) )
-      continue;
-
-    if ( shallTransform )
-    {
-      try
-      {
-        fet.geometry()->transform( *ct );
-      }
-      catch ( QgsCsException &e )
-      {
-        delete ct;
-        delete writer;
-
-        QString msg = QObject::tr( "Failed to transform a point while drawing a feature of type '%1'. Writing stopped. (Exception: %2)" )
-                      .arg( fet.typeName() ).arg( e.what() );
-        QgsLogger::warning( msg );
-        if ( errorMessage )
-          *errorMessage = msg;
-
-        return ErrProjection;
-      }
-    }
-    writer->addFeature( fet );
-  }
-
-  delete writer;
-
-  if ( shallTransform )
-  {
-    delete ct;
-  }
-
-  return NoError;
-#endif //0
 }
 
 QgsVectorFileWriter::WriterError
@@ -603,22 +517,19 @@
   QgsApplication::registerOgrDrivers();
   int const drvCount = OGRGetDriverCount();
 
-  QString drvName;
-  QString filterString;
   for ( int i = 0; i < drvCount; ++i )
   {
     OGRSFDriverH drv = OGRGetDriver( i );
     if ( drv )
     {
-      drvName = OGR_Dr_GetName( drv );
-      if ( OGR_Dr_TestCapability( drv, ODrCCreateDataSource ) != 0 )
+      QString drvName = OGR_Dr_GetName( drv );
+      if ( OGR_Dr_TestCapability( drv, "CreateDataSource" ) != 0 )
       {
-        //add driver name and filter to map
-        filterString = QgsVectorFileWriter::filterForDriver( drvName );
-        if ( !filterString.isEmpty() )
-        {
-          resultMap.insert( filterString, drvName );
-        }
+        QString filterString = filterForDriver( drvName );
+        if( filterString.isEmpty() )
+          continue;
+
+        resultMap.insert( filterString, drvName );
       }
     }
   }
@@ -626,13 +537,43 @@
   return resultMap;
 }
 
+QMap<QString, QString> QgsVectorFileWriter::ogrDriverList()
+{
+  QMap<QString, QString> resultMap;
+
+  QgsApplication::registerOgrDrivers();
+  int const drvCount = OGRGetDriverCount();
+
+  for ( int i = 0; i < drvCount; ++i )
+  {
+    OGRSFDriverH drv = OGRGetDriver( i );
+    if ( drv )
+    {
+      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 );
+      }
+    }
+  }
+
+  return resultMap;
+}
+
 QString QgsVectorFileWriter::fileFilterString()
 {
   QString filterString;
-  QMap< QString, QString> driverFormatMap = QgsVectorFileWriter::supportedFiltersAndFormats();
+  QMap< QString, QString> driverFormatMap = supportedFiltersAndFormats();
   QMap< QString, QString>::const_iterator it = driverFormatMap.constBegin();
   for ( ; it != driverFormatMap.constEnd(); ++it )
   {
+    if( filterString.isEmpty() )
+      filterString += ";;";
+
     filterString += it.key();
   }
   return filterString;
@@ -640,6 +581,16 @@
 
 QString QgsVectorFileWriter::filterForDriver( const QString& driverName )
 {
+  QPair<QString, QString> p = nameAndGlob( driverName );
+
+  if( p.first.isEmpty() || p.second.isEmpty() )
+    return "";
+
+  return "[OGR] " + p.first + " (" + p.second.toLower() + " " + p.second.toUpper() + ")";
+}
+
+QPair<QString, QString> QgsVectorFileWriter::nameAndGlob( QString driverName )
+{
   QString longName;
   QString glob;
 
@@ -660,7 +611,7 @@
   }
   else if ( driverName.startsWith( "ESRI" ) )
   {
-    longName = "ESRI Shapefiles";
+    longName = "ESRI Shapefile";
     glob = "*.shp";
   }
   else if ( driverName.startsWith( "FMEObjects Gateway" ) )
@@ -685,12 +636,12 @@
   }
   else if ( driverName.startsWith( "GMT" ) )
   {
-    longName = "GMT";
+    longName = "Generic Mapping Tools";
     glob = "*.gmt";
   }
   else if ( driverName.startsWith( "GPX" ) )
   {
-    longName = "GPX";
+    longName = "GPS eXchange Format";
     glob = "*.gpx";
   }
   else if ( driverName.startsWith( "Interlis 1" ) )
@@ -705,7 +656,7 @@
   }
   else if ( driverName.startsWith( "KML" ) )
   {
-    longName = "KML";
+    longName = "Keyhole Markup Language";
     glob = "*.kml" ;
   }
   else if ( driverName.startsWith( "MapInfo File" ) )
@@ -733,19 +684,16 @@
     longName = "SQLite";
     glob = "*.sqlite";
   }
-  else if ( driverName.startsWith( "VRT" ) )
+  else if ( driverName.startsWith( "DXF" ) )
   {
-    longName = "VRT - Virtual Datasource ";
-    glob = "*.vrt";
+    longName = "AutoCAD DXF";
+    glob = "*.dxf";
   }
-  else if ( driverName.startsWith( "XPlane" ) )
+  else if ( driverName.startsWith( "Geoconcept" ) )
   {
-    longName = "X-Plane/Flighgear";
-    glob = "apt.dat nav.dat fix.dat awy.dat";
+    longName = "Geoconcept";
+    glob = "*.gxt *.txt";
   }
-  else
-  {
-    return QString();
-  }
-  return "[OGR] " + longName + " (" + glob.toLower() + " " + glob.toUpper() + ");;";
+
+  return QPair<QString, QString>( longName, glob );
 }

Modified: trunk/qgis/src/core/qgsvectorfilewriter.h
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.h	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/core/qgsvectorfilewriter.h	2010-03-27 00:38:59 UTC (rev 13169)
@@ -23,6 +23,8 @@
 #include "qgsvectorlayer.h"
 #include "qgsfield.h"
 
+#include <QPair>
+
 typedef void *OGRDataSourceH;
 typedef void *OGRLayerH;
 typedef void *OGRGeometryH;
@@ -83,6 +85,9 @@
     /**Returns map with format filter string as key and OGR format key as value*/
     static QMap< QString, QString> supportedFiltersAndFormats();
 
+    /**Returns driver list that can be used for dialogs*/
+    static QMap< QString, QString> ogrDriverList();
+
     /**Returns filter string that can be used for dialogs*/
     static QString fileFilterString();
 
@@ -108,6 +113,7 @@
      * @return bool true if the file was deleted successfully
      */
     static bool deleteShapeFile( QString theFileName );
+
   protected:
 
     OGRGeometryH createEmptyGeometry( QGis::WkbType wkbType );
@@ -129,6 +135,9 @@
 
     /** map attribute indizes to OGR field indexes */
     QMap<int, int> mAttrIdxToOgrIdx;
+
+  private:
+    static QPair<QString, QString> nameAndGlob( QString driverName ); 
 };
 
 #endif

Modified: trunk/qgis/src/gui/qgsencodingfiledialog.cpp
===================================================================
--- trunk/qgis/src/gui/qgsencodingfiledialog.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/gui/qgsencodingfiledialog.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -16,6 +16,8 @@
 #include "qgsencodingfiledialog.h"
 #include "qgsproject.h"
 #include "qgslogger.h"
+#include "qgsvectordataprovider.h"
+
 #include <QSettings>
 #include <QComboBox>
 #include <QPushButton>
@@ -23,7 +25,6 @@
 #include <QLayout>
 #include <QTextCodec>
 
-
 QgsEncodingFileDialog::QgsEncodingFileDialog( QWidget * parent,
     const QString & caption, const QString & directory,
     const QString & filter, const QString & encoding )
@@ -35,49 +36,9 @@
   QLabel* l = new QLabel( tr( "Encoding:" ), this );
   layout()->addWidget( l );
   layout()->addWidget( mEncodingComboBox );
-  mEncodingComboBox->addItem( "BIG5" );
-  mEncodingComboBox->addItem( "BIG5-HKSCS" );
-  mEncodingComboBox->addItem( "EUCJP" );
-  mEncodingComboBox->addItem( "EUCKR" );
-  mEncodingComboBox->addItem( "GB2312" );
-  mEncodingComboBox->addItem( "GBK" );
-  mEncodingComboBox->addItem( "GB18030" );
-  mEncodingComboBox->addItem( "JIS7" );
-  mEncodingComboBox->addItem( "SHIFT-JIS" );
-  mEncodingComboBox->addItem( "TSCII" );
-  mEncodingComboBox->addItem( "UTF-8" );
-  mEncodingComboBox->addItem( "UTF-16" );
-  mEncodingComboBox->addItem( "KOI8-R" );
-  mEncodingComboBox->addItem( "KOI8-U" );
-  mEncodingComboBox->addItem( "ISO8859-1" );
-  mEncodingComboBox->addItem( "ISO8859-2" );
-  mEncodingComboBox->addItem( "ISO8859-3" );
-  mEncodingComboBox->addItem( "ISO8859-4" );
-  mEncodingComboBox->addItem( "ISO8859-5" );
-  mEncodingComboBox->addItem( "ISO8859-6" );
-  mEncodingComboBox->addItem( "ISO8859-7" );
-  mEncodingComboBox->addItem( "ISO8859-8" );
-  mEncodingComboBox->addItem( "ISO8859-8-I" );
-  mEncodingComboBox->addItem( "ISO8859-9" );
-  mEncodingComboBox->addItem( "ISO8859-10" );
-  mEncodingComboBox->addItem( "ISO8859-13" );
-  mEncodingComboBox->addItem( "ISO8859-14" );
-  mEncodingComboBox->addItem( "ISO8859-15" );
-  mEncodingComboBox->addItem( "IBM 850" );
-  mEncodingComboBox->addItem( "IBM 866" );
-  mEncodingComboBox->addItem( "CP874" );
-  mEncodingComboBox->addItem( "CP1250" );
-  mEncodingComboBox->addItem( "CP1251" );
-  mEncodingComboBox->addItem( "CP1252" );
-  mEncodingComboBox->addItem( "CP1253" );
-  mEncodingComboBox->addItem( "CP1254" );
-  mEncodingComboBox->addItem( "CP1255" );
-  mEncodingComboBox->addItem( "CP1256" );
-  mEncodingComboBox->addItem( "CP1257" );
-  mEncodingComboBox->addItem( "CP1258" );
-  mEncodingComboBox->addItem( "Apple Roman" );
-  mEncodingComboBox->addItem( "TIS-620" );
 
+  mEncodingComboBox->addItems( QgsVectorDataProvider::availableEncodings() );
+
   // Use default encoding if none supplied
   QString enc = encoding;
   if ( encoding.isEmpty() )

Modified: trunk/qgis/src/plugins/ogr_converter/format.cpp
===================================================================
--- trunk/qgis/src/plugins/ogr_converter/format.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/plugins/ogr_converter/format.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -108,5 +108,5 @@
   add( Format( "UK.NTF", "UK National Transfer Format", Format::eFile ) );
   add( Format( "TIGER", "U.S. Census TIGER/Line", Format::eFile ) );
   add( Format( "VRT", "Virtual Datasource", Format::eFile ) );
-  add( Format( "XPLANE", "X-Plane/Flighgear Aeronautical Data", Format::eFile ) );
+  add( Format( "XPLANE", "X-Plane/Flightgear Aeronautical Data", Format::eFile ) );
 }

Modified: trunk/qgis/src/providers/ogr/qgsogrprovider.cpp
===================================================================
--- trunk/qgis/src/providers/ogr/qgsogrprovider.cpp	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/providers/ogr/qgsogrprovider.cpp	2010-03-27 00:38:59 UTC (rev 13169)
@@ -1321,9 +1321,17 @@
       }
       else if ( driverName.startsWith( "XPlane" ) )
       {
-        myFileFilters += createFileFilter_( "X-Plane/Flighgear",
+        myFileFilters += createFileFilter_( "X-Plane/Flightgear",
                                             "apt.dat nav.dat fix.dat awy.dat" );
       }
+      else if ( driverName.startsWith( "Geoconcept" ) )
+      {
+        myFileFilters += createFileFilter_( "Geoconcept", "*.gxt *.txt" );
+      }
+      else if ( driverName.startsWith( "DXF" ) )
+      {
+        myFileFilters += createFileFilter_( "AutoCAD DXF", "*.dxf" );
+      }
       else
       {
         // NOP, we don't know anything about the current driver

Modified: trunk/qgis/src/ui/qgsopenvectorlayerdialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsopenvectorlayerdialogbase.ui	2010-03-27 00:03:54 UTC (rev 13168)
+++ trunk/qgis/src/ui/qgsopenvectorlayerdialogbase.ui	2010-03-27 00:38:59 UTC (rev 13169)
@@ -89,226 +89,6 @@
           <height>0</height>
          </size>
         </property>
-        <item>
-         <property name="text">
-          <string>BIG5</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>BIG5-HKSCS</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>EUCJP</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>EUCKR</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>GB2312</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>GBK</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>GB18030</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>JIS7</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>SHIFT-JIS</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>TSCII</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>UTF-8</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>UTF-16</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>KOI8-R</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>KOI8-U</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-1</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-2</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-3</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-4</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-5</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-6</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-7</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-8</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-8-I</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-9</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-10</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-11</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-12</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-13</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-14</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>ISO8859-15</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>IBM 850</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>IBM 866</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP874</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1250</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1251</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1252</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1253</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1254</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1255</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1256</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1257</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>CP1258</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>Apple Roman</string>
-         </property>
-        </item>
-        <item>
-         <property name="text">
-          <string>TIS-620</string>
-         </property>
-        </item>
        </widget>
       </item>
      </layout>

Added: trunk/qgis/src/ui/qgsvectorlayersaveasdialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsvectorlayersaveasdialogbase.ui	                        (rev 0)
+++ trunk/qgis/src/ui/qgsvectorlayersaveasdialogbase.ui	2010-03-27 00:38:59 UTC (rev 13169)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QgsVectorLayerSaveAsDialogBase</class>
+ <widget class="QDialog" name="QgsVectorLayerSaveAsDialogBase">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>203</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Save vector layer as...</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="1">
+    <widget class="QLineEdit" name="leFilename">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0">
+    <widget class="QLabel" name="label_3">
+     <property name="text">
+      <string>CRS</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1">
+    <widget class="QLineEdit" name="leCRS">
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="0" colspan="3">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Save as</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QPushButton" name="browseFilename">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="text">
+      <string>Browse</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="2">
+    <widget class="QPushButton" name="browseCRS">
+     <property name="text">
+      <string>Browse</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1" colspan="2">
+    <widget class="QComboBox" name="mEncodingComboBox"/>
+   </item>
+   <item row="4" column="0">
+    <widget class="QLabel" name="label_4">
+     <property name="text">
+      <string>Encoding</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Format</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="2">
+    <widget class="QComboBox" name="mFormatComboBox"/>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>QgsVectorLayerSaveAsDialogBase</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>QgsVectorLayerSaveAsDialogBase</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>



More information about the QGIS-commit mailing list