[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