From fe42464c7f9de20b10f3b618e6dcade7e3a30ae8 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 7 Dec 2017 14:04:32 +1000 Subject: [PATCH 1/7] Use standard names for multi* geometry types --- src/gui/qgsnewgeopackagelayerdialog.cpp | 10 +++++----- src/gui/qgsnewmemorylayerdialog.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gui/qgsnewgeopackagelayerdialog.cpp b/src/gui/qgsnewgeopackagelayerdialog.cpp index b17a5e2b8eb..3ca9db5cc88 100644 --- a/src/gui/qgsnewgeopackagelayerdialog.cpp +++ b/src/gui/qgsnewgeopackagelayerdialog.cpp @@ -68,9 +68,9 @@ QgsNewGeoPackageLayerDialog::QgsNewGeoPackageLayerDialog( QWidget *parent, Qt::W mGeometryTypeBox->addItem( tr( "Point" ), wkbPoint ); mGeometryTypeBox->addItem( tr( "Line" ), wkbLineString ); mGeometryTypeBox->addItem( tr( "Polygon" ), wkbPolygon ); - mGeometryTypeBox->addItem( tr( "Multi point" ), wkbMultiPoint ); - mGeometryTypeBox->addItem( tr( "Multi line" ), wkbMultiLineString ); - mGeometryTypeBox->addItem( tr( "Multi polygon" ), wkbMultiPolygon ); + mGeometryTypeBox->addItem( tr( "MultiPoint" ), wkbMultiPoint ); + mGeometryTypeBox->addItem( tr( "MultiLine" ), wkbMultiLineString ); + mGeometryTypeBox->addItem( tr( "MultiPolygon" ), wkbMultiPolygon ); #if 0 // QGIS always create CompoundCurve and there's no real interest of having just CircularString. CompoundCurve are more useful @@ -78,8 +78,8 @@ QgsNewGeoPackageLayerDialog::QgsNewGeoPackageLayerDialog( QWidget *parent, Qt::W #endif mGeometryTypeBox->addItem( tr( "Compound curve" ), wkbCompoundCurve ); mGeometryTypeBox->addItem( tr( "Curve polygon" ), wkbCurvePolygon ); - mGeometryTypeBox->addItem( tr( "Multi curve" ), wkbMultiCurve ); - mGeometryTypeBox->addItem( tr( "Multi surface" ), wkbMultiSurface ); + mGeometryTypeBox->addItem( tr( "MultiCurve" ), wkbMultiCurve ); + mGeometryTypeBox->addItem( tr( "MultiSurface" ), wkbMultiSurface ); mGeometryWithZCheckBox->setEnabled( false ); mGeometryWithMCheckBox->setEnabled( false ); diff --git a/src/gui/qgsnewmemorylayerdialog.cpp b/src/gui/qgsnewmemorylayerdialog.cpp index ba7acfec68a..d2e02b566e8 100644 --- a/src/gui/qgsnewmemorylayerdialog.cpp +++ b/src/gui/qgsnewmemorylayerdialog.cpp @@ -58,9 +58,9 @@ QgsNewMemoryLayerDialog::QgsNewMemoryLayerDialog( QWidget *parent, Qt::WindowFla mGeometryTypeBox->addItem( tr( "Point" ), QgsWkbTypes::Point ); mGeometryTypeBox->addItem( tr( "Line" ), QgsWkbTypes::LineString ); mGeometryTypeBox->addItem( tr( "Polygon" ), QgsWkbTypes::Polygon ); - mGeometryTypeBox->addItem( tr( "Multi point" ), QgsWkbTypes::MultiPoint ); - mGeometryTypeBox->addItem( tr( "Multi line" ), QgsWkbTypes::MultiLineString ); - mGeometryTypeBox->addItem( tr( "Multi polygon" ), QgsWkbTypes::MultiPolygon ); + mGeometryTypeBox->addItem( tr( "MultiPoint" ), QgsWkbTypes::MultiPoint ); + mGeometryTypeBox->addItem( tr( "MultiLine" ), QgsWkbTypes::MultiLineString ); + mGeometryTypeBox->addItem( tr( "MultiPolygon" ), QgsWkbTypes::MultiPolygon ); mGeometryWithZCheckBox->setEnabled( false ); mGeometryWithMCheckBox->setEnabled( false ); From fd1042576b38a63228e191dbca749ff83bc8123b Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 7 Dec 2017 14:13:45 +1000 Subject: [PATCH 2/7] Align CRS selector with geometry widgets in new layer dialogs Since it's directly related to the geometry settings, and is only enabled when the geometry is selected, it should be more closely visually linked with this widget --- src/ui/qgsnewgeopackagelayerdialogbase.ui | 24 +++++++++++------------ src/ui/qgsnewmemorylayerdialogbase.ui | 10 ++-------- src/ui/qgsnewvectorlayerdialogbase.ui | 14 ++++++------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/ui/qgsnewgeopackagelayerdialogbase.ui b/src/ui/qgsnewgeopackagelayerdialogbase.ui index 0acbae0dbc7..1979cbdb2c9 100644 --- a/src/ui/qgsnewgeopackagelayerdialogbase.ui +++ b/src/ui/qgsnewgeopackagelayerdialogbase.ui @@ -69,7 +69,7 @@ - + New field @@ -240,9 +240,16 @@ + + + + Qt::StrongFocus + + + - + Fields list @@ -321,16 +328,9 @@ - - - - Qt::StrongFocus - - - - - - + + + Advanced options diff --git a/src/ui/qgsnewmemorylayerdialogbase.ui b/src/ui/qgsnewmemorylayerdialogbase.ui index 0252c86e178..9a4eea89fd0 100644 --- a/src/ui/qgsnewmemorylayerdialogbase.ui +++ b/src/ui/qgsnewmemorylayerdialogbase.ui @@ -7,7 +7,7 @@ 0 0 444 - 233 + 246 @@ -59,14 +59,8 @@ - + - - - 0 - 0 - - Qt::StrongFocus diff --git a/src/ui/qgsnewvectorlayerdialogbase.ui b/src/ui/qgsnewvectorlayerdialogbase.ui index f5a98c050cc..6775c6eea91 100644 --- a/src/ui/qgsnewvectorlayerdialogbase.ui +++ b/src/ui/qgsnewvectorlayerdialogbase.ui @@ -17,13 +17,6 @@ true - - - - Qt::StrongFocus - - - @@ -312,6 +305,13 @@ + + + + Qt::StrongFocus + + + From 6ed44ff85d15b799043e1eefc4be240c604fa55d Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 7 Dec 2017 14:16:13 +1000 Subject: [PATCH 3/7] Correctly set initial state of new memory dialog --- src/gui/qgsnewmemorylayerdialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/qgsnewmemorylayerdialog.cpp b/src/gui/qgsnewmemorylayerdialog.cpp index d2e02b566e8..258f5662ed9 100644 --- a/src/gui/qgsnewmemorylayerdialog.cpp +++ b/src/gui/qgsnewmemorylayerdialog.cpp @@ -69,6 +69,7 @@ QgsNewMemoryLayerDialog::QgsNewMemoryLayerDialog( QWidget *parent, Qt::WindowFla connect( mGeometryTypeBox, static_cast( &QComboBox::currentIndexChanged ), this, &QgsNewMemoryLayerDialog::geometryTypeChanged ); connect( mButtonBox, &QDialogButtonBox::helpRequested, this, &QgsNewMemoryLayerDialog::showHelp ); + geometryTypeChanged( mGeometryTypeBox->currentIndex() ); } QgsNewMemoryLayerDialog::~QgsNewMemoryLayerDialog() From f290109964d51f34e172e486e34d6cd758291bd8 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 7 Dec 2017 15:59:24 +1000 Subject: [PATCH 4/7] Fix and update mapping of ogr wkt types to QGIS wkb types --- src/providers/ogr/qgsogrdataitems.cpp | 25 +- src/providers/ogr/qgsogrprovider.cpp | 324 +++++++++++++++++++++++--- src/providers/ogr/qgsogrprovider.h | 7 + 3 files changed, 301 insertions(+), 55 deletions(-) diff --git a/src/providers/ogr/qgsogrdataitems.cpp b/src/providers/ogr/qgsogrdataitems.cpp index ad04e0ab42f..b16ac8155bb 100644 --- a/src/providers/ogr/qgsogrdataitems.cpp +++ b/src/providers/ogr/qgsogrdataitems.cpp @@ -361,34 +361,23 @@ static QgsOgrLayerItem *dataItemForLayer( QgsDataItem *parentItem, QString name, QgsLayerItem::LayerType layerType = QgsLayerItem::Vector; OGRwkbGeometryType ogrType = QgsOgrProvider::getOgrGeomType( hLayer ); - switch ( ogrType ) + QgsWkbTypes::Type wkbType = QgsOgrProviderUtils::qgisTypeFromOgrType( ogrType ); + switch ( QgsWkbTypes::geometryType( wkbType ) ) { - case wkbUnknown: - case wkbGeometryCollection: + case QgsWkbTypes::UnknownGeometry: break; - case wkbNone: + case QgsWkbTypes::NullGeometry: layerType = QgsLayerItem::TableLayer; break; - case wkbPoint: - case wkbMultiPoint: - case wkbPoint25D: - case wkbMultiPoint25D: + case QgsWkbTypes::PointGeometry: layerType = QgsLayerItem::Point; break; - case wkbLineString: - case wkbMultiLineString: - case wkbLineString25D: - case wkbMultiLineString25D: + case QgsWkbTypes::LineGeometry: layerType = QgsLayerItem::Line; break; - case wkbPolygon: - case wkbMultiPolygon: - case wkbPolygon25D: - case wkbMultiPolygon25D: + case QgsWkbTypes::PolygonGeometry: layerType = QgsLayerItem::Polygon; break; - default: - break; } QgsDebugMsgLevel( QString( "ogrType = %1 layertype = %2" ).arg( ogrType ).arg( layerType ), 2 ); diff --git a/src/providers/ogr/qgsogrprovider.cpp b/src/providers/ogr/qgsogrprovider.cpp index 8bc8fc3af90..43d710b8533 100644 --- a/src/providers/ogr/qgsogrprovider.cpp +++ b/src/providers/ogr/qgsogrprovider.cpp @@ -2993,47 +2993,18 @@ QGISEXTERN bool createEmptyDataSource( const QString &uri, OGRwkbGeometryType OGRvectortype = wkbUnknown; switch ( vectortype ) { - case QgsWkbTypes::Point: - OGRvectortype = wkbPoint; - break; - case QgsWkbTypes::Point25D: - OGRvectortype = wkbPoint25D; - break; - case QgsWkbTypes::LineString: - OGRvectortype = wkbLineString; - break; - case QgsWkbTypes::LineString25D: - OGRvectortype = wkbLineString25D; - break; - case QgsWkbTypes::Polygon: - OGRvectortype = wkbPolygon; - break; - case QgsWkbTypes::Polygon25D: - OGRvectortype = wkbPolygon25D; - break; - case QgsWkbTypes::MultiPoint: - OGRvectortype = wkbMultiPoint; - break; - case QgsWkbTypes::MultiPoint25D: - OGRvectortype = wkbMultiPoint25D; - break; - case QgsWkbTypes::MultiLineString: - OGRvectortype = wkbMultiLineString; - break; - case QgsWkbTypes::MultiLineString25D: - OGRvectortype = wkbMultiLineString25D; - break; - case QgsWkbTypes::MultiPolygon: - OGRvectortype = wkbMultiPolygon; - break; - case QgsWkbTypes::MultiPolygon25D: - OGRvectortype = wkbMultiPolygon25D; - break; - default: + case QgsWkbTypes::GeometryCollection: + case QgsWkbTypes::GeometryCollectionZ: + case QgsWkbTypes::GeometryCollectionM: + case QgsWkbTypes::GeometryCollectionZM: + case QgsWkbTypes::Unknown: { QgsMessageLog::logMessage( QObject::tr( "Unknown vector type of %1" ).arg( ( int )( vectortype ) ), QObject::tr( "OGR" ) ); return false; } + + default: + OGRvectortype = QgsOgrProviderUtils::ogrTypeFromQgisType( vectortype ); } char **papszOptions = nullptr; @@ -4390,6 +4361,285 @@ void QgsOgrProviderUtils::invalidateCachedLastModifiedDate( const QString &dsNam } } +OGRwkbGeometryType QgsOgrProviderUtils::ogrTypeFromQgisType( QgsWkbTypes::Type type ) +{ + switch ( type ) + { + case QgsWkbTypes::Point: + return wkbPoint; + case QgsWkbTypes::Point25D: + case QgsWkbTypes::PointZ: + return wkbPoint25D; + case QgsWkbTypes::PointM: + return wkbPointM; + case QgsWkbTypes::PointZM: + return wkbPointZM; + + case QgsWkbTypes::LineString: + return wkbLineString; + case QgsWkbTypes::LineString25D: + case QgsWkbTypes::LineStringZ: + return wkbLineString25D; + case QgsWkbTypes::LineStringM: + return wkbLineStringM; + case QgsWkbTypes::LineStringZM: + return wkbLineStringZM; + + case QgsWkbTypes::Polygon: + return wkbPolygon; + case QgsWkbTypes::Polygon25D: + case QgsWkbTypes::PolygonZ: + return wkbPolygon25D; + case QgsWkbTypes::PolygonM: + return wkbPolygonM; + case QgsWkbTypes::PolygonZM: + return wkbPolygonZM; + + case QgsWkbTypes::MultiPoint: + return wkbMultiPoint; + case QgsWkbTypes::MultiPoint25D: + case QgsWkbTypes::MultiPointZ: + return wkbMultiPoint25D; + case QgsWkbTypes::MultiPointM: + return wkbMultiPointM; + case QgsWkbTypes::MultiPointZM: + return wkbMultiPointZM; + + case QgsWkbTypes::MultiLineString: + return wkbMultiLineString; + case QgsWkbTypes::MultiLineString25D: + case QgsWkbTypes::MultiLineStringZ: + return wkbMultiLineString25D; + case QgsWkbTypes::MultiLineStringM: + return wkbMultiLineStringM; + case QgsWkbTypes::MultiLineStringZM: + return wkbMultiLineStringZM; + + case QgsWkbTypes::MultiPolygon: + return wkbMultiPolygon; + case QgsWkbTypes::MultiPolygon25D: + case QgsWkbTypes::MultiPolygonZ: + return wkbMultiPolygon25D; + case QgsWkbTypes::MultiPolygonM: + return wkbMultiPolygonM; + case QgsWkbTypes::MultiPolygonZM: + return wkbMultiPolygonZM; + + case QgsWkbTypes::CircularString: + return wkbCircularString; + case QgsWkbTypes::CircularStringZ: + return wkbCircularStringZ; + case QgsWkbTypes::CircularStringM: + return wkbCircularStringM; + case QgsWkbTypes::CircularStringZM: + return wkbCircularStringZM; + + case QgsWkbTypes::CompoundCurve: + return wkbCompoundCurve; + case QgsWkbTypes::CompoundCurveZ: + return wkbCompoundCurveZ; + case QgsWkbTypes::CompoundCurveM: + return wkbCompoundCurveM; + case QgsWkbTypes::CompoundCurveZM: + return wkbCompoundCurveZM; + + case QgsWkbTypes::CurvePolygon: + return wkbCurvePolygon; + case QgsWkbTypes::CurvePolygonZ: + return wkbCurvePolygonZ; + case QgsWkbTypes::CurvePolygonM: + return wkbCurvePolygonM; + case QgsWkbTypes::CurvePolygonZM: + return wkbCurvePolygonZM; + + case QgsWkbTypes::MultiCurve: + return wkbMultiCurve; + case QgsWkbTypes::MultiCurveZ: + return wkbMultiCurveZ; + case QgsWkbTypes::MultiCurveM: + return wkbMultiCurveM; + case QgsWkbTypes::MultiCurveZM: + return wkbMultiCurveZM; + + case QgsWkbTypes::MultiSurface: + return wkbMultiSurface; + case QgsWkbTypes::MultiSurfaceZ: + return wkbMultiSurfaceZ; + case QgsWkbTypes::MultiSurfaceM: + return wkbMultiSurfaceM; + case QgsWkbTypes::MultiSurfaceZM: + return wkbMultiSurfaceZM; + + case QgsWkbTypes::Triangle: + return wkbTriangle; + case QgsWkbTypes::TriangleZ: + return wkbTriangleZ; + case QgsWkbTypes::TriangleM: + return wkbTriangleM; + case QgsWkbTypes::TriangleZM: + return wkbTriangleZM; + + case QgsWkbTypes::NoGeometry: + return wkbNone; + + case QgsWkbTypes::GeometryCollection: + return wkbGeometryCollection; + case QgsWkbTypes::GeometryCollectionZ: + return wkbGeometryCollection25D; + case QgsWkbTypes::GeometryCollectionM: + return wkbGeometryCollectionM; + case QgsWkbTypes::GeometryCollectionZM: + return wkbGeometryCollectionZM; + + case QgsWkbTypes::Unknown: + return wkbUnknown; + } + // no warnings! + return wkbUnknown; +} + +QgsWkbTypes::Type QgsOgrProviderUtils::qgisTypeFromOgrType( OGRwkbGeometryType type ) +{ + switch ( type ) + { + case wkbUnknown: + return QgsWkbTypes::Unknown; + + case wkbPoint: + return QgsWkbTypes::Point; + case wkbLineString: + return QgsWkbTypes::LineString; + case wkbPolygon: + return QgsWkbTypes::Polygon; + case wkbMultiPoint: + return QgsWkbTypes::MultiPoint; + case wkbMultiLineString: + return QgsWkbTypes::MultiLineString; + case wkbMultiPolygon: + return QgsWkbTypes::MultiPolygon; + case wkbGeometryCollection: + return QgsWkbTypes::GeometryCollection; + case wkbCircularString: + return QgsWkbTypes::CircularString; + case wkbCompoundCurve: + return QgsWkbTypes::CompoundCurve; + case wkbCurvePolygon: + return QgsWkbTypes::CurvePolygon; + case wkbMultiCurve: + return QgsWkbTypes::MultiCurve; + case wkbMultiSurface: + return QgsWkbTypes::MultiSurface; + case wkbTriangle: + return QgsWkbTypes::Triangle; + case wkbNone: + return QgsWkbTypes::NoGeometry; + + case wkbCircularStringZ: + return QgsWkbTypes::CircularStringZ; + case wkbCompoundCurveZ: + return QgsWkbTypes::CompoundCurveZ; + case wkbCurvePolygonZ: + return QgsWkbTypes::PolygonZ; + case wkbMultiCurveZ: + return QgsWkbTypes::MultiCurveZ; + case wkbMultiSurfaceZ: + return QgsWkbTypes::MultiSurfaceZ; + case wkbTriangleZ: + return QgsWkbTypes::TriangleZ; + + case wkbPointM: + return QgsWkbTypes::PointM; + case wkbLineStringM: + return QgsWkbTypes::LineStringM; + case wkbPolygonM: + return QgsWkbTypes::PolygonM; + case wkbMultiPointM: + return QgsWkbTypes::PointM; + case wkbMultiLineStringM: + return QgsWkbTypes::LineStringM; + case wkbMultiPolygonM: + return QgsWkbTypes::PolygonM; + case wkbGeometryCollectionM: + return QgsWkbTypes::GeometryCollectionM; + case wkbCircularStringM: + return QgsWkbTypes::CircularStringM; + case wkbCompoundCurveM: + return QgsWkbTypes::CompoundCurveM; + case wkbCurvePolygonM: + return QgsWkbTypes::PolygonM; + case wkbMultiCurveM: + return QgsWkbTypes::MultiCurveM; + case wkbMultiSurfaceM: + return QgsWkbTypes::MultiSurfaceM; + case wkbTriangleM: + return QgsWkbTypes::TriangleM; + + case wkbPointZM: + return QgsWkbTypes::PointZM; + case wkbLineStringZM: + return QgsWkbTypes::LineStringZM; + case wkbPolygonZM: + return QgsWkbTypes::PolygonZM; + case wkbMultiPointZM: + return QgsWkbTypes::MultiPointZM; + case wkbMultiLineStringZM: + return QgsWkbTypes::MultiLineStringZM; + case wkbMultiPolygonZM: + return QgsWkbTypes::MultiPolygonZM; + case wkbGeometryCollectionZM: + return QgsWkbTypes::GeometryCollectionZM; + case wkbCircularStringZM: + return QgsWkbTypes::CircularStringZM; + case wkbCompoundCurveZM: + return QgsWkbTypes::CompoundCurveZM; + case wkbCurvePolygonZM: + return QgsWkbTypes::CurvePolygonZM; + case wkbMultiCurveZM: + return QgsWkbTypes::MultiCurveZM; + case wkbMultiSurfaceZM: + return QgsWkbTypes::MultiSurfaceZM; + case wkbTriangleZM: + return QgsWkbTypes::TriangleZM; + + case wkbPoint25D: + return QgsWkbTypes::Point25D; + case wkbLineString25D: + return QgsWkbTypes::LineString25D; + case wkbPolygon25D: + return QgsWkbTypes::Polygon25D; + case wkbMultiPoint25D: + return QgsWkbTypes::MultiPoint25D; + case wkbMultiLineString25D: + return QgsWkbTypes::MultiLineString25D; + case wkbMultiPolygon25D: + return QgsWkbTypes::MultiPolygon25D; + case wkbGeometryCollection25D: + return QgsWkbTypes::GeometryCollectionZ; + + case wkbCurve: + case wkbSurface: + case wkbCurveZ: + case wkbSurfaceZ: + case wkbCurveM: + case wkbSurfaceM: + case wkbCurveZM: + case wkbSurfaceZM: + return QgsWkbTypes::Unknown; // abstract types - no direct mapping to QGIS types + + case wkbLinearRing: + case wkbTIN: + case wkbTINZ: + case wkbTINM: + case wkbTINZM: + case wkbPolyhedralSurface: + case wkbPolyhedralSurfaceZ: + case wkbPolyhedralSurfaceM: + case wkbPolyhedralSurfaceZM: + return QgsWkbTypes::Unknown; // unsupported types + } + return QgsWkbTypes::Unknown; +} + QString QgsOgrProviderUtils::expandAuthConfig( const QString &dsName ) { diff --git a/src/providers/ogr/qgsogrprovider.h b/src/providers/ogr/qgsogrprovider.h index 481592b0bac..e6a113c4049 100644 --- a/src/providers/ogr/qgsogrprovider.h +++ b/src/providers/ogr/qgsogrprovider.h @@ -421,6 +421,13 @@ class QgsOgrProviderUtils //! Invalidate the cached last modified date of a dataset static void invalidateCachedLastModifiedDate( const QString &dsName ); + + //! Converts a QGIS WKB type to the corresponding OGR wkb type + static OGRwkbGeometryType ogrTypeFromQgisType( QgsWkbTypes::Type type ); + + //! Converts a OGR WKB type to the corresponding QGIS wkb type + static QgsWkbTypes::Type qgisTypeFromOgrType( OGRwkbGeometryType type ); + }; From e6f6d498862c54a5d197d742999dbdac18f6dcd5 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 7 Dec 2017 16:00:04 +1000 Subject: [PATCH 5/7] Add missing 'm values' checkbox to create shapefile dialog --- src/gui/qgsnewvectorlayerdialog.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gui/qgsnewvectorlayerdialog.cpp b/src/gui/qgsnewvectorlayerdialog.cpp index 3e8c2c22993..97eeef98c93 100644 --- a/src/gui/qgsnewvectorlayerdialog.cpp +++ b/src/gui/qgsnewvectorlayerdialog.cpp @@ -167,8 +167,11 @@ QgsWkbTypes::Type QgsNewVectorLayerDialog::selectedType() const wkbType = static_cast ( mGeometryTypeBox->currentData( Qt::UserRole ).toInt() ); - if ( mGeometryWithZCheckBox->isChecked() && wkbType != QgsWkbTypes::Unknown ) - wkbType = QgsWkbTypes::to25D( wkbType ); + if ( mGeometryWithZCheckBox->isChecked() ) + wkbType = QgsWkbTypes::addZ( wkbType ); + + if ( mGeometryWithMCheckBox->isChecked() ) + wkbType = QgsWkbTypes::addM( wkbType ); return wkbType; } From 83dea9208cac0ec4e7c43d044b757d1f26ddf3ff Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 10 Dec 2017 08:25:39 +1000 Subject: [PATCH 6/7] Fix ui merge --- src/ui/qgsnewvectorlayerdialogbase.ui | 107 ++++++++++++++++++-------- 1 file changed, 74 insertions(+), 33 deletions(-) diff --git a/src/ui/qgsnewvectorlayerdialogbase.ui b/src/ui/qgsnewvectorlayerdialogbase.ui index 6775c6eea91..b49d3084906 100644 --- a/src/ui/qgsnewvectorlayerdialogbase.ui +++ b/src/ui/qgsnewvectorlayerdialogbase.ui @@ -6,8 +6,8 @@ 0 0 - 471 - 604 + 867 + 993 @@ -103,7 +103,7 @@ Add to fields list - + :/images/themes/default/mActionNewAttribute.svg:/images/themes/default/mActionNewAttribute.svg @@ -200,7 +200,7 @@ Remove field - + :/images/themes/default/mActionDeleteAttribute.svg:/images/themes/default/mActionDeleteAttribute.svg @@ -271,33 +271,6 @@ - - - - - - - true - - - - - - - true - - - - - - - - 0 - 0 - - - - @@ -307,11 +280,51 @@ + + + 0 + 20 + + Qt::StrongFocus + + + + Include M values + + + + + + + true + + + + + + + true + + + + + + + + 0 + 0 + + + + + + + @@ -332,11 +345,11 @@ - mFileName mFileEncoding mFileFormatComboBox mGeometryTypeBox mGeometryWithZCheckBox + mGeometryWithMCheckBox mCrsSelector mNameEdit mTypeBox @@ -346,7 +359,35 @@ mAttributeView mRemoveAttributeButton - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + buttonBox From a603a3d756e0e7a43ab36b7ec072f979f7122f69 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 10 Dec 2017 08:31:04 +1000 Subject: [PATCH 7/7] Use standard names for geometry types --- src/gui/qgsnewgeopackagelayerdialog.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/qgsnewgeopackagelayerdialog.cpp b/src/gui/qgsnewgeopackagelayerdialog.cpp index 3ca9db5cc88..b8ed4497f78 100644 --- a/src/gui/qgsnewgeopackagelayerdialog.cpp +++ b/src/gui/qgsnewgeopackagelayerdialog.cpp @@ -74,10 +74,10 @@ QgsNewGeoPackageLayerDialog::QgsNewGeoPackageLayerDialog( QWidget *parent, Qt::W #if 0 // QGIS always create CompoundCurve and there's no real interest of having just CircularString. CompoundCurve are more useful - mGeometryTypeBox->addItem( tr( "Circular string" ), wkbCircularString ); + mGeometryTypeBox->addItem( tr( "CircularString" ), wkbCircularString ); #endif - mGeometryTypeBox->addItem( tr( "Compound curve" ), wkbCompoundCurve ); - mGeometryTypeBox->addItem( tr( "Curve polygon" ), wkbCurvePolygon ); + mGeometryTypeBox->addItem( tr( "CompoundCurve" ), wkbCompoundCurve ); + mGeometryTypeBox->addItem( tr( "CurvePolygon" ), wkbCurvePolygon ); mGeometryTypeBox->addItem( tr( "MultiCurve" ), wkbMultiCurve ); mGeometryTypeBox->addItem( tr( "MultiSurface" ), wkbMultiSurface );