Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsactionscope.h - QgsActionScope 3 : : 4 : : --------------------- 5 : : begin : 1.11.2016 6 : : copyright : (C) 2016 by Matthias Kuhn 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #ifndef QGSACTIONSCOPE_H 17 : : #define QGSACTIONSCOPE_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include <QString> 21 : : #include "qgsexpressioncontext.h" 22 : : 23 : : /** 24 : : * \ingroup core 25 : : * \brief An action scope defines a "place" for an action to be shown and may add 26 : : * additional expression variables. 27 : : * 28 : : * Each QgsAction can be available in one or several action scopes. 29 : : * 30 : : * Examples: 31 : : * --------- 32 : : * 33 : : * <dl> 34 : : * <dt>Canvas</dt> 35 : : * <dd>Show for canvas tools. Adds `@clicked_x` and `@clicked_y` in map coordinates.</dd> 36 : : * <dt>Feature</dt> 37 : : * <dd>Show in feature specific places like the attribute table or feature 38 : : * form.</dd> 39 : : * <dt>Field</dt> 40 : : * <dd>Show in context menus for individual fields (e.g. attribute table). Adds `@field_index`, `@field_name` and `@field_value`.</dd> 41 : : * <dt>Layer</dt> 42 : : * <dd>Show in attribute table and work on the layer or selection.</dd> 43 : : * </dl> 44 : : * 45 : : * \since QGIS 3.0 46 : : */ 47 : 60 : class CORE_EXPORT QgsActionScope 48 : : { 49 : : public: 50 : : #ifdef SIP_RUN 51 : : % TypeCode 52 : : #include <QHash> 53 : : % End 54 : : #endif 55 : : 56 : : /** 57 : : * Creates a new invalid action scope. 58 : : * 59 : : * \since QGIS 3.0 60 : : */ 61 : : explicit QgsActionScope(); 62 : : 63 : : /** 64 : : * Creates a new action scope. 65 : : * For details concerning the parameters check the documentation 66 : : * of the corresponding properties. 67 : : */ 68 : : explicit QgsActionScope( const QString &id, const QString &title, const QString &description, const QgsExpressionContextScope &expressionContextScope = QgsExpressionContextScope() ); 69 : : 70 : : /** 71 : : * Compares two action scopes 72 : : */ 73 : : bool operator==( const QgsActionScope &other ) const; 74 : : 75 : : /** 76 : : * An expression scope may offer additional variables for an action scope. 77 : : * This can be an `field_name` for the attribute which was clicked or 78 : : * `clicked_x` and `clicked_y` for actions which are available as map canvas clicks. 79 : : * 80 : : * \since QGIS 3.0 81 : : */ 82 : : QgsExpressionContextScope expressionContextScope() const; 83 : : 84 : : /** 85 : : * \copydoc expressionContextScope() 86 : : */ 87 : : void setExpressionContextScope( const QgsExpressionContextScope &expressionContextScope ); 88 : : 89 : : /** 90 : : * A unique identifier for this action scope. 91 : : * 92 : : * \since QGIS 3.0 93 : : */ 94 : : QString id() const; 95 : : 96 : : //! \copydoc id() 97 : : void setId( const QString &id ); 98 : : 99 : : /** 100 : : * The title is a human readable and translated string that will be 101 : : * presented to the user in the properties dialog. 102 : : * 103 : : * \since QGIS 3.0 104 : : */ 105 : : QString title() const; 106 : : //! \copydoc title() 107 : : void setTitle( const QString &title ); 108 : : 109 : : /** 110 : : * The description should be a longer description of where actions in this scope 111 : : * are available. It is not necessary to list the available expression variables 112 : : * in here, they are extracted automatically from the expressionContextScope(). 113 : : * 114 : : * \since QGIS 3.0 115 : : */ 116 : : QString description() const; 117 : : //! \copydoc description() 118 : : void setDescription( const QString &description ); 119 : : 120 : : /** 121 : : * Returns if this scope is valid. 122 : : * 123 : : * \since QGIS 3.0 124 : : */ 125 : : bool isValid() const; 126 : : #ifdef SIP_RUN 127 : : long __hash__(); 128 : : % MethodCode 129 : : sipRes = qHash( *sipCpp ); 130 : : % End 131 : : #endif 132 : : 133 : : private: 134 : : QString mId; 135 : : QString mTitle; 136 : : QString mDescription; 137 : : QgsExpressionContextScope mExpressionContextScope; 138 : : }; 139 : : 140 : : CORE_EXPORT uint qHash( const QgsActionScope &key, uint seed = 0 ) SIP_SKIP; 141 : : 142 : : #endif // QGSACTIONSCOPE_H