QGIS API Documentation  2.12.0-Lyon
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 
24 class QgsSymbolLayerV2;
25 class QgsVectorLayer;
26 class QgsMapCanvas;
27 
28 class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget
29 {
30  Q_OBJECT
31 
32  public:
33  QgsSymbolLayerV2Widget( QWidget* parent, const QgsVectorLayer* vl = 0 ) : QWidget( parent ), mVectorLayer( vl ), mPresetExpressionContext( 0 ), mMapCanvas( 0 ) {}
35 
36  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) = 0;
37  virtual QgsSymbolLayerV2* symbolLayer() = 0;
38 
45  QgsExpressionContext* expressionContext() const { return mPresetExpressionContext; }
46 
53  virtual void setMapCanvas( QgsMapCanvas* canvas );
54 
59  const QgsMapCanvas* mapCanvas() const;
60 
64  const QgsVectorLayer* vectorLayer() const { return mVectorLayer; }
65 
66  public slots:
67 
76  void setExpressionContext( QgsExpressionContext* context ) { mPresetExpressionContext = context; }
77 
78  protected:
80 
83 
85 
86  void registerDataDefinedButton( QgsDataDefinedButton * button, const QString & propertyName, QgsDataDefinedButton::DataType type, const QString & description );
87 
93  Q_DECL_DEPRECATED virtual QString dataDefinedPropertyLabel( const QString &entryName );
94 
95  signals:
96  void changed();
97 
98  protected slots:
99  void updateDataDefinedProperty();
100 };
101 
103 
104 #include "ui_widget_simpleline.h"
105 
107 
108 class GUI_EXPORT QgsSimpleLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleLine
109 {
110  Q_OBJECT
111 
112  public:
113  QgsSimpleLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
114 
116 
117  // from base class
118  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
119  virtual QgsSymbolLayerV2* symbolLayer() override;
120 
121  public slots:
122  void penWidthChanged();
123  void colorChanged( const QColor& color );
124  void penStyleChanged();
125  void offsetChanged();
126  void on_mCustomCheckBox_stateChanged( int state );
127  void on_mChangePatternButton_clicked();
128  void on_mPenWidthUnitWidget_changed();
129  void on_mOffsetUnitWidget_changed();
130  void on_mDashPatternUnitWidget_changed();
131  void on_mDrawInsideCheckBox_stateChanged( int state );
132 
133  protected:
135 
136  //creates a new icon for the 'change pattern' button
137  void updatePatternIcon();
138 
139 };
140 
142 
143 #include "ui_widget_simplemarker.h"
144 
146 
147 class GUI_EXPORT QgsSimpleMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleMarker
148 {
149  Q_OBJECT
150 
151  public:
152  QgsSimpleMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
154 
156 
157  // from base class
158  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
159  virtual QgsSymbolLayerV2* symbolLayer() override;
160 
161  public slots:
162  void setName();
163  void setColorBorder( const QColor& color );
164  void setColorFill( const QColor& color );
165  void setSize();
166  void setAngle();
167  void setOffset();
168  void on_mSizeUnitWidget_changed();
169  void on_mOffsetUnitWidget_changed();
170  void on_mOutlineWidthUnitWidget_changed();
171  void on_mOutlineStyleComboBox_currentIndexChanged( int index );
172  void on_mOutlineWidthSpinBox_valueChanged( double d );
173  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
174  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
175 
176  protected:
178 
179  private slots:
180 
181  void updateAssistantSymbol();
182 
183  private:
184 
185  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
186 };
187 
189 
190 #include "ui_widget_simplefill.h"
191 
193 
194 class GUI_EXPORT QgsSimpleFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSimpleFill
195 {
196  Q_OBJECT
197 
198  public:
199  QgsSimpleFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
200 
202 
203  // from base class
204  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
205  virtual QgsSymbolLayerV2* symbolLayer() override;
206 
207  public slots:
208  void setColor( const QColor& color );
209  void setBorderColor( const QColor& color );
210  void setBrushStyle();
211  void borderWidthChanged();
212  void borderStyleChanged();
213  void offsetChanged();
214  void on_mBorderWidthUnitWidget_changed();
215  void on_mOffsetUnitWidget_changed();
216 
217  protected:
219 };
220 
221 
223 
224 #include "ui_widget_gradientfill.h"
225 
227 
228 class GUI_EXPORT QgsGradientFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetGradientFill
229 {
230  Q_OBJECT
231 
232  public:
233  QgsGradientFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
234 
236 
237  // from base class
238  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
239  virtual QgsSymbolLayerV2* symbolLayer() override;
240 
241  public slots:
242  void setColor( const QColor& color );
243  void setColor2( const QColor& color );
244  void applyColorRamp();
245  void setGradientType( int index );
246  void setCoordinateMode( int index );
247  void setGradientSpread( int index );
248  void offsetChanged();
249  void referencePointChanged();
250  void on_mOffsetUnitWidget_changed();
251  void colorModeChanged();
252  void on_mSpinAngle_valueChanged( double value );
253 
254  protected:
256 };
257 
259 
260 #include "ui_widget_shapeburstfill.h"
261 
263 
264 class GUI_EXPORT QgsShapeburstFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetShapeburstFill
265 {
266  Q_OBJECT
267 
268  public:
269  QgsShapeburstFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
270 
272 
273  // from base class
274  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
275  virtual QgsSymbolLayerV2* symbolLayer() override;
276 
277  public slots:
278  void setColor( const QColor& color );
279  void setColor2( const QColor& color );
280  void colorModeChanged();
281  void on_mSpinBlurRadius_valueChanged( int value );
282  void on_mSpinMaxDistance_valueChanged( double value );
283  void on_mDistanceUnitWidget_changed();
284  void on_mRadioUseWholeShape_toggled( bool value );
285  void applyColorRamp();
286  void offsetChanged();
287  void on_mOffsetUnitWidget_changed();
288  void on_mIgnoreRingsCheckBox_stateChanged( int state );
289 
290  protected:
292 };
293 
295 
296 #include "ui_widget_markerline.h"
297 
299 
300 class GUI_EXPORT QgsMarkerLineSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetMarkerLine
301 {
302  Q_OBJECT
303 
304  public:
305  QgsMarkerLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
306 
308 
309  // from base class
310  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
311  virtual QgsSymbolLayerV2* symbolLayer() override;
312 
313  public slots:
314 
315  void setInterval( double val );
316  void setOffsetAlongLine( double val );
317  void setRotate();
318  void setOffset();
319  void setPlacement();
320  void on_mIntervalUnitWidget_changed();
321  void on_mOffsetUnitWidget_changed();
322  void on_mOffsetAlongLineUnitWidget_changed();
323 
324  protected:
325 
327 };
328 
329 
331 
332 #include "ui_widget_svgmarker.h"
333 
335 
336 class GUI_EXPORT QgsSvgMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetSvgMarker
337 {
338  Q_OBJECT
339 
340  public:
341  QgsSvgMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
343 
345 
346  // from base class
347  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
348  virtual QgsSymbolLayerV2* symbolLayer() override;
349 
350  public slots:
351  void setName( const QModelIndex& idx );
352  void populateIcons( const QModelIndex& idx );
353  void setSize();
354  void setAngle();
355  void setOffset();
356  void on_mFileToolButton_clicked();
357  void on_mFileLineEdit_textEdited( const QString& text );
358  void on_mFileLineEdit_editingFinished();
359  void on_mChangeColorButton_colorChanged( const QColor& color );
360  void on_mChangeBorderColorButton_colorChanged( const QColor& color );
361  void on_mBorderWidthSpinBox_valueChanged( double d );
362  void on_mSizeUnitWidget_changed();
363  void on_mBorderWidthUnitWidget_changed();
364  void on_mOffsetUnitWidget_changed();
365  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
366  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
367 
368 
369  protected:
370 
371  void populateList();
372  //update gui for svg file (insert new path, update activation of gui elements for svg params)
373  void setGuiForSvg( const QgsSvgMarkerSymbolLayerV2* layer );
374 
376 
377  private slots:
378 
379  void updateAssistantSymbol();
380 
381  private:
382 
383  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
384 
385 };
386 
388 
389 #include "ui_widget_rasterfill.h"
390 
392 
393 class GUI_EXPORT QgsRasterFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetRasterFill
394 {
395  Q_OBJECT
396 
397  public:
398  QgsRasterFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = NULL );
399 
401 
402  // from base class
403  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
404  virtual QgsSymbolLayerV2* symbolLayer() override;
405 
406  protected:
408 
409  private slots:
410  void on_mBrowseToolButton_clicked();
411  void on_mImageLineEdit_editingFinished();
412  void setCoordinateMode( int index );
413  void on_mSpinTransparency_valueChanged( int value );
414  void offsetChanged();
415  void on_mOffsetUnitWidget_changed();
416  void on_mRotationSpinBox_valueChanged( double d );
417  void on_mWidthUnitWidget_changed();
418  void on_mWidthSpinBox_valueChanged( double d );
419 
420  private:
421  void updatePreviewImage();
422 };
423 
425 
426 #include "ui_widget_svgfill.h"
427 
429 
430 class GUI_EXPORT QgsSVGFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetSVGFill
431 {
432  Q_OBJECT
433 
434  public:
435  QgsSVGFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = NULL );
436 
437  static QgsSymbolLayerV2Widget* create( const QgsVectorLayer* vl ) { return new QgsSVGFillSymbolLayerWidget( vl ); }
438 
439  // from base class
440  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
441  virtual QgsSymbolLayerV2* symbolLayer() override;
442 
443  protected:
445  void insertIcons();
451  void updateParamGui( bool resetValues = true );
452 
453  private slots:
454  void on_mBrowseToolButton_clicked();
455  void on_mTextureWidthSpinBox_valueChanged( double d );
456  void on_mSVGLineEdit_textEdited( const QString & text );
457  void on_mSVGLineEdit_editingFinished();
458  void setFile( const QModelIndex& item );
459  void populateIcons( const QModelIndex& item );
460  void on_mRotationSpinBox_valueChanged( double d );
461  void on_mChangeColorButton_colorChanged( const QColor& color );
462  void on_mChangeBorderColorButton_colorChanged( const QColor& color );
463  void on_mBorderWidthSpinBox_valueChanged( double d );
464  void on_mTextureWidthUnitWidget_changed();
465  void on_mSvgOutlineWidthUnitWidget_changed();
466 };
467 
469 
470 #include "ui_widget_linepatternfill.h"
471 
473 
474 class GUI_EXPORT QgsLinePatternFillSymbolLayerWidget : public QgsSymbolLayerV2Widget, private Ui::WidgetLinePatternFill
475 {
476  Q_OBJECT
477 
478  public:
479 
480  QgsLinePatternFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = NULL );
482 
483  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
484  virtual QgsSymbolLayerV2* symbolLayer() override;
485 
486  protected:
488 
489  private slots:
490  void on_mAngleSpinBox_valueChanged( double d );
491  void on_mDistanceSpinBox_valueChanged( double d );
492  void on_mOffsetSpinBox_valueChanged( double d );
493  void on_mDistanceUnitWidget_changed();
494  void on_mOffsetUnitWidget_changed();
495 };
496 
498 
499 #include "ui_widget_pointpatternfill.h"
500 
502 
503 class GUI_EXPORT QgsPointPatternFillSymbolLayerWidget: public QgsSymbolLayerV2Widget, private Ui::WidgetPointPatternFill
504 {
505  Q_OBJECT
506 
507  public:
508  QgsPointPatternFillSymbolLayerWidget( const QgsVectorLayer* vl, QWidget* parent = NULL );
510 
511  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
512  virtual QgsSymbolLayerV2* symbolLayer() override;
513 
514  protected:
516 
517  private slots:
518  void on_mHorizontalDistanceSpinBox_valueChanged( double d );
519  void on_mVerticalDistanceSpinBox_valueChanged( double d );
520  void on_mHorizontalDisplacementSpinBox_valueChanged( double d );
521  void on_mVerticalDisplacementSpinBox_valueChanged( double d );
522  void on_mHorizontalDistanceUnitWidget_changed();
523  void on_mVerticalDistanceUnitWidget_changed();
524  void on_mHorizontalDisplacementUnitWidget_changed();
525  void on_mVerticalDisplacementUnitWidget_changed();
526 };
527 
529 
530 #include "ui_widget_fontmarker.h"
531 
533 class CharacterWidget;
534 
535 class GUI_EXPORT QgsFontMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetFontMarker
536 {
537  Q_OBJECT
538 
539  public:
540  QgsFontMarkerSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
541 
543 
545 
546  // from base class
547  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
548  virtual QgsSymbolLayerV2* symbolLayer() override;
549 
550  public slots:
551  void setFontFamily( const QFont& font );
552  void setColor( const QColor& color );
553  void setSize( double size );
554  void setAngle( double angle );
555  void setCharacter( const QChar& chr );
556  void setOffset();
557  void on_mSizeUnitWidget_changed();
558  void on_mOffsetUnitWidget_changed();
559  void on_mHorizontalAnchorComboBox_currentIndexChanged( int index );
560  void on_mVerticalAnchorComboBox_currentIndexChanged( int index );
561 
562  protected:
565 
566  private slots:
567 
568  void updateAssistantSymbol();
569 
570  private:
571 
572  QgsMarkerSymbolV2* mAssistantPreviewSymbol;
573 
574 };
575 
577 
578 
579 #include "ui_widget_centroidfill.h"
580 
582 
583 class GUI_EXPORT QgsCentroidFillSymbolLayerV2Widget : public QgsSymbolLayerV2Widget, private Ui::WidgetCentroidFill
584 {
585  Q_OBJECT
586 
587  public:
588  QgsCentroidFillSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent = NULL );
589 
591 
592  // from base class
593  virtual void setSymbolLayer( QgsSymbolLayerV2* layer ) override;
594  virtual QgsSymbolLayerV2* symbolLayer() override;
595 
596  public slots:
597  void on_mDrawInsideCheckBox_stateChanged( int state );
598 
599  protected:
601 };
602 
603 
604 #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:107
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
QgsSymbolLayerV2Widget(QWidget *parent, const QgsVectorLayer *vl=0)
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)
virtual QgsSymbolLayerV2 * symbolLayer()=0
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.