Merge pull request from nyalldawson/dialogs

New layer dialog improvements
This commit is contained in:
Nyall Dawson 2017-12-10 10:06:00 +11:00 committed by GitHub
commit 010cb1567b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 397 additions and 112 deletions

@ -68,18 +68,18 @@ 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
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( "Multi curve" ), wkbMultiCurve );
mGeometryTypeBox->addItem( tr( "Multi surface" ), wkbMultiSurface );
mGeometryTypeBox->addItem( tr( "CompoundCurve" ), wkbCompoundCurve );
mGeometryTypeBox->addItem( tr( "CurvePolygon" ), wkbCurvePolygon );
mGeometryTypeBox->addItem( tr( "MultiCurve" ), wkbMultiCurve );
mGeometryTypeBox->addItem( tr( "MultiSurface" ), wkbMultiSurface );
mGeometryWithZCheckBox->setEnabled( false );
mGeometryWithMCheckBox->setEnabled( false );

@ -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 );
@ -69,6 +69,7 @@ QgsNewMemoryLayerDialog::QgsNewMemoryLayerDialog( QWidget *parent, Qt::WindowFla
connect( mGeometryTypeBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsNewMemoryLayerDialog::geometryTypeChanged );
connect( mButtonBox, &QDialogButtonBox::helpRequested, this, &QgsNewMemoryLayerDialog::showHelp );
geometryTypeChanged( mGeometryTypeBox->currentIndex() );
}
QgsNewMemoryLayerDialog::~QgsNewMemoryLayerDialog()

@ -167,8 +167,11 @@ QgsWkbTypes::Type QgsNewVectorLayerDialog::selectedType() const
wkbType = static_cast<QgsWkbTypes::Type>
( 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;
}

@ -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 );

@ -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 )
{

@ -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 );
};

@ -69,7 +69,7 @@
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_6"/>
</item>
<item row="3" column="0">
<item row="4" column="0">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>New field</string>
@ -240,9 +240,16 @@
</item>
</layout>
</item>
<item row="5" column="2">
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Fields list</string>
@ -321,16 +328,9 @@
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QgsCollapsibleGroupBox" name="groupBox">
<property name="title">
<item row="6" column="0">
<widget class="QgsCollapsibleGroupBox" name="groupBox" native="true">
<property name="title" stdset="0">
<string>Advanced options</string>
</property>
<property name="collapsed" stdset="0">

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>444</width>
<height>233</height>
<height>246</height>
</rect>
</property>
<property name="sizePolicy">
@ -59,14 +59,8 @@
<item row="0" column="1" colspan="2">
<widget class="QLineEdit" name="mNameLineEdit"/>
</item>
<item row="3" column="0" colspan="3">
<item row="3" column="1" colspan="2">
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>471</width>
<height>604</height>
<width>867</width>
<height>993</height>
</rect>
</property>
<property name="windowTitle">
@ -17,13 +17,6 @@
<bool>true</bool>
</property>
<layout class="QGridLayout">
<item row="9" column="0" colspan="2">
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="14" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
@ -110,7 +103,7 @@
<string>Add to fields list</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/mActionNewAttribute.svg</normaloff>:/images/themes/default/mActionNewAttribute.svg</iconset>
</property>
<property name="toolButtonStyle">
@ -207,7 +200,7 @@
<string>Remove field</string>
</property>
<property name="icon">
<iconset>
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/mActionDeleteAttribute.svg</normaloff>:/images/themes/default/mActionDeleteAttribute.svg</iconset>
</property>
<property name="toolButtonStyle">
@ -278,24 +271,48 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QgsFileWidget" name="mFileName"/>
<item row="4" column="1">
<widget class="QCheckBox" name="mGeometryWithZCheckBox">
<property name="text">
<string>Include Z dimension</string>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="5" column="1" colspan="2">
<widget class="QgsProjectionSelectionWidget" name="mCrsSelector" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QCheckBox" name="mGeometryWithMCheckBox">
<property name="text">
<string>Include M values</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="mFileEncoding">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="2" column="1" colspan="2">
<widget class="QComboBox" name="mFileFormatComboBox">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="3" column="1" colspan="2">
<widget class="QComboBox" name="mGeometryTypeBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -305,12 +322,8 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="mGeometryWithZCheckBox">
<property name="text">
<string>Include Z dimension</string>
</property>
</widget>
<item row="0" column="1" colspan="2">
<widget class="QgsFileWidget" name="mFileName" native="true"/>
</item>
</layout>
</item>
@ -332,11 +345,11 @@
</customwidget>
</customwidgets>
<tabstops>
<tabstop>mFileName</tabstop>
<tabstop>mFileEncoding</tabstop>
<tabstop>mFileFormatComboBox</tabstop>
<tabstop>mGeometryTypeBox</tabstop>
<tabstop>mGeometryWithZCheckBox</tabstop>
<tabstop>mGeometryWithMCheckBox</tabstop>
<tabstop>mCrsSelector</tabstop>
<tabstop>mNameEdit</tabstop>
<tabstop>mTypeBox</tabstop>
@ -346,7 +359,35 @@
<tabstop>mAttributeView</tabstop>
<tabstop>mRemoveAttributeButton</tabstop>
</tabstops>
<resources/>
<resources>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
<include location="../../images/images.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>