class QgsDataDefinedButton : QToolButton { %TypeHeaderCode #include %End public: enum DataType { AnyType, String, Int, Double, }; typedef QFlags DataTypes; /** * Construct a new data defined button * * @param parent The parent QWidget * @param vl Pointer to the associated vector layer * @param datadefined Data defined property * @param datatypes The expected data types to be compared against the variant type of the QgsField from data source and expression result * @param description The description of expected input data */ QgsDataDefinedButton( QWidget* parent = 0, const QgsVectorLayer* vl = 0, const QgsDataDefined* datadefined = 0, DataTypes datatypes = AnyType, QString description = "" ); ~QgsDataDefinedButton(); /** * Initialize a newly constructed data defined button (useful if button already included from form layout) * * @param vl Pointer to the associated vector layer * @param datadefined Data defined property * @param datatypes The expected data types to be compared against the variant type of the QgsField from data source and expression result * @param description The description of expected input data */ void init( const QgsVectorLayer* vl, const QgsDataDefined* datadefined = 0, DataTypes datatypes = AnyType, QString description = QString( "" ) ); QMap< QString, QString > definedProperty() const; /** * Whether the current data definition or expression is to be used */ bool isActive(); /** * Whether the current expression is to be used instead of field mapping */ bool useExpression(); /** * The current defined expression */ QString getExpression() const; /** * The current defined field */ QString getField() const; /** * The current definition * @returns empty QString if not active, otherwise currently defined expression or field name */ QString currentDefinition() const; /** * The valid data types that will work for the definition (QVariant-coercible to expected type) * Compared against the variant type of the QgsField from data source and expression result */ const DataTypes& validDataTypes() const; /** * The full definition description and current definition (internally generated on a contextual basis) */ QString fullDescription() const; /** * The usage information about this data definition */ QString usageInfo() const; /** * Set the usage information about this data definition */ void setUsageInfo( const QString& info ); /** * Register list of sibling widgets that get disabled/enabled when data definition or expression is set/unset */ void registerEnabledWidgets( QList wdgts ); /** * Register a sibling widget that gets disabled/enabled when data definition or expression is set/unset */ void registerEnabledWidget( QWidget* wdgt ); /** * Return widget siblings that get disabled/enabled when data definition or expression is set/unset * * @return unguarded pointers from guarded ones */ QList registeredEnabledWidgets(); /** * Clears list of sibling widgets */ void clearEnabledWidgets(); /** * Register list of sibling widgets that get checked when data definition or expression is active */ void registerCheckedWidgets( QList wdgts ); /** * Register a sibling widget that get checked when data definition or expression is active */ void registerCheckedWidget( QWidget* wdgt ); /** * Return widget siblings that get checked when data definition or expression is active * * @return unguarded pointers from guarded ones */ QList registeredCheckedWidgets(); /** * Clears list of checkable sibling widgets */ void clearCheckedWidgets(); /** * Common descriptions for expected input values */ static QString trString(); static QString boolDesc(); static QString anyStringDesc(); static QString intDesc(); static QString intPosDesc(); static QString intPosOneDesc(); static QString doubleDesc(); static QString doublePosDesc(); static QString doubleXYDesc(); static QString double180RotDesc(); static QString intTranspDesc(); static QString unitsMmMuDesc(); static QString unitsMmMuPercentDesc(); static QString colorNoAlphaDesc(); static QString colorAlphaDesc(); static QString textHorzAlignDesc(); static QString textVertAlignDesc(); static QString penJoinStyleDesc(); static QString blendModesDesc(); static QString svgPathDesc(); public slots: /** * Set whether the current data definition or expression is to be used */ void setActive( bool active ); /** * Set siblings' enabled property when data definition or expression is set/unset */ void disableEnabledWidgets( bool disable ); /** * Set siblings' checked property when data definition or expression is active */ void checkCheckedWidgets( bool check ); signals: /** * Emitted when data definition or expression is changed * @param definition The current definition or expression (empty string if inactive) */ void dataDefinedChanged( const QString& definition ); /** * Emitted when active state changed * @param active Whether the definition is active */ void dataDefinedActivated( bool active ); protected: void mouseReleaseEvent( QMouseEvent *event ); /** * Set whether the current expression is to be used instead of field mapping */ void setUseExpression( bool use ); /** * Set the current defined expression */ void setExpression( QString exp ); /** * Set the current defined field */ void setField( QString field ); };