QGIS/python/core/qgsproperty.sip
Nyall Dawson fa26b45736 Crazy fix to avoid shared data getting corrupted in sip bindings
Without this (should be unnecessary) virtual destructor the
shared data member for QgsProperty gets filled with garbage if
a QgsProperty is created from python code.

I can't explain it...!
2017-01-23 12:45:22 +10:00

136 lines
3.5 KiB
Plaintext

class QgsPropertyDefinition
{
%TypeHeaderCode
#include <qgsproperty.h>
%End
public:
enum StandardPropertyTemplate
{
Boolean,
Integer,
IntegerPositive,
IntegerPositiveGreaterZero,
Double,
DoublePositive,
Double0To1,
String,
Transparency,
RenderUnits,
ColorWithAlpha,
ColorNoAlpha,
PenJoinStyle,
BlendMode,
Point,
Size,
LineStyle,
FillStyle,
CapStyle,
HorizontalAnchor,
VerticalAnchor,
SvgPath,
Offset,
Custom,
};
enum DataType
{
DataTypeString,
DataTypeNumeric,
DataTypeBoolean,
};
QgsPropertyDefinition();
QgsPropertyDefinition( const QString& name, const QString& description, StandardPropertyTemplate type );
QgsPropertyDefinition( const QString& name, DataType dataTypes, const QString& description, const QString& helpText );
QString name() const;
QString description() const;
QString helpText() const;
DataType dataType() const;
StandardPropertyTemplate standardTemplate() const;
};
class QgsProperty
{
%TypeHeaderCode
#include <qgsproperty.h>
%End
public:
//! Property types
enum Type
{
InvalidProperty, //! Invalid (not set) property
StaticProperty, //!< Static property (QgsStaticProperty)
FieldBasedProperty, //!< Field based property (QgsFieldBasedProperty)
ExpressionBasedProperty, //!< Expression based property (QgsExpressionBasedProperty)
};
QgsProperty();
virtual ~QgsProperty();
static QgsProperty fromExpression( const QString& expression, bool isActive = true );
static QgsProperty fromField( const QString& fieldName, bool isActive = true );
static QgsProperty fromValue( const QVariant& value, bool isActive = true );
QgsProperty( const QgsProperty& other );
operator bool() const;
Type propertyType() const;
bool isActive() const;
void setActive( bool active );
void setStaticValue( const QVariant& value );
QVariant staticValue() const;
void setField( const QString& field );
QString field() const;
void setExpressionString( const QString& expression );
QString expressionString() const;
virtual QString asExpression() const;
virtual bool prepare( const QgsExpressionContext& context = QgsExpressionContext() ) const;
virtual QSet< QString > referencedFields( const QgsExpressionContext& context = QgsExpressionContext() ) const;
QVariant value( const QgsExpressionContext& context, const QVariant& defaultValue = QVariant(), bool* ok /Out/ = nullptr ) const;
QString valueAsString( const QgsExpressionContext& context, const QString& defaultString = QString(), bool* ok /Out/ = nullptr ) const;
QColor valueAsColor( const QgsExpressionContext& context, const QColor& defaultColor = QColor(), bool* ok /Out/ = nullptr ) const;
double valueAsDouble( const QgsExpressionContext& context, double defaultValue = 0.0, bool* ok /Out/ = nullptr ) const;
int valueAsInt( const QgsExpressionContext& context, int defaultValue = 0, bool* ok /Out/ = nullptr ) const;
bool valueAsBool( const QgsExpressionContext& context, bool defaultValue = false, bool* ok /Out/ = nullptr ) const;
virtual bool writeXml( QDomElement& propertyElem, QDomDocument& doc ) const;
virtual bool readXml( const QDomElement& propertyElem, const QDomDocument& doc );
void setTransformer( QgsPropertyTransformer* transformer /Transfer/ );
const QgsPropertyTransformer* transformer() const;
};