QGIS API Documentation 3.43.0-Master (b60ef06885e)
qgsrendererwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrendererwidget.h
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
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#ifndef QGSRENDERERWIDGET_H
16#define QGSRENDERERWIDGET_H
17
18#include <QWidget>
19#include <QMenu>
20#include <QStackedWidget>
21#include "qgspanelwidget.h"
23#include "qgsrenderer.h"
25
28class QgsVectorLayer;
29class QgsStyle;
30class QgsMapCanvas;
31class QgsMarkerSymbol;
34
48{
49 Q_OBJECT
50 public:
53
56
60 void showSymbolLevelsDialog( QgsFeatureRenderer *r );
61
67 virtual void setContext( const QgsSymbolWidgetContext &context );
68
73 QgsSymbolWidgetContext context() const;
74
78 const QgsVectorLayer *vectorLayer() const { return mLayer; }
79
83 void applyChanges();
84
85 void setDockMode( bool dockMode ) override;
86
93 virtual void disableSymbolLevels() SIP_SKIP;
94
95 signals:
96
102 void layerVariablesChanged();
103
109 Q_DECL_DEPRECATED void symbolLevelsChanged() SIP_DEPRECATED;
110
111 protected:
112 QgsVectorLayer *mLayer = nullptr;
113 QgsStyle *mStyle = nullptr;
114 QMenu *contextMenu = nullptr;
115 QAction *mCopyAction = nullptr;
116 QAction *mPasteAction = nullptr;
117
122 QAction *mCopySymbolAction = nullptr;
123
128 QAction *mPasteSymbolAction = nullptr;
129
132
137 virtual QList<QgsSymbol *> selectedSymbols() { return QList<QgsSymbol *>(); }
138 virtual void refreshSymbolView() {}
139
144 QgsDataDefinedSizeLegendWidget *createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend ) SIP_FACTORY;
145
155 virtual void setSymbolLevels( const QList<QgsLegendSymbolItem> &levels, bool enabled );
156
162 void registerDataDefinedButton( QgsPropertyOverrideButton *button, QgsFeatureRenderer::Property key );
163
164 protected slots:
165 void contextMenuViewCategories( QPoint p );
167 void changeSymbolColor();
169 void changeSymbolOpacity();
171 void changeSymbolUnit();
173 void changeSymbolWidth();
175 void changeSymbolSize();
177 void changeSymbolAngle();
178
179
180 virtual void copy() {}
181 virtual void paste() {}
182
188 virtual void pasteSymbolToSelection();
189
190 private slots:
191
192 void copySymbol();
193 void updateDataDefinedProperty();
194
195 private:
200 virtual void apply() SIP_FORCE;
201};
202
203
205
206#include <QObject>
207
208class QMenu;
209class QgsField;
210class QgsFields;
211
212#include "ui_widget_set_dd_value.h"
213#include "qgis_gui.h"
214
215
220class GUI_EXPORT QgsDataDefinedValueDialog : public QDialog, public Ui::QgsDataDefinedValueBaseDialog, private QgsExpressionContextGenerator
221{
222 Q_OBJECT
223
224 public:
231 QgsDataDefinedValueDialog( const QList<QgsSymbol *> &symbolList, QgsVectorLayer *layer, const QString &label );
232
238 void setContext( const QgsSymbolWidgetContext &context );
239
244 QgsSymbolWidgetContext context() const;
245
249 const QgsVectorLayer *vectorLayer() const { return mLayer; }
250
251 public slots:
252 void dataDefinedChanged();
253
254 protected:
260 void init( int propertyKey ); // needed in children ctor to call virtual
261
262 private:
263 QgsProperty symbolDataDefined() const SIP_FORCE;
264
265 virtual QgsProperty symbolDataDefined( const QgsSymbol * ) const = 0 SIP_FORCE;
266 virtual double value( const QgsSymbol * ) const = 0 SIP_FORCE;
267 virtual void setDataDefined( QgsSymbol *symbol, const QgsProperty &dd ) = 0 SIP_FORCE;
268
269 QList<QgsSymbol *> mSymbolList;
270 QgsVectorLayer *mLayer = nullptr;
271
272 QgsSymbolWidgetContext mContext;
273
274 QgsExpressionContext createExpressionContext() const override;
275};
276
283{
284 Q_OBJECT
285 public:
286 QgsDataDefinedSizeDialog( const QList<QgsSymbol *> &symbolList, QgsVectorLayer *layer );
287
288 protected:
289 QgsProperty symbolDataDefined( const QgsSymbol *symbol ) const override;
290
291 double value( const QgsSymbol *symbol ) const override;
292
293 void setDataDefined( QgsSymbol *symbol, const QgsProperty &dd ) override;
294
295 private:
296 std::shared_ptr<QgsMarkerSymbol> mAssistantSymbol;
297};
298
305{
306 Q_OBJECT
307 public:
308 QgsDataDefinedRotationDialog( const QList<QgsSymbol *> &symbolList, QgsVectorLayer *layer );
309
310 protected:
311 QgsProperty symbolDataDefined( const QgsSymbol *symbol ) const override;
312
313 double value( const QgsSymbol *symbol ) const override;
314
315 void setDataDefined( QgsSymbol *symbol, const QgsProperty &dd ) override;
316};
317
324{
325 Q_OBJECT
326 public:
327 QgsDataDefinedWidthDialog( const QList<QgsSymbol *> &symbolList, QgsVectorLayer *layer );
328
329 protected:
330 QgsProperty symbolDataDefined( const QgsSymbol *symbol ) const override;
331
332 double value( const QgsSymbol *symbol ) const override;
333
334 void setDataDefined( QgsSymbol *symbol, const QgsProperty &dd ) override;
335};
336
337
338#endif // QGSRENDERERWIDGET_H
A dialog for configuring symbol-level data defined rotation.
A dialog for configuring symbol-level data defined size.
Widget for configuration of appearance of legend for marker symbols with data-defined size.
Object that keeps configuration of appearance of marker symbol's data-defined size in legend.
Utility classes for "en masse" size definition.
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
A dialog for configuring symbol-level data defined width.
Abstract interface for generating an expression context.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Abstract base class for all 2D vector feature renderers.
Property
Data definable properties for renderers.
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:53
Container of fields for a vector layer.
Definition qgsfields.h:46
Stores information about one class/rule of a vector layer renderer in a unified way that can be used ...
Map canvas is a class for displaying all GIS data types on a canvas.
A marker symbol type, for rendering Point and MultiPoint geometries.
Base class for any widget that can be shown as an inline panel.
virtual void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
A button for controlling property overrides which may apply to a widget.
A store for object properties.
Base class for renderer settings widgets.
virtual void refreshSymbolView()
virtual QgsFeatureRenderer * renderer()=0
Returns pointer to the renderer (no transfer of ownership)
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
A database of saved style entities, including symbols, color ramps, text formats and others.
Definition qgsstyle.h:88
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
Represents a vector layer which manages a vector based dataset.
#define SIP_DEPRECATED
Definition qgis_sip.h:106
#define SIP_FORCE
Definition qgis_sip.h:131
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_FACTORY
Definition qgis_sip.h:76