Remove deprecated diagram field properties

This commit is contained in:
Nyall Dawson 2017-01-02 13:07:48 +10:00
parent 336b603b3a
commit 4018863d37
8 changed files with 142 additions and 271 deletions

View File

@ -832,6 +832,17 @@ place of a null pointer.
- The dist member variable was removed. setDistance() and distance() should be used instead.
- The renderer member variable was removed, and getRenderer() was renamed to renderer()
- The showAll member variable was removed. setShowAllDiagrams() and showAllDiagrams() should be used instead.
- The xPosColumn, yPosColumn and showColumn attributes were removed. Use setProperties() for setting data defined properties instead.
- The LinePlacementFlags enum was renamed to LinePlacementFlag
- The placement member variable was removed, and getPlacement() was renamed to placement()
- The placementFlags member variable was removed
- The priority member variable was removed, and getPriority() was renamed to priority()
- The zIndex member variable was removed, and getZIndex() was renamed to zIndex()
- The obstacle member variable was removed. setIsObstacle() and isObstacle() should be used instead.
- The dist member variable was removed. setDistance() and distance() should be used instead.
- The renderer member variable was removed, and getRenderer() was renamed to renderer()
- The showAll member variable was removed. setShowAllDiagrams() and showAllDiagrams() should be used instead.
- referencedFields() no longer requires a QgsFields argument.
QgsDiagramSettings {#qgis_api_break_3_0_QgsDiagramSettings}
------------------

View File

@ -180,12 +180,6 @@ class QgsDiagramLayerSettings
*/
void setCoordinateTransform( const QgsCoordinateTransform& transform );
//! Attribute index for x coordinate (or -1 if position not data defined)
int xPosColumn;
//! Attribute index for y coordinate (or -1 if position not data defined)
int yPosColumn;
/** Returns whether the layer should show all diagrams, including overlapping diagrams
* @see setShowAllDiagrams()
* @note added in QGIS 2.16
@ -204,11 +198,9 @@ class QgsDiagramLayerSettings
/** Returns the set of any fields referenced by the layer's diagrams.
* @param context expression context the diagrams will be drawn using
* @param fields layer fields
* @note added in QGIS 2.16
*/
//TODO QGIS 3.0 - remove need for fields parameter
QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext(), const QgsFields& fields = QgsFields() ) const;
QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext() ) const;
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 2.16

View File

@ -147,16 +147,11 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
mScaleDependencyComboBox->addItem( tr( "Area" ), true );
mScaleDependencyComboBox->addItem( tr( "Diameter" ), false );
mDataDefinedXComboBox->addItem( tr( "None" ), -1 );
mDataDefinedYComboBox->addItem( tr( "None" ), -1 );
mAngleOffsetComboBox->addItem( tr( "Top" ), 90 * 16 );
mAngleOffsetComboBox->addItem( tr( "Right" ), 0 );
mAngleOffsetComboBox->addItem( tr( "Bottom" ), 270 * 16 );
mAngleOffsetComboBox->addItem( tr( "Left" ), 180 * 16 );
mDataDefinedVisibilityComboBox->addItem( tr( "None" ), -1 );
QSettings settings;
// reset horiz stretch of left side of options splitter (set to 1 for previewing in Qt Designer)
@ -192,10 +187,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
newItem->setText( 0, name );
newItem->setData( 0, RoleAttributeExpression, name );
newItem->setFlags( newItem->flags() & ~Qt::ItemIsDropEnabled );
mDataDefinedXComboBox->addItem( layerFields.at( idx ).name(), idx );
mDataDefinedYComboBox->addItem( layerFields.at( idx ).name(), idx );
mDataDefinedVisibilityComboBox->addItem( layerFields.at( idx ).name(), idx );
}
const QgsDiagramRenderer* dr = layer->diagramRenderer();
@ -217,7 +208,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
mScaleVisibilityGroupBox->setChecked( layer->hasScaleBasedVisibility() );
mScaleRangeWidget->setScaleRange( 1.0 / layer->maximumScale(), 1.0 / layer->minimumScale() ); // caution: layer uses scale denoms, widget uses true scales
mShowAllCheckBox->setChecked( true );
mDataDefinedVisibilityGroupBox->setChecked( false );
mCheckBoxAttributeLegend->setChecked( true );
mCheckBoxSizeLegend->setChecked( false );
mSizeLegendSymbol.reset( QgsMarkerSymbol::createSimple( QgsStringMap() ) );
@ -383,12 +373,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
mDiagramDistanceSpinBox->setValue( dls->distance() );
mPrioritySlider->setValue( dls->priority() );
mZIndexSpinBox->setValue( dls->zIndex() );
mDataDefinedXComboBox->setCurrentIndex( mDataDefinedXComboBox->findData( dls->xPosColumn ) );
mDataDefinedYComboBox->setCurrentIndex( mDataDefinedYComboBox->findData( dls->yPosColumn ) );
if ( dls->xPosColumn != -1 || dls->yPosColumn != -1 )
{
mDataDefinedPositionGroupBox->setChecked( true );
}
mPlacementComboBox->setCurrentIndex( mPlacementComboBox->findData( dls->placement() ) );
chkLineAbove->setChecked( dls->linePlacementFlags() & QgsDiagramLayerSettings::AboveLine );
@ -398,11 +382,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
chkLineOrientationDependent->setChecked( true );
mShowAllCheckBox->setChecked( dls->showAllDiagrams() );
mDataDefinedVisibilityComboBox->setCurrentIndex( mDataDefinedVisibilityComboBox->findData( dls->showColumn ) );
if ( dls->showColumn != -1 )
{
mDataDefinedVisibilityGroupBox->setChecked( true );
}
}
if ( dr->diagram() )
@ -819,24 +798,6 @@ void QgsDiagramProperties::apply()
dls.setPriority( mPrioritySlider->value() );
dls.setZIndex( mZIndexSpinBox->value() );
dls.setShowAllDiagrams( mShowAllCheckBox->isChecked() );
if ( mDataDefinedVisibilityGroupBox->isChecked() )
{
dls.showColumn = mDataDefinedVisibilityComboBox->currentData().toInt();
}
else
{
dls.showColumn = -1;
}
if ( mDataDefinedPositionGroupBox->isChecked() )
{
dls.xPosColumn = mDataDefinedXComboBox->currentData().toInt();
dls.yPosColumn = mDataDefinedYComboBox->currentData().toInt();
}
else
{
dls.xPosColumn = -1;
dls.yPosColumn = -1;
}
dls.setPlacement(( QgsDiagramLayerSettings::Placement )mPlacementComboBox->currentData().toInt() );
QgsDiagramLayerSettings::LinePlacementFlags flags = 0;

View File

@ -570,11 +570,25 @@ bool QgsMapToolLabel::diagramMoveable( QgsVectorLayer* vlayer, int& xCol, int& y
if ( vlayer && vlayer->diagramsEnabled() )
{
const QgsDiagramLayerSettings *dls = vlayer->diagramLayerSettings();
if ( dls && dls->xPosColumn >= 0 && dls->yPosColumn >= 0 )
if ( dls )
{
xCol = dls->xPosColumn;
yCol = dls->yPosColumn;
return true;
xCol = -1;
if ( const QgsFieldBasedProperty* ddX = dynamic_cast< const QgsFieldBasedProperty* >( dls->properties().property( QgsDiagramLayerSettings::PositionX ) ) )
{
if ( ddX->isActive() )
{
xCol = vlayer->fields().lookupField( ddX->field() );
}
}
yCol = -1;
if ( const QgsFieldBasedProperty* ddY = dynamic_cast< const QgsFieldBasedProperty* >( dls->properties().property( QgsDiagramLayerSettings::PositionY ) ) )
{
if ( ddY->isActive() )
{
yCol = vlayer->fields().lookupField( ddY->field() );
}
}
return xCol >= 0 && yCol >= 0;
}
}
return false;
@ -657,20 +671,23 @@ bool QgsMapToolLabel::isPinned()
bool QgsMapToolLabel::diagramCanShowHide( QgsVectorLayer* vlayer, int& showCol ) const
{
bool rc = false;
showCol = -1;
if ( vlayer && vlayer->isEditable() && vlayer->diagramsEnabled() )
{
const QgsDiagramLayerSettings *dls = vlayer->diagramLayerSettings();
if ( dls && dls->showColumn >= 0 )
if ( const QgsDiagramLayerSettings *dls = vlayer->diagramLayerSettings() )
{
showCol = dls->showColumn;
rc = true;
if ( const QgsFieldBasedProperty* ddShow = dynamic_cast< const QgsFieldBasedProperty* >( dls->properties().property( QgsDiagramLayerSettings::Show ) ) )
{
if ( ddShow->isActive() )
{
showCol = vlayer->fields().lookupField( ddShow->field() );
}
}
}
}
return rc;
return showCol >= 0;
}
//

View File

@ -25,20 +25,15 @@
#include <QDomElement>
#include <QPainter>
QMap< int, QString > QgsDiagramLayerSettings::sPropertyNameMap;
QgsDiagramLayerSettings::QgsDiagramLayerSettings()
: xPosColumn( -1 )
, yPosColumn( -1 )
, showColumn( -1 )
, mRenderer( nullptr )
{
init();
}
QgsDiagramLayerSettings::QgsDiagramLayerSettings( const QgsDiagramLayerSettings& rh )
: xPosColumn( rh.xPosColumn )
, yPosColumn( rh.yPosColumn )
, showColumn( rh.showColumn )
, mCt( rh.mCt )
: mCt( rh.mCt )
, mPlacement( rh.mPlacement )
, mPlacementFlags( rh.mPlacementFlags )
, mPriority( rh.mPriority )
@ -62,9 +57,6 @@ QgsDiagramLayerSettings&QgsDiagramLayerSettings::operator=( const QgsDiagramLaye
mDistance = rh.mDistance;
mRenderer = rh.mRenderer ? rh.mRenderer->clone() : nullptr;
mCt = rh.mCt;
xPosColumn = rh.xPosColumn;
yPosColumn = rh.yPosColumn;
showColumn = rh.showColumn;
mShowAll = rh.mShowAll;
mProperties = rh.mProperties;
return *this;
@ -109,9 +101,27 @@ void QgsDiagramLayerSettings::readXml( const QDomElement& elem, const QgsVectorL
mZIndex = elem.attribute( QStringLiteral( "zIndex" ) ).toDouble();
mObstacle = elem.attribute( QStringLiteral( "obstacle" ) ).toInt();
mDistance = elem.attribute( QStringLiteral( "dist" ) ).toDouble();
xPosColumn = elem.attribute( QStringLiteral( "xPosColumn" ) ).toInt();
yPosColumn = elem.attribute( QStringLiteral( "yPosColumn" ) ).toInt();
showColumn = elem.attribute( QStringLiteral( "showColumn" ) ).toInt();
if ( elem.hasAttribute( QStringLiteral( "xPosColumn" ) ) )
{
// upgrade old project
int xPosColumn = elem.attribute( QStringLiteral( "xPosColumn" ) ).toInt();
if ( xPosColumn >= 0 && xPosColumn < layer->fields().count() )
mProperties.setProperty( PositionX, new QgsFieldBasedProperty( layer->fields().at( xPosColumn ).name(), true ) );
}
if ( elem.hasAttribute( QStringLiteral( "yPosColumn" ) ) )
{
// upgrade old project
int yPosColumn = elem.attribute( QStringLiteral( "yPosColumn" ) ).toInt();
if ( yPosColumn >= 0 && yPosColumn < layer->fields().count() )
mProperties.setProperty( PositionY, new QgsFieldBasedProperty( layer->fields().at( yPosColumn ).name(), true ) );
}
if ( elem.hasAttribute( QStringLiteral( "showColumn" ) ) )
{
// upgrade old project
int showColumn = elem.attribute( QStringLiteral( "showColumn" ) ).toInt();
if ( showColumn >= 0 && showColumn < layer->fields().count() )
mProperties.setProperty( Show, new QgsFieldBasedProperty( layer->fields().at( showColumn ).name(), true ) );
}
mShowAll = ( elem.attribute( QStringLiteral( "showAll" ), QStringLiteral( "0" ) ) != QLatin1String( "0" ) );
}
@ -129,9 +139,6 @@ void QgsDiagramLayerSettings::writeXml( QDomElement& layerElem, QDomDocument& do
diagramLayerElem.setAttribute( QStringLiteral( "zIndex" ), mZIndex );
diagramLayerElem.setAttribute( QStringLiteral( "obstacle" ), mObstacle );
diagramLayerElem.setAttribute( QStringLiteral( "dist" ), QString::number( mDistance ) );
diagramLayerElem.setAttribute( QStringLiteral( "xPosColumn" ), xPosColumn );
diagramLayerElem.setAttribute( QStringLiteral( "yPosColumn" ), yPosColumn );
diagramLayerElem.setAttribute( QStringLiteral( "showColumn" ), showColumn );
diagramLayerElem.setAttribute( QStringLiteral( "showAll" ), mShowAll );
layerElem.appendChild( diagramLayerElem );
}
@ -164,16 +171,6 @@ QSet<QString> QgsDiagramLayerSettings::referencedFields( const QgsExpressionCont
//add the ones needed for data defined settings
referenced.unite( mProperties.referencedFields( context ) );
//and the ones needed for data defined diagram positions
if ( xPosColumn >= 0 && xPosColumn < fieldsParameter.count() )
referenced << fieldsParameter.at( xPosColumn ).name();
if ( yPosColumn >= 0 && yPosColumn < fieldsParameter.count() )
referenced << fieldsParameter.at( yPosColumn ).name();
// and the ones needed for data defined diagram visibility
if ( showColumn >= 0 && showColumn < fieldsParameter.count() )
referenced << fieldsParameter.at( showColumn ).name();
return referenced;
}

View File

@ -148,7 +148,6 @@ class CORE_EXPORT QgsDiagramLayerSettings
*/
void setPriority( int value ) { mPriority = value; }
/** Returns the diagram z-index. Diagrams (or labels) with a higher z-index are drawn over diagrams
* with a lower z-index.
* @note z-index ordering is shared with labeling, so diagrams with a high z-index may be drawn over labels
@ -225,15 +224,6 @@ class CORE_EXPORT QgsDiagramLayerSettings
*/
void setCoordinateTransform( const QgsCoordinateTransform& transform );
//! Attribute index for x coordinate (or -1 if position not data defined)
int xPosColumn;
//! Attribute index for y coordinate (or -1 if position not data defined)
int yPosColumn;
//! Attribute index for visibility (or -1 if visibility not data defined)
int showColumn;
/** Returns whether the layer should show all diagrams, including overlapping diagrams
* @see setShowAllDiagrams()
* @note added in QGIS 2.16
@ -252,11 +242,9 @@ class CORE_EXPORT QgsDiagramLayerSettings
/** Returns the set of any fields referenced by the layer's diagrams.
* @param context expression context the diagrams will be drawn using
* @param fields layer fields
* @note added in QGIS 2.16
*/
//TODO QGIS 3.0 - remove need for fields parameter
QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext(), const QgsFields& fields = QgsFields() ) const;
QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext() ) const;
/** Returns a reference to the diagram's property collection, used for data defined overrides.
* @note added in QGIS 3.0
@ -465,6 +453,9 @@ class CORE_EXPORT QgsDiagramRenderer
*/
virtual QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext() ) const;
/**
* Renders the diagram for a specified feature at a specific position in the passed render context.
*/
void renderDiagram( const QgsFeature& feature, QgsRenderContext& c, QPointF pos, const QgsPropertyCollection& properties = QgsPropertyCollection() ) const;
void setDiagram( QgsDiagram* d );
@ -473,7 +464,18 @@ class CORE_EXPORT QgsDiagramRenderer
//! Returns list with all diagram settings in the renderer
virtual QList<QgsDiagramSettings> diagramSettings() const = 0;
/**
* Reads diagram state from a DOM element. Subclasses should ensure that _readXml() is called
* by their readXml implementation to restore the general QgsDiagramRenderer settings.
* @see writeXml()
*/
virtual void readXml( const QDomElement& elem, const QgsVectorLayer* layer ) = 0;
/**
* Writes diagram state to a DOM element. Subclasses should ensure that _writeXml() is called
* by their writeXml implementation to save the general QgsDiagramRenderer settings.
* @see readXml()
*/
virtual void writeXml( QDomElement& layerElem, QDomDocument& doc, const QgsVectorLayer* layer ) const = 0;
/** Returns list of legend nodes for the diagram
@ -550,7 +552,17 @@ class CORE_EXPORT QgsDiagramRenderer
static int dpiPaintDevice( const QPainter* );
//read / write diagram
/**
* Reads internal QgsDiagramRenderer state from a DOM element.
* @see _writeXml()
*/
void _readXml( const QDomElement& elem, const QgsVectorLayer* layer );
/**
* Writes internal QgsDiagramRenderer diagram state to a DOM element.
* @see _readXml()
*/
void _writeXml( QDomElement& rendererElem, QDomDocument& doc, const QgsVectorLayer* layer ) const;
//! Reference to the object that does the real diagram rendering

View File

@ -179,7 +179,7 @@ bool QgsVectorLayerDiagramProvider::prepare( const QgsRenderContext& context, QS
s2.setRenderer( mDiagRenderer );
//add attributes needed by the diagram renderer
attributeNames.unite( s2.referencedFields( context.expressionContext(), mFields ) );
attributeNames.unite( s2.referencedFields( context.expressionContext() ) );
return true;
}
@ -294,60 +294,34 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
alwaysShow = mSettings.properties().valueAsInt( QgsDiagramLayerSettings::AlwaysShow, context.expressionContext(), alwaysShow );
}
// old style show
int ddColShow = mSettings.showColumn;
if ( ddColShow >= 0 && ! feat.attribute( ddColShow ).isNull() )
{
bool showOk;
bool ddShow = feat.attribute( ddColShow ).toDouble( &showOk );
if ( showOk && ! ddShow )
return nullptr;
}
// old style data defined position
// TODO - remove when xPosColumn and yPosColumn are removed from QgsDiagramLayerSettings
int ddColX = mSettings.xPosColumn;
int ddColY = mSettings.yPosColumn;
// new style data defined position
bool ddPos = false;
double ddPosX = 0.0;
double ddPosY = 0.0;
bool ddPos = ( ddColX >= 0 && ddColY >= 0 );
if ( ddPos && ! feat.attribute( ddColX ).isNull() && ! feat.attribute( ddColY ).isNull() )
{
bool posXOk, posYOk;
ddPosX = feat.attribute( ddColX ).toDouble( &posXOk );
ddPosY = feat.attribute( ddColY ).toDouble( &posYOk );
if ( !posXOk || !posYOk )
{
ddPos = false;
}
}
// new style data defined position
if ( mSettings.properties().hasProperty( QgsDiagramLayerSettings::PositionX )
&& mSettings.properties().property( QgsDiagramLayerSettings::PositionX )->isActive()
&& mSettings.properties().hasProperty( QgsDiagramLayerSettings::PositionY )
&& mSettings.properties().property( QgsDiagramLayerSettings::PositionY )->isActive() )
{
ddPosX = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionX, context.expressionContext(), ddPosX );
ddPosY = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionY, context.expressionContext(), ddPosY );
ddPos = true;
}
ddPosX = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionX, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
ddPosY = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::PositionY, context.expressionContext(), std::numeric_limits<double>::quiet_NaN() );
if ( ddPos )
{
QgsCoordinateTransform ct = mSettings.coordinateTransform();
if ( ct.isValid() && !ct.isShortCircuited() )
ddPos = !qIsNaN( ddPosX ) && !qIsNaN( ddPosY );
if ( ddPos )
{
double z = 0;
ct.transformInPlace( ddPosX, ddPosY, z );
QgsCoordinateTransform ct = mSettings.coordinateTransform();
if ( ct.isValid() && !ct.isShortCircuited() )
{
double z = 0;
ct.transformInPlace( ddPosX, ddPosY, z );
}
//data defined diagram position is always centered
ddPosX -= diagramWidth / 2.0;
ddPosY -= diagramHeight / 2.0;
}
//data defined diagram position is always centered
ddPosX -= diagramWidth / 2.0;
ddPosY -= diagramHeight / 2.0;
}
QgsDiagramLabelFeature* lf = new QgsDiagramLabelFeature( feat.id(), geomCopy, QSizeF( diagramWidth, diagramHeight ) );
lf->setHasFixedPosition( ddPos );
lf->setFixedPosition( QgsPoint( ddPosX, ddPosY ) );
@ -371,7 +345,7 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea
&& mSettings.properties().property( QgsDiagramLayerSettings::Priority )->isActive() )
{
context.expressionContext().setOriginalValueVariable( mSettings.priority() );
double priorityD = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::Priority, context.expressionContext(), mSettings.getPriority() );
double priorityD = mSettings.properties().valueAsDouble( QgsDiagramLayerSettings::Priority, context.expressionContext(), mSettings.priority() );
priorityD = qBound( 0.0, priorityD, 10.0 );
priorityD = 1 - priorityD / 10.0; // convert 0..10 --> 1..0
lf->setPriority( priorityD );

View File

@ -303,8 +303,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>630</width>
<height>409</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6">
@ -539,8 +539,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>348</width>
<height>518</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@ -824,17 +824,7 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QCheckBox" name="mShowAllCheckBox">
<property name="text">
<string>Show all diagrams</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<item row="1" column="0">
<widget class="QgsCollapsibleGroupBox" name="mScaleVisibilityGroupBox">
<property name="title">
<string>Scale dependent visibility</string>
@ -850,30 +840,19 @@
<number>9</number>
</property>
<item row="0" column="0">
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget"/>
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget" native="true"/>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="mDataDefinedVisibilityGroupBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="title">
<string>Data defined visibility</string>
</property>
<property name="checkable">
<bool>true</bool>
<item row="0" column="0">
<widget class="QCheckBox" name="mShowAllCheckBox">
<property name="text">
<string>Show all diagrams</string>
</property>
<property name="checked">
<bool>false</bool>
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_11_1">
<item>
<widget class="QComboBox" name="mDataDefinedVisibilityComboBox"/>
</item>
</layout>
</widget>
</item>
</layout>
@ -937,8 +916,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>478</width>
<height>303</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_11">
@ -1072,7 +1051,7 @@
</widget>
</item>
<item row="0" column="1" rowspan="2" colspan="4">
<widget class="QgsFieldExpressionWidget" name="mSizeFieldExpressionWidget">
<widget class="QgsFieldExpressionWidget" name="mSizeFieldExpressionWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
@ -1253,8 +1232,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>296</width>
<height>303</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_12">
@ -1270,86 +1249,6 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="5" column="0" colspan="2">
<widget class="QGroupBox" name="mDataDefinedPositionGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Data defined position</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QLabel" name="mXPosColLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="mDataDefinedXComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mYPosColLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>y</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="mDataDefinedYComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="8" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0" colspan="2">
<widget class="QFrame" name="mPlacementFrame">
<property name="frameShape">
@ -1404,7 +1303,7 @@
</layout>
</widget>
</item>
<item row="6" column="0">
<item row="5" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="mPriorityLabel">
@ -1464,7 +1363,7 @@
</item>
</layout>
</item>
<item row="7" column="0">
<item row="6" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label_16">
@ -1572,6 +1471,19 @@
</layout>
</widget>
</item>
<item row="7" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
@ -1615,8 +1527,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>106</width>
<height>161</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
@ -1834,8 +1746,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>341</width>
<height>115</height>
<width>632</width>
<height>415</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
@ -1973,8 +1885,6 @@
<tabstop>mAngleOffsetComboBox</tabstop>
<tabstop>mDiagramFontButton</tabstop>
<tabstop>mShowAllCheckBox</tabstop>
<tabstop>mDataDefinedVisibilityGroupBox</tabstop>
<tabstop>mDataDefinedVisibilityComboBox</tabstop>
<tabstop>mScaleVisibilityGroupBox</tabstop>
<tabstop>scrollArea_5</tabstop>
<tabstop>mDiagramUnitComboBox</tabstop>
@ -1994,9 +1904,6 @@
<tabstop>chkLineOn</tabstop>
<tabstop>chkLineBelow</tabstop>
<tabstop>chkLineOrientationDependent</tabstop>
<tabstop>mDataDefinedPositionGroupBox</tabstop>
<tabstop>mDataDefinedXComboBox</tabstop>
<tabstop>mDataDefinedYComboBox</tabstop>
<tabstop>mPrioritySlider</tabstop>
<tabstop>mZIndexSpinBox</tabstop>
<tabstop>scrollArea_7</tabstop>