diff --git a/python/core/composer/qgscomposerobject.sip b/python/core/composer/qgscomposerobject.sip
index aee20501275..f3677cd85e0 100644
--- a/python/core/composer/qgscomposerobject.sip
+++ b/python/core/composer/qgscomposerobject.sip
@@ -60,7 +60,11 @@ class QgsComposerObject : QObject, QgsExpressionContextGenerator
ScalebarLineWidth, //!< Scalebar line width
};
- static const QgsPropertiesDefinition PROPERTY_DEFINITIONS;
+ /**
+ * Returns the composer object property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
/** Specifies whether the value returned by a function should be the original, user
* set value, or the current evaluated value for the property. This may differ if
diff --git a/python/core/qgsdiagramrenderer.sip b/python/core/qgsdiagramrenderer.sip
index 5bf37623be9..482120054d8 100644
--- a/python/core/qgsdiagramrenderer.sip
+++ b/python/core/qgsdiagramrenderer.sip
@@ -53,6 +53,12 @@ class QgsDiagramLayerSettings
StartAngle, /*! Angle offset for pie diagram */
};
+ /**
+ * Returns the diagram property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
+
QgsDiagramLayerSettings();
//! Copy constructor
@@ -209,7 +215,6 @@ class QgsDiagramLayerSettings
void setDataDefinedProperties( const QgsPropertyCollection& collection );
- static const QgsPropertiesDefinition PROPERTY_DEFINITIONS;
};
diff --git a/python/core/qgspallabeling.sip b/python/core/qgspallabeling.sip
index b876e2e3922..e3266238453 100644
--- a/python/core/qgspallabeling.sip
+++ b/python/core/qgspallabeling.sip
@@ -270,6 +270,12 @@ class QgsPalLayerSettings
AlwaysShow
};
+ /**
+ * Returns the labeling property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
+
// whether to label this layer
bool enabled;
@@ -460,8 +466,6 @@ class QgsPalLayerSettings
int mFeatsSendingToPal; // total features tested for sending into PAL (relative to maxNumLabels)
int mFeatsRegPal; // number of features registered in PAL, when using limitNumLabels
- static const QgsPropertiesDefinition PROPERTY_DEFINITIONS;
-
};
class QgsLabelCandidate
diff --git a/python/core/symbology-ng/qgssymbollayer.sip b/python/core/symbology-ng/qgssymbollayer.sip
index 527136e0fe2..139cec7b5ff 100644
--- a/python/core/symbology-ng/qgssymbollayer.sip
+++ b/python/core/symbology-ng/qgssymbollayer.sip
@@ -122,7 +122,11 @@ class QgsSymbolLayer
PropertyArrowType, //!< Arrow type
};
- static const QgsPropertiesDefinition PROPERTY_DEFINITIONS;
+ /**
+ * Returns the symbol layer property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
virtual ~QgsSymbolLayer();
diff --git a/src/app/composer/qgscomposeritemwidget.cpp b/src/app/composer/qgscomposeritemwidget.cpp
index 2f5aecf00bb..2a7d3da4d70 100644
--- a/src/app/composer/qgscomposeritemwidget.cpp
+++ b/src/app/composer/qgscomposeritemwidget.cpp
@@ -77,7 +77,7 @@ void QgsComposerConfigObject::updateDataDefinedButtons()
void QgsComposerConfigObject::initializeDataDefinedButton( QgsPropertyOverrideButton* button, QgsComposerObject::DataDefinedProperty key )
{
button->blockSignals( true );
- button->init( key, mComposerObject->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, atlasCoverageLayer() );
+ button->init( key, mComposerObject->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), atlasCoverageLayer() );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsComposerConfigObject::updateDataDefinedProperty );
button->registerExpressionContextGenerator( mComposerObject );
button->blockSignals( false );
diff --git a/src/app/composer/qgscompositionwidget.cpp b/src/app/composer/qgscompositionwidget.cpp
index 968fa2eefcf..0687fde6610 100644
--- a/src/app/composer/qgscompositionwidget.cpp
+++ b/src/app/composer/qgscompositionwidget.cpp
@@ -156,11 +156,11 @@ void QgsCompositionWidget::populateDataDefinedButtons()
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsCompositionWidget::updateDataDefinedProperty );
}
- mPaperSizeDDBtn->init( QgsComposerObject::PresetPaperSize, mComposition->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, vl );
- mPaperWidthDDBtn->init( QgsComposerObject::PaperWidth, mComposition->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, vl );
- mPaperHeightDDBtn->init( QgsComposerObject::PaperHeight, mComposition->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, vl );
- mNumPagesDDBtn->init( QgsComposerObject::NumPages, mComposition->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, vl );
- mPaperOrientationDDBtn->init( QgsComposerObject::PaperOrientation, mComposition->dataDefinedProperties(), QgsComposerObject::PROPERTY_DEFINITIONS, vl );
+ mPaperSizeDDBtn->init( QgsComposerObject::PresetPaperSize, mComposition->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), vl );
+ mPaperWidthDDBtn->init( QgsComposerObject::PaperWidth, mComposition->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), vl );
+ mPaperHeightDDBtn->init( QgsComposerObject::PaperHeight, mComposition->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), vl );
+ mNumPagesDDBtn->init( QgsComposerObject::NumPages, mComposition->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), vl );
+ mPaperOrientationDDBtn->init( QgsComposerObject::PaperOrientation, mComposition->dataDefinedProperties(), QgsComposerObject::propertyDefinitions(), vl );
//initial state of controls - disable related controls when dd buttons are active
mPaperSizeComboBox->setEnabled( !mPaperSizeDDBtn->isActive() );
diff --git a/src/app/qgsdiagramproperties.cpp b/src/app/qgsdiagramproperties.cpp
index b929214a58d..43c724a3608 100644
--- a/src/app/qgsdiagramproperties.cpp
+++ b/src/app/qgsdiagramproperties.cpp
@@ -429,7 +429,7 @@ QgsDiagramProperties::~QgsDiagramProperties()
void QgsDiagramProperties::registerDataDefinedButton( QgsPropertyOverrideButton * button, QgsDiagramLayerSettings::Property key )
{
- button->init( key, mDataDefinedProperties, QgsDiagramLayerSettings::PROPERTY_DEFINITIONS, mLayer );
+ button->init( key, mDataDefinedProperties, QgsDiagramLayerSettings::propertyDefinitions(), mLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsDiagramProperties::updateProperty );
button->registerExpressionContextGenerator( this );
}
diff --git a/src/app/qgslabelinggui.cpp b/src/app/qgslabelinggui.cpp
index 949f9124b24..08da423f85e 100644
--- a/src/app/qgslabelinggui.cpp
+++ b/src/app/qgslabelinggui.cpp
@@ -44,7 +44,7 @@ QgsExpressionContext QgsLabelingGui::createExpressionContext() const
void QgsLabelingGui::registerDataDefinedButton( QgsPropertyOverrideButton* button, QgsPalLayerSettings::Property key )
{
- button->init( key, mDataDefinedProperties, QgsPalLayerSettings::PROPERTY_DEFINITIONS, mLayer );
+ button->init( key, mDataDefinedProperties, QgsPalLayerSettings::propertyDefinitions(), mLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLabelingGui::updateProperty );
button->registerExpressionContextGenerator( this );
}
diff --git a/src/core/composer/qgscomposerobject.cpp b/src/core/composer/qgscomposerobject.cpp
index 62461c4ca59..e0f31767fab 100644
--- a/src/core/composer/qgscomposerobject.cpp
+++ b/src/core/composer/qgscomposerobject.cpp
@@ -23,14 +23,14 @@
#include "qgsproject.h"
#include "qgsvectorlayer.h"
-QgsPropertiesDefinition QgsComposerObject::PROPERTY_DEFINITIONS;
+QgsPropertiesDefinition QgsComposerObject::sPropertyDefinitions;
void QgsComposerObject::initPropertyDefinitions()
{
- if ( !PROPERTY_DEFINITIONS.isEmpty() )
+ if ( !sPropertyDefinitions.isEmpty() )
return;
- PROPERTY_DEFINITIONS = QgsPropertiesDefinition
+ sPropertyDefinitions = QgsPropertiesDefinition
{
{ QgsComposerObject::TestProperty, QgsPropertyDefinition( "dataDefinedProperty" , QgsPropertyDefinition::DataTypeString, "invalid property", QString() ) },
{ QgsComposerObject::PresetPaperSize, QgsPropertyDefinition( "dataDefinedPaperSize" , QgsPropertyDefinition::DataTypeString, QObject::tr( "Paper size" ), QObject::tr( "string " ) + QLatin1String( "[A5|A4|A3|A2|A1|A0"
@@ -76,6 +76,12 @@ void QgsComposerObject::initPropertyDefinitions()
};
}
+const QgsPropertiesDefinition& QgsComposerObject::propertyDefinitions()
+{
+ QgsComposerObject::initPropertyDefinitions();
+ return sPropertyDefinitions;
+}
+
QgsComposerObject::QgsComposerObject( QgsComposition* composition )
: QObject( nullptr )
, mComposition( composition )
@@ -109,7 +115,7 @@ bool QgsComposerObject::writeXml( QDomElement &elem, QDomDocument &doc ) const
}
QDomElement ddPropsElement = doc.createElement( QStringLiteral( "dataDefinedProperties" ) );
- mDataDefinedProperties.writeXml( ddPropsElement, doc, PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.writeXml( ddPropsElement, doc, sPropertyDefinitions );
elem.appendChild( ddPropsElement );
//custom properties
@@ -132,7 +138,7 @@ bool QgsComposerObject::readXml( const QDomElement &itemElem, const QDomDocument
QDomNode propsNode = itemElem.namedItem( QStringLiteral( "dataDefinedProperties" ) );
if ( !propsNode.isNull() )
{
- mDataDefinedProperties.readXml( propsNode.toElement(), doc, PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.readXml( propsNode.toElement(), doc, sPropertyDefinitions );
}
//custom properties
diff --git a/src/core/composer/qgscomposerobject.h b/src/core/composer/qgscomposerobject.h
index 8f7e3bc8740..83b7493c284 100644
--- a/src/core/composer/qgscomposerobject.h
+++ b/src/core/composer/qgscomposerobject.h
@@ -88,9 +88,6 @@ class CORE_EXPORT QgsComposerObject: public QObject, public QgsExpressionContext
ScalebarLineWidth, //!< Scalebar line width
};
- //! Property definitions
- static QgsPropertiesDefinition PROPERTY_DEFINITIONS;
-
/** Specifies whether the value returned by a function should be the original, user
* set value, or the current evaluated value for the property. This may differ if
* a property has a data defined expression active.
@@ -101,6 +98,12 @@ class CORE_EXPORT QgsComposerObject: public QObject, public QgsExpressionContext
OriginalValue //!< Return the original, user set value
};
+ /**
+ * Returns the composer object property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
+
/** Constructor
* @param composition parent composition
*/
@@ -229,6 +232,9 @@ class CORE_EXPORT QgsComposerObject: public QObject, public QgsExpressionContext
void prepareProperties() const;
private:
+ //! Property definitions
+ static QgsPropertiesDefinition sPropertyDefinitions;
+
static void initPropertyDefinitions();
friend class TestQgsComposerObject;
diff --git a/src/core/composer/qgscomposerutils.cpp b/src/core/composer/qgscomposerutils.cpp
index 45cc95294fb..bacda0e783d 100644
--- a/src/core/composer/qgscomposerutils.cpp
+++ b/src/core/composer/qgscomposerutils.cpp
@@ -322,8 +322,8 @@ bool QgsComposerUtils::decodePresetPaperSize( const QString& presetString, doubl
void QgsComposerUtils::readOldDataDefinedPropertyMap( const QDomElement &itemElem, QgsPropertyCollection& dataDefinedProperties )
{
- QgsPropertiesDefinition::const_iterator i = QgsComposerObject::PROPERTY_DEFINITIONS.constBegin();
- for ( ; i != QgsComposerObject::PROPERTY_DEFINITIONS.constEnd(); ++i )
+ QgsPropertiesDefinition::const_iterator i = QgsComposerObject::propertyDefinitions().constBegin();
+ for ( ; i != QgsComposerObject::propertyDefinitions().constEnd(); ++i )
{
QString elemName = i.value().name();
QDomNodeList ddNodeList = itemElem.elementsByTagName( elemName );
diff --git a/src/core/composer/qgscomposition.cpp b/src/core/composer/qgscomposition.cpp
index 0daa3524164..54551732bb2 100644
--- a/src/core/composer/qgscomposition.cpp
+++ b/src/core/composer/qgscomposition.cpp
@@ -902,7 +902,7 @@ bool QgsComposition::writeXml( QDomElement& composerElem, QDomDocument& doc )
//data defined properties
QDomElement ddPropsElement = doc.createElement( QStringLiteral( "dataDefinedProperties" ) );
- mDataDefinedProperties.writeXml( ddPropsElement, doc, QgsComposerObject::PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.writeXml( ddPropsElement, doc, QgsComposerObject::propertyDefinitions() );
compositionElem.appendChild( ddPropsElement );
composerElem.appendChild( compositionElem );
@@ -989,7 +989,7 @@ bool QgsComposition::readXml( const QDomElement& compositionElem, const QDomDocu
QDomNode propsNode = compositionElem.namedItem( QStringLiteral( "dataDefinedProperties" ) );
if ( !propsNode.isNull() )
{
- mDataDefinedProperties.readXml( propsNode.toElement(), doc, QgsComposerObject::PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.readXml( propsNode.toElement(), doc, QgsComposerObject::propertyDefinitions() );
}
//custom properties
diff --git a/src/core/qgsdiagramrenderer.cpp b/src/core/qgsdiagramrenderer.cpp
index 843f88f225f..bc23516c53f 100644
--- a/src/core/qgsdiagramrenderer.cpp
+++ b/src/core/qgsdiagramrenderer.cpp
@@ -25,14 +25,14 @@
#include
#include
-QgsPropertiesDefinition QgsDiagramLayerSettings::PROPERTY_DEFINITIONS;
+QgsPropertiesDefinition QgsDiagramLayerSettings::sPropertyDefinitions;
void QgsDiagramLayerSettings::initPropertyDefinitions()
{
- if ( !PROPERTY_DEFINITIONS.isEmpty() )
+ if ( !sPropertyDefinitions.isEmpty() )
return;
- PROPERTY_DEFINITIONS = QgsPropertiesDefinition
+ sPropertyDefinitions = QgsPropertiesDefinition
{
{ QgsDiagramLayerSettings::BackgroundColor, QgsPropertyDefinition( "backgroundColor", QObject::tr( "Background color" ), QgsPropertyDefinition::ColorWithAlpha ) },
{ QgsDiagramLayerSettings::OutlineColor, QgsPropertyDefinition( "outlineColor", QObject::tr( "Outline color" ), QgsPropertyDefinition::ColorWithAlpha ) },
@@ -49,6 +49,12 @@ void QgsDiagramLayerSettings::initPropertyDefinitions()
};
}
+const QgsPropertiesDefinition& QgsDiagramLayerSettings::propertyDefinitions()
+{
+ initPropertyDefinitions();
+ return sPropertyDefinitions;
+}
+
QgsDiagramLayerSettings::QgsDiagramLayerSettings( const QgsDiagramLayerSettings& rh )
: mCt( rh.mCt )
, mPlacement( rh.mPlacement )
@@ -105,7 +111,7 @@ void QgsDiagramLayerSettings::readXml( const QDomElement& elem, const QgsVectorL
QDomNodeList propertyElems = elem.elementsByTagName( "properties" );
if ( !propertyElems.isEmpty() )
{
- ( void )mDataDefinedProperties.readXml( propertyElems.at( 0 ).toElement(), elem.ownerDocument(), PROPERTY_DEFINITIONS );
+ ( void )mDataDefinedProperties.readXml( propertyElems.at( 0 ).toElement(), elem.ownerDocument(), sPropertyDefinitions );
}
else
{
@@ -148,7 +154,7 @@ void QgsDiagramLayerSettings::writeXml( QDomElement& layerElem, QDomDocument& do
QDomElement diagramLayerElem = doc.createElement( QStringLiteral( "DiagramLayerSettings" ) );
QDomElement propertiesElem = doc.createElement( "properties" );
- ( void )mDataDefinedProperties.writeXml( propertiesElem, doc, PROPERTY_DEFINITIONS );
+ ( void )mDataDefinedProperties.writeXml( propertiesElem, doc, sPropertyDefinitions );
diagramLayerElem.appendChild( propertiesElem );
diagramLayerElem.setAttribute( QStringLiteral( "placement" ), mPlacement );
diagramLayerElem.setAttribute( QStringLiteral( "linePlacementFlags" ), mPlacementFlags );
diff --git a/src/core/qgsdiagramrenderer.h b/src/core/qgsdiagramrenderer.h
index fda256d3bdd..ff67f37e156 100644
--- a/src/core/qgsdiagramrenderer.h
+++ b/src/core/qgsdiagramrenderer.h
@@ -95,6 +95,12 @@ class CORE_EXPORT QgsDiagramLayerSettings
StartAngle, //! Angle offset for pie diagram
};
+ /**
+ * Returns the diagram property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
+
/**
* Constructor for QgsDiagramLayerSettings.
*/
@@ -286,9 +292,6 @@ class CORE_EXPORT QgsDiagramLayerSettings
*/
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
- //! Property definitions
- static QgsPropertiesDefinition PROPERTY_DEFINITIONS;
-
private:
//! Associated coordinate transform, or invalid transform for no transformation
@@ -324,6 +327,10 @@ class CORE_EXPORT QgsDiagramLayerSettings
QgsPropertyCollection mDataDefinedProperties;
static void initPropertyDefinitions();
+
+ //! Property definitions
+ static QgsPropertiesDefinition sPropertyDefinitions;
+
};
/** \ingroup core
diff --git a/src/core/qgspallabeling.cpp b/src/core/qgspallabeling.cpp
index 046002a7ca8..c8d6705f27e 100644
--- a/src/core/qgspallabeling.cpp
+++ b/src/core/qgspallabeling.cpp
@@ -90,14 +90,14 @@ const QVector< QgsPalLayerSettings::PredefinedPointPosition > QgsPalLayerSetting
<< QgsPalLayerSettings::TopMiddle
<< QgsPalLayerSettings::BottomMiddle;*/
-QgsPropertiesDefinition QgsPalLayerSettings::PROPERTY_DEFINITIONS;
+QgsPropertiesDefinition QgsPalLayerSettings::sPropertyDefinitions;
void QgsPalLayerSettings::initPropertyDefinitions()
{
- if ( !PROPERTY_DEFINITIONS.isEmpty() )
+ if ( !sPropertyDefinitions.isEmpty() )
return;
- PROPERTY_DEFINITIONS = QgsPropertiesDefinition
+ sPropertyDefinitions = QgsPropertiesDefinition
{
{ QgsPalLayerSettings::Size, QgsPropertyDefinition( "Size" , QObject::tr( "Font size" ), QgsPropertyDefinition::DoublePositive ) },
{ QgsPalLayerSettings::Bold, QgsPropertyDefinition( "Bold", QObject::tr( "Bold style" ), QgsPropertyDefinition::Boolean ) },
@@ -392,6 +392,11 @@ QgsPalLayerSettings QgsPalLayerSettings::fromLayer( QgsVectorLayer* layer )
return settings;
}
+const QgsPropertiesDefinition& QgsPalLayerSettings::propertyDefinitions()
+{
+ initPropertyDefinitions();
+ return sPropertyDefinitions;
+}
QgsExpression* QgsPalLayerSettings::getLabelExpression()
{
@@ -438,7 +443,7 @@ QString updateDataDefinedString( const QString& value )
void QgsPalLayerSettings::readOldDataDefinedProperty( QgsVectorLayer* layer, QgsPalLayerSettings::Property p )
{
- QString newPropertyName = "labeling/dataDefined/" + PROPERTY_DEFINITIONS.value( p ).name();
+ QString newPropertyName = "labeling/dataDefined/" + sPropertyDefinitions.value( p ).name();
QVariant newPropertyField = layer->customProperty( newPropertyName, QVariant() );
if ( !newPropertyField.isValid() )
@@ -476,8 +481,8 @@ void QgsPalLayerSettings::readOldDataDefinedPropertyMap( QgsVectorLayer* layer,
return;
}
- QgsPropertiesDefinition::const_iterator i = PROPERTY_DEFINITIONS.constBegin();
- for ( ; i != PROPERTY_DEFINITIONS.constEnd(); ++i )
+ QgsPropertiesDefinition::const_iterator i = sPropertyDefinitions.constBegin();
+ for ( ; i != sPropertyDefinitions.constEnd(); ++i )
{
if ( layer )
{
@@ -650,7 +655,7 @@ void QgsPalLayerSettings::readFromLayer( QgsVectorLayer* layer )
QDomDocument doc( QStringLiteral( "dd" ) );
doc.setContent( layer->customProperty( QStringLiteral( "labeling/ddProperties" ) ).toString() );
QDomElement elem = doc.firstChildElement( QStringLiteral( "properties" ) );
- mDataDefinedProperties.readXml( elem, doc, PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.readXml( elem, doc, sPropertyDefinitions );
}
else
{
@@ -741,7 +746,7 @@ void QgsPalLayerSettings::writeToLayer( QgsVectorLayer* layer )
doc = QDomDocument( QStringLiteral( "dd" ) );
QDomElement ddElem = doc.createElement( QStringLiteral( "properties" ) );
- mDataDefinedProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.writeXml( ddElem, doc, sPropertyDefinitions );
QString ddProps;
QTextStream streamProps( &ddProps );
ddElem.save( streamProps, -1 );
@@ -857,7 +862,7 @@ void QgsPalLayerSettings::readXml( QDomElement& elem )
QDomElement ddElem = elem.firstChildElement( QStringLiteral( "dd_properties" ) );
if ( !ddElem.isNull() )
{
- mDataDefinedProperties.readXml( ddElem, ddElem.ownerDocument(), PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.readXml( ddElem, ddElem.ownerDocument(), sPropertyDefinitions );
}
else
{
@@ -946,7 +951,7 @@ QDomElement QgsPalLayerSettings::writeXml( QDomDocument& doc )
renderingElem.setAttribute( QStringLiteral( "zIndex" ), zIndex );
QDomElement ddElem = doc.createElement( QStringLiteral( "dd_properties" ) );
- mDataDefinedProperties.writeXml( ddElem, doc, PROPERTY_DEFINITIONS );
+ mDataDefinedProperties.writeXml( ddElem, doc, sPropertyDefinitions );
QDomElement elem = doc.createElement( QStringLiteral( "settings" ) );
elem.appendChild( textStyleElem );
diff --git a/src/core/qgspallabeling.h b/src/core/qgspallabeling.h
index 4165ebde933..4aa959abe11 100644
--- a/src/core/qgspallabeling.h
+++ b/src/core/qgspallabeling.h
@@ -371,6 +371,13 @@ class CORE_EXPORT QgsPalLayerSettings
AlwaysShow = 20
};
+ /**
+ * Returns the labeling property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
+
+
// whether to label this layer
bool enabled;
@@ -574,9 +581,6 @@ class CORE_EXPORT QgsPalLayerSettings
int mFeatsSendingToPal; // total features tested for sending into PAL (relative to maxNumLabels)
int mFeatsRegPal; // number of features registered in PAL, when using limitNumLabels
- //! Property definitions
- static QgsPropertiesDefinition PROPERTY_DEFINITIONS;
-
private:
/**
@@ -645,6 +649,10 @@ class CORE_EXPORT QgsPalLayerSettings
static const QVector< PredefinedPointPosition > DEFAULT_PLACEMENT_ORDER;
static void initPropertyDefinitions();
+
+ //! Property definitions
+ static QgsPropertiesDefinition sPropertyDefinitions;
+
};
/** \ingroup core
diff --git a/src/core/symbology-ng/qgssymbollayer.cpp b/src/core/symbology-ng/qgssymbollayer.cpp
index 14283b734db..0d154c60a89 100644
--- a/src/core/symbology-ng/qgssymbollayer.cpp
+++ b/src/core/symbology-ng/qgssymbollayer.cpp
@@ -31,14 +31,14 @@
#include
#include
-QgsPropertiesDefinition QgsSymbolLayer::PROPERTY_DEFINITIONS;
+QgsPropertiesDefinition QgsSymbolLayer::sPropertyDefinitions;
void QgsSymbolLayer::initPropertyDefinitions()
{
- if ( !PROPERTY_DEFINITIONS.isEmpty() )
+ if ( !sPropertyDefinitions.isEmpty() )
return;
- PROPERTY_DEFINITIONS = QgsPropertiesDefinition
+ sPropertyDefinitions = QgsPropertiesDefinition
{
{ QgsSymbolLayer::PropertySize, QgsPropertyDefinition( "size", QObject::tr( "Symbol size" ), QgsPropertyDefinition::Size ) },
{ QgsSymbolLayer::PropertyAngle, QgsPropertyDefinition( "angle", QObject::tr( "Rotation angle" ), QgsPropertyDefinition::Double ) },
@@ -189,6 +189,12 @@ void QgsSymbolLayer::prepareExpressions( const QgsSymbolRenderContext& context )
}
}
+const QgsPropertiesDefinition&QgsSymbolLayer::propertyDefinitions()
+{
+ QgsSymbolLayer::initPropertyDefinitions();
+ return sPropertyDefinitions;
+}
+
QgsSymbolLayer::~QgsSymbolLayer()
{
delete mPaintEffect;
diff --git a/src/core/symbology-ng/qgssymbollayer.h b/src/core/symbology-ng/qgssymbollayer.h
index 0aed323101d..13953677e37 100644
--- a/src/core/symbology-ng/qgssymbollayer.h
+++ b/src/core/symbology-ng/qgssymbollayer.h
@@ -109,8 +109,11 @@ class CORE_EXPORT QgsSymbolLayer
PropertyArrowType, //!< Arrow type
};
- //! Property definitions
- static QgsPropertiesDefinition PROPERTY_DEFINITIONS;
+ /**
+ * Returns the symbol layer property definitions.
+ * @note added in QGIS 3.0
+ */
+ static const QgsPropertiesDefinition& propertyDefinitions();
virtual ~QgsSymbolLayer();
@@ -309,6 +312,7 @@ class CORE_EXPORT QgsSymbolLayer
void setDataDefinedProperties( const QgsPropertyCollection& collection ) { mDataDefinedProperties = collection; }
protected:
+
QgsSymbolLayer( QgsSymbol::SymbolType type, bool locked = false );
QgsSymbol::SymbolType mType;
@@ -351,6 +355,10 @@ class CORE_EXPORT QgsSymbolLayer
private:
static void initPropertyDefinitions();
+
+ //! Property definitions
+ static QgsPropertiesDefinition sPropertyDefinitions;
+
};
//////////////////////
diff --git a/src/core/symbology-ng/qgssymbollayerutils.cpp b/src/core/symbology-ng/qgssymbollayerutils.cpp
index 2731912bc43..c4385578e33 100644
--- a/src/core/symbology-ng/qgssymbollayerutils.cpp
+++ b/src/core/symbology-ng/qgssymbollayerutils.cpp
@@ -906,7 +906,7 @@ QgsSymbolLayer* QgsSymbolLayerUtils::loadSymbolLayer( QDomElement& element )
QDomElement ddProps = element.firstChildElement( QStringLiteral( "data_defined_properties" ) );
if ( !ddProps.isNull() )
{
- layer->dataDefinedProperties().readXml( ddProps, element.ownerDocument(), QgsSymbolLayer::PROPERTY_DEFINITIONS );
+ layer->dataDefinedProperties().readXml( ddProps, element.ownerDocument(), QgsSymbolLayer::propertyDefinitions() );
}
return layer;
@@ -957,7 +957,7 @@ QDomElement QgsSymbolLayerUtils::saveSymbol( const QString& name, QgsSymbol* sym
layer->paintEffect()->saveProperties( doc, layerEl );
QDomElement ddProps = doc.createElement( QStringLiteral( "data_defined_properties" ) );
- layer->dataDefinedProperties().writeXml( ddProps, doc, QgsSymbolLayer::PROPERTY_DEFINITIONS );
+ layer->dataDefinedProperties().writeXml( ddProps, doc, QgsSymbolLayer::propertyDefinitions() );
layerEl.appendChild( ddProps );
if ( layer->subSymbol() )
diff --git a/src/gui/symbology-ng/qgslayerpropertieswidget.cpp b/src/gui/symbology-ng/qgslayerpropertieswidget.cpp
index 926c5729d4b..bb2c3ee592e 100644
--- a/src/gui/symbology-ng/qgslayerpropertieswidget.cpp
+++ b/src/gui/symbology-ng/qgslayerpropertieswidget.cpp
@@ -261,7 +261,7 @@ QgsExpressionContext QgsLayerPropertiesWidget::createExpressionContext() const
void QgsLayerPropertiesWidget::registerDataDefinedButton( QgsPropertyOverrideButton* button, QgsSymbolLayer::Property key )
{
- button->init( key, mLayer->dataDefinedProperties(), QgsSymbolLayer::PROPERTY_DEFINITIONS, mVectorLayer );
+ button->init( key, mLayer->dataDefinedProperties(), QgsSymbolLayer::propertyDefinitions(), mVectorLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsLayerPropertiesWidget::updateProperty );
button->registerExpressionContextGenerator( this );
}
diff --git a/src/gui/symbology-ng/qgsrendererwidget.cpp b/src/gui/symbology-ng/qgsrendererwidget.cpp
index b1f3f06af09..f01d31cbf19 100644
--- a/src/gui/symbology-ng/qgsrendererwidget.cpp
+++ b/src/gui/symbology-ng/qgsrendererwidget.cpp
@@ -339,7 +339,7 @@ void QgsDataDefinedValueDialog::init( int propertyKey )
{
QgsProperty dd( symbolDataDefined() );
- mDDBtn->init( propertyKey, dd, QgsSymbolLayer::PROPERTY_DEFINITIONS, mLayer );
+ mDDBtn->init( propertyKey, dd, QgsSymbolLayer::propertyDefinitions(), mLayer );
mDDBtn->registerExpressionContextGenerator( this );
QgsSymbol* initialSymbol = nullptr;
diff --git a/src/gui/symbology-ng/qgssymbollayerwidget.cpp b/src/gui/symbology-ng/qgssymbollayerwidget.cpp
index 42d2d609d48..e02f5ae7d8e 100644
--- a/src/gui/symbology-ng/qgssymbollayerwidget.cpp
+++ b/src/gui/symbology-ng/qgssymbollayerwidget.cpp
@@ -111,7 +111,7 @@ QgsSymbolWidgetContext QgsSymbolLayerWidget::context() const
void QgsSymbolLayerWidget::registerDataDefinedButton( QgsPropertyOverrideButton * button, QgsSymbolLayer::Property key )
{
- button->init( key, symbolLayer()->dataDefinedProperties(), QgsSymbolLayer::PROPERTY_DEFINITIONS, mVectorLayer );
+ button->init( key, symbolLayer()->dataDefinedProperties(), QgsSymbolLayer::propertyDefinitions(), mVectorLayer );
connect( button, &QgsPropertyOverrideButton::changed, this, &QgsSymbolLayerWidget::updateDataDefinedProperty );
button->registerExpressionContextGenerator( this );
diff --git a/src/gui/symbology-ng/qgssymbolslistwidget.cpp b/src/gui/symbology-ng/qgssymbolslistwidget.cpp
index 261fc8ff296..84e3d7c623b 100644
--- a/src/gui/symbology-ng/qgssymbolslistwidget.cpp
+++ b/src/gui/symbology-ng/qgssymbolslistwidget.cpp
@@ -515,10 +515,10 @@ void QgsSymbolsListWidget::updateSymbolInfo()
if ( mLayer )
{
QgsProperty ddSize( markerSymbol->dataDefinedSize() );
- mSizeDDBtn->init( QgsSymbolLayer::PropertySize, ddSize, QgsSymbolLayer::PROPERTY_DEFINITIONS, mLayer );
+ mSizeDDBtn->init( QgsSymbolLayer::PropertySize, ddSize, QgsSymbolLayer::propertyDefinitions(), mLayer );
spinSize->setEnabled( !mSizeDDBtn->isActive() );
QgsProperty ddAngle( markerSymbol->dataDefinedAngle() );
- mRotationDDBtn->init( QgsSymbolLayer::PropertyAngle, ddAngle, QgsSymbolLayer::PROPERTY_DEFINITIONS, mLayer );
+ mRotationDDBtn->init( QgsSymbolLayer::PropertyAngle, ddAngle, QgsSymbolLayer::propertyDefinitions(), mLayer );
spinAngle->setEnabled( !mRotationDDBtn->isActive() );
}
else
@@ -535,7 +535,7 @@ void QgsSymbolsListWidget::updateSymbolInfo()
if ( mLayer )
{
QgsProperty dd( lineSymbol->dataDefinedWidth() );
- mWidthDDBtn->init( QgsSymbolLayer::PropertyOutlineWidth, dd, QgsSymbolLayer::PROPERTY_DEFINITIONS, mLayer );
+ mWidthDDBtn->init( QgsSymbolLayer::PropertyOutlineWidth, dd, QgsSymbolLayer::propertyDefinitions(), mLayer );
spinWidth->setEnabled( !mWidthDDBtn->isActive() );
}
else