QGIS API Documentation  2.14.0-Essen
qgssymbollayerv2widget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgssymbollayerv2widget.h - symbol layer widgets
3 
4  ---------------------
5  begin : November 2009
6  copyright : (C) 2009 by Martin Dobias
7  email : wonder dot sk at gmail dot com
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 
17 #ifndef QGSSYMBOLLAYERV2WIDGET_H
18 #define QGSSYMBOLLAYERV2WIDGET_H
19 
20 #include <qgsdatadefinedbutton.h>
21 
22 #include <QWidget>
23 #include <QStandardItemModel>
24 
25 class QgsSymbolLayerV2;
26 class QgsVectorLayer;
27 class QgsMapCanvas;
28 
29 class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
30 {
31  Q_OBJECT
32 
33  public:
34  QgsSymbolLayerV2Widget( QWidget* parent, const QgsVectorLayer* vl = nullptr ) : QWidget( parent ), mVectorLayer( vl ), mPresetExpressionContext( nullptr ), mMapCanvas( nullptr ) {}
36 
37  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) = 0;
38  virtual QgsSymbolLayerV2* symbolLayer() = 0;
39 
46  QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
47 
54  virtual void setMapCanvas( QgsMapCanvas* canvas );
55 
60  const QgsMapCanvas* mapCanvas() const;
61 
65  const QgsVectorLayer* vectorLayer() const { return mVectorLayer; }
66 
67  public slots:
68 
77  void setExpressionContext( QgsExpressionContext* context ) { mPresetExpressionContext = context; }
78 
79  protected:
81 
84 
86 
87  void registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description );
88 
94  Q_DECL_DEPRECATED virtual QString dataDefinedPropertyLabel( const QString &entryName );
95 
96  signals:
101  void changed();
108  void symbolChanged();
109 
110  protected slots:
111  void updateDataDefinedProperty();
112 };
113 
115 
116 #include "ui_widget_simpleline.h"
117 
119 
120 class GUI_EXPORT QgsSimpleLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleLine
121 {
122  Q_OBJECT
123 
124  public:
125  QgsSimpleLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
126 
128 
130 
131  // from base class
132  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
133  virtual QgsSymbolLayerV2* symbolLayer() override;
134 
135  public slots:
136  void penWidthChanged();
137  void colorChanged( const QColor& color );
138  void penStyleChanged();
139  void offsetChanged();
140  void on_mCustomCheckBox_stateChanged( int state );
141  void on_mChangePatternButton_clicked();
142  void on_mPenWidthUnitWidget_changed();
143  void on_mOffsetUnitWidget_changed();
144  void on_mDashPatternUnitWidget_changed();
145  void on_mDrawInsideCheckBox_stateChanged( int state );
146 
147  protected:
149 
150  //creates a new icon for the 'change pattern' button
151  void updatePatternIcon();
152 
153  private slots:
154 
155  void updateAssistantSymbol();
156 
157  private:
158 
159  QgsLineSymbolV2* mAssistantPreviewSymbol;
160 
161 };
162 
164 
165 #include "ui_widget_simplemarker.h"
166 
168 
169 class GUI_EXPORT QgsSimpleMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleMarker
170 {
171  Q_OBJECT
172 
173  public:
174  QgsSimpleMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
176 
178 
179  // from base class
180  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
181  virtual QgsSymbolLayerV2* symbolLayer() override;
182 
183  public slots:
184  void setName();
185  void setColorBorder( const QColor& color );
186  void setColorFill( const QColor& color );
187  void setSize();
188  void setAngle();
189  void setOffset();
190  void on_mSizeUnitWidget_changed();
191  void on_mOffsetUnitWidget_changed();
192  void on_mOutlineWidthUnitWidget_changed();
193  void on_mOutlineStyleComboBox_currentIndexChanged( int index );
194  void on_mOutlineWidthSpinBox_valueChanged( double d );
195  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
196  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
197 
198  protected:
200 
201  private slots:
202 
203  void updateAssistantSymbol();
204 
205  private:
206 
207  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
208 };
209 
211 
212 #include "ui_widget_simplefill.h"
213 
215 
216 class GUI_EXPORT QgsSimpleFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleFill
217 {
218  Q_OBJECT
219 
220  public:
221  QgsSimpleFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
222 
224 
225  // from base class
226  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
227  virtual QgsSymbolLayerV2* symbolLayer() override;
228 
229  public slots:
230  void setColor( const QColor& color );
231  void setBorderColor( const QColor& color );
232  void setBrushStyle();
233  void borderWidthChanged();
234  void borderStyleChanged();
235  void offsetChanged();
236  void on_mBorderWidthUnitWidget_changed();
237  void on_mOffsetUnitWidget_changed();
238 
239  protected:
241 };
242 
243 
245 
246 #include "ui_widget_gradientfill.h"
247 
249 
250 class GUI_EXPORT QgsGradientFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetGradientFill
251 {
252  Q_OBJECT
253 
254  public:
255  QgsGradientFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
256 
258 
259  // from base class
260  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
261  virtual QgsSymbolLayerV2* symbolLayer() override;
262 
263  public slots:
264  void setColor( const QColor& color );
265  void setColor2( const QColor& color );
266  void applyColorRamp();
267  void setGradientType( int index );
268  void setCoordinateMode( int index );
269  void setGradientSpread( int index );
270  void offsetChanged();
271  void referencePointChanged();
272  void on_mOffsetUnitWidget_changed();
273  void colorModeChanged();
274  void on_mSpinAngle_valueChanged( double value );
275 
276  protected:
278 };
279 
281 
282 #include "ui_widget_shapeburstfill.h"
283 
285 
286 class GUI_EXPORT QgsShapeburstFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetShapeburstFill
287 {
288  Q_OBJECT
289 
290  public:
291  QgsShapeburstFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
292 
294 
295  // from base class
296  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
297  virtual QgsSymbolLayerV2* symbolLayer() override;
298 
299  public slots:
300  void setColor( const QColor& color );
301  void setColor2( const QColor& color );
302  void colorModeChanged();
303  void on_mSpinBlurRadius_valueChanged( int value );
304  void on_mSpinMaxDistance_valueChanged( double value );
305  void on_mDistanceUnitWidget_changed();
306  void on_mRadioUseWholeShape_toggled( bool value );
307  void applyColorRamp();
308  void offsetChanged();
309  void on_mOffsetUnitWidget_changed();
310  void on_mIgnoreRingsCheckBox_stateChanged( int state );
311 
312  protected:
314 };
315 
317 
318 #include "ui_widget_markerline.h"
319 
321 
322 class GUI_EXPORT QgsMarkerLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetMarkerLine
323 {
324  Q_OBJECT
325 
326  public:
327  QgsMarkerLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
328 
330 
331  // from base class
332  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
333  virtual QgsSymbolLayerV2* symbolLayer() override;
334 
335  public slots:
336 
337  void setInterval( double val );
338  void setOffsetAlongLine( double val );
339  void setRotate();
340  void setOffset();
341  void setPlacement();
342  void on_mIntervalUnitWidget_changed();
343  void on_mOffsetUnitWidget_changed();
344  void on_mOffsetAlongLineUnitWidget_changed();
345 
346  protected:
347 
349 };
350 
351 
353 
354 #include "ui_widget_svgmarker.h"
355 
357 
358 class GUI_EXPORT QgsSvgMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSvgMarker
359 {
360  Q_OBJECT
361 
362  public:
363  QgsSvgMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
365 
367 
368  // from base class
369  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
370  virtual QgsSymbolLayerV2* symbolLayer() override;
371 
372  public slots:
373  void setName( const QModelIndex& idx );
374  void populateIcons( const QModelIndex& idx );
375  void setSize();
376  void setAngle();
377  void setOffset();
378  void on_mFileToolButton_clicked();
379  void on_mFileLineEdit_textEdited( const QString& text );
380  void on_mFileLineEdit_editingFinished();
381  void on_mChangeColorButton_colorChanged( const QColor& color );
382  void on_mChangeBorderColorButton_colorChanged( const QColor& color );
383  void on_mBorderWidthSpinBox_valueChanged( double d );
384  void on_mSizeUnitWidget_changed();
385  void on_mBorderWidthUnitWidget_changed();
386  void on_mOffsetUnitWidget_changed();
387  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
388  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
389 
390  protected:
391 
392  void populateList();
393  //update gui for svg file (insert new path, update activation of gui elements for svg params)
394  void setGuiForSvg( const QgsSvgMarkerSymbolLayerV2* layer );
395 
397 
398  private slots:
399 
400  void updateAssistantSymbol();
401 
402  private:
403 
404  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
405 
406 };
407 
409 
410 #include "ui_widget_rasterfill.h"
411 
413 
414 class GUI_EXPORT QgsRasterFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetRasterFill
415 {
416  Q_OBJECT
417 
418  public:
419  QgsRasterFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
420 
422 
423  // from base class
424  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
425  virtual QgsSymbolLayerV2* symbolLayer() override;
426 
427  protected:
429 
430  private slots:
431  void on_mBrowseToolButton_clicked();
432  void on_mImageLineEdit_editingFinished();
433  void setCoordinateMode( int index );
434  void on_mSpinTransparency_valueChanged( int value );
435  void offsetChanged();
436  void on_mOffsetUnitWidget_changed();
437  void on_mRotationSpinBox_valueChanged( double d );
438  void on_mWidthUnitWidget_changed();
439  void on_mWidthSpinBox_valueChanged( double d );
440 
441  private:
442  void updatePreviewImage();
443 };
444 
446 
447 #include "ui_widget_svgfill.h"
448 
450 
451 class GUI_EXPORT QgsSVGFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetSVGFill
452 {
453  Q_OBJECT
454 
455  public:
456  QgsSVGFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
457 
458  static QgsSymbolLayerV2Widget* create( const QgsVectorLayer* vl ) { return new QgsSVGFillSymbolLayerWidget( vl ); }
459 
460  // from base class
461  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
462  virtual QgsSymbolLayerV2* symbolLayer() override;
463 
464  protected:
466  void insertIcons();
472  void updateParamGui( bool resetValues = true );
473 
474  private slots:
475  void on_mBrowseToolButton_clicked();
476  void on_mTextureWidthSpinBox_valueChanged( double d );
477  void on_mSVGLineEdit_textEdited( const QString & text );
478  void on_mSVGLineEdit_editingFinished();
479  void setFile( const QModelIndex& item );
480  void populateIcons( const QModelIndex& item );
481  void on_mRotationSpinBox_valueChanged( double d );
482  void on_mChangeColorButton_colorChanged( const QColor& color );
483  void on_mChangeBorderColorButton_colorChanged( const QColor& color );
484  void on_mBorderWidthSpinBox_valueChanged( double d );
485  void on_mTextureWidthUnitWidget_changed();
486  void on_mSvgOutlineWidthUnitWidget_changed();
487 };
488 
490 
491 #include "ui_widget_linepatternfill.h"
492 
494 
495 class GUI_EXPORT QgsLinePatternFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetLinePatternFill
496 {
497  Q_OBJECT
498 
499  public:
500 
501  QgsLinePatternFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
503 
504  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
505  virtual QgsSymbolLayerV2* symbolLayer() override;
506 
507  protected:
509 
510  private slots:
511  void on_mAngleSpinBox_valueChanged( double d );
512  void on_mDistanceSpinBox_valueChanged( double d );
513  void on_mOffsetSpinBox_valueChanged( double d );
514  void on_mDistanceUnitWidget_changed();
515  void on_mOffsetUnitWidget_changed();
516 };
517 
519 
520 #include "ui_widget_pointpatternfill.h"
521 
523 
524 class GUI_EXPORT QgsPointPatternFillSymbolLayerWidget: public QgsSymbolLayerV2Widget, private Ui::WidgetPointPatternFill
525 {
526  Q_OBJECT
527 
528  public:
529  QgsPointPatternFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
531 
532  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
533  virtual QgsSymbolLayerV2* symbolLayer() override;
534 
535  protected:
537 
538  private slots:
539  void on_mHorizontalDistanceSpinBox_valueChanged( double d );
540  void on_mVerticalDistanceSpinBox_valueChanged( double d );
541  void on_mHorizontalDisplacementSpinBox_valueChanged( double d );
542  void on_mVerticalDisplacementSpinBox_valueChanged( double d );
543  void on_mHorizontalDistanceUnitWidget_changed();
544  void on_mVerticalDistanceUnitWidget_changed();
545  void on_mHorizontalDisplacementUnitWidget_changed();
546  void on_mVerticalDisplacementUnitWidget_changed();
547 };
548 
550 
551 #include "ui_widget_fontmarker.h"
552 
554 class CharacterWidget;
555 
556 class GUI_EXPORT QgsFontMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetFontMarker
557 {
558  Q_OBJECT
559 
560  public:
561  QgsFontMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
562 
564 
566 
567  // from base class
568  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
569  virtual QgsSymbolLayerV2* symbolLayer() override;
570 
571  public slots:
572  void setFontFamily( const QFont& font );
573  void setColor( const QColor& color );
574  void setSize( double size );
575  void setAngle( double angle );
576  void setCharacter( QChar chr );
577  void setOffset();
578  void on_mSizeUnitWidget_changed();
579  void on_mOffsetUnitWidget_changed();
580  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
581  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
582 
583  protected:
586 
587  private slots:
588 
589  void updateAssistantSymbol();
590 
591  private:
592 
593  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
594 
595 };
596 
598 
599 
600 #include "ui_widget_centroidfill.h"
601 
603 
604 class GUI_EXPORT QgsCentroidFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetCentroidFill
605 {
606  Q_OBJECT
607 
608  public:
609  QgsCentroidFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
610 
612 
613  // from base class
614  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
615  virtual QgsSymbolLayerV2* symbolLayer() override;
616 
617  protected:
619 
620  private slots:
621  void on_mDrawInsideCheckBox_stateChanged( int state );
622 
623 };
624 
625 
627 
628 class QgsSvgListModel : public QAbstractListModel
629 {
630  Q_OBJECT
631 
632  public:
633  explicit QgsSvgListModel( QObject* parent );
634 
635  // Constructor to create model for icons in a specific path
636  QgsSvgListModel( QObject* parent, const QString& path );
637 
638  int rowCount( const QModelIndex & parent = QModelIndex() ) const override;
639 
640  QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const override;
641 
642  protected:
643  QStringList mSvgFiles;
644 };
645 
646 class QgsSvgGroupsModel : public QStandardItemModel
647 {
648  Q_OBJECT
649 
650  public:
651  explicit QgsSvgGroupsModel( QObject* parent );
652 
653  private:
654  void createTree( QStandardItem* &parentGroup );
655 };
656 
658 
659 #include "ui_qgsgeometrygeneratorwidgetbase.h"
660 
662 
663 class GUI_EXPORT QgsGeometryGeneratorSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::GeometryGeneratorWidgetBase
664 {
665  Q_OBJECT
666 
667  public:
668  QgsGeometryGeneratorSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = nullptr );
669 
674 
675  // from base class
676  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
677  virtual QgsSymbolLayerV2* symbolLayer() override;
678 
679  private:
681 
682  private slots:
683  void updateExpression();
684  void updateSymbolType();
685 };
686 
687 #endif
virtual void setSymbolLayer(QgsSymbolLayerV2 *layer)=0
static unsigned index
QgsGradientFillSymbolLayerV2 * mLayer
QgsSimpleLineSymbolLayerV2 * mLayer
QgsLinePatternFillSymbolLayer * mLayer
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
QgsFontMarkerSymbolLayerV2 * mLayer
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:105
const QgsVectorLayer * mVectorLayer
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
A class for filling symbols with a repeated raster image.
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
QgsPointPatternFillSymbolLayer * mLayer
QgsRasterFillSymbolLayer * mLayer
QgsMarkerLineSymbolLayerV2 * mLayer
A button for defining data source field mappings or expressions.
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
void setName(const char *name)
double ANALYSIS_EXPORT angle(Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
QgsCentroidFillSymbolLayerV2 * mLayer
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
QgsSimpleMarkerSymbolLayerV2 * mLayer
QgsExpressionContext * expressionContext() const
Returns the expression context used for the widget, if set.
A class for svg fill patterns.
QgsExpressionContext * mPresetExpressionContext
Optional preset expression context.
QgsSvgMarkerSymbolLayerV2 * mLayer
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
QgsSymbolLayerV2Widget(QWidget *parent, const QgsVectorLayer *vl=nullptr)
virtual QgsSymbolLayerV2 * symbolLayer()=0
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
Will be registered as factory.
QgsShapeburstFillSymbolLayerV2 * mLayer
Represents a vector layer which manages a vector based data sets.
static QgsSymbolLayerV2Widget * create(const QgsVectorLayer *vl)
QgsSVGFillSymbolLayer * mLayer
QgsSimpleFillSymbolLayerV2 * mLayer
void setExpressionContext(QgsExpressionContext *context)
Sets the optional expression context used for the widget.