QGIS API Documentation 3.43.0-Master (b60ef06885e)
qgsactionmenu.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsactionmenu.h
3 --------------------------------------
4 Date : 11.8.2014
5 Copyright : (C) 2014 Matthias Kuhn
6 Email : matthias at opengis dot ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSACTIONMENU_H
17#define QGSACTIONMENU_H
18
19#include <QMenu>
20#include "qgis_sip.h"
21
22#include "qgsfeature.h"
24#include "qgsaction.h"
25#include "qgis_gui.h"
26
27class QgsMapLayer;
29class QgsVectorLayer;
32
37class GUI_EXPORT QgsActionMenu : public QMenu
38{
39 Q_OBJECT
40
41 public:
42 struct GUI_EXPORT ActionData
43 {
44 ActionData() = default;
45 ActionData( const QgsAction &action, QgsFeatureId featureId, QgsMapLayer *mapLayer );
46 ActionData( QgsMapLayerAction *action, QgsFeatureId featureId, QgsMapLayer *mapLayer );
47
49 QVariant actionData;
50 QgsFeatureId featureId = 0;
51 QgsMapLayer *mapLayer = nullptr;
52 };
53
63 explicit QgsActionMenu( QgsVectorLayer *layer, const QgsFeature &feature, const QString &actionScope, QWidget *parent SIP_TRANSFERTHIS = nullptr );
64
73 explicit QgsActionMenu( QgsVectorLayer *layer, QgsFeatureId fid, const QString &actionScope, QWidget *parent SIP_TRANSFERTHIS = nullptr );
74
82 void setActionContextGenerator( QgsMapLayerActionContextGenerator *generator );
83
90 void setFeature( const QgsFeature &feature );
91
97 void setMode( QgsAttributeEditorContext::Mode mode );
98
103 void setExpressionContextScope( const QgsExpressionContextScope &scope );
104
109 QgsExpressionContextScope expressionContextScope() const;
110
116 QList<QgsAction> menuActions();
117
123 bool isEmpty() const;
124
125 signals:
126
130 void reinit();
131
132 private slots:
133 void triggerAction();
134 void reloadActions();
135 void layerWillBeDeleted();
136
137 private:
138 void init();
139 QgsFeature feature();
140
141 QgsVectorLayer *mLayer = nullptr;
142 int mVisibleActionCount = 0;
143 QList<QgsAction> mActions;
144 QgsFeature mFeature;
145 QgsFeatureId mFeatureId;
146 QString mActionScope;
147 QgsExpressionContextScope mExpressionContextScope;
149
150 QgsMapLayerActionContextGenerator *mContextGenerator = nullptr;
151};
152
153
155
156#endif // QGSACTIONMENU_H
ActionType
Action types.
Definition qgis.h:4440
@ Invalid
Invalid.
Storage and management of actions associated with a layer.
A menu that is populated automatically with the actions defined for a given layer.
void reinit()
Emitted after actions have been reloaded.
Utility class that encapsulates an action based on vector attributes.
Definition qgsaction.h:37
@ SingleEditMode
Single edit mode, for editing a single feature.
Single scope for storing variables and functions for use within a QgsExpressionContext.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
An interface for objects which can create a QgsMapLayerActionContext.
An action which can run on map layers.
Base class for all map layer types.
Definition qgsmaplayer.h:77
Represents a vector layer which manages a vector based dataset.
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features