QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsarrowsymbollayerwidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsarrowsymbollayerwidget.cpp
3 ---------------------
4 begin : February 2016
5 copyright : (C) 2016 by Hugo Mercier / Oslandia
6 email : hugo dot mercier at oslandia 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 ***************************************************************************/
16
17#include "qgsarrowsymbollayer.h"
18#include "qgsvectorlayer.h"
19
20#include <QColorDialog>
21
22#include "moc_qgsarrowsymbollayerwidget.cpp"
23
25 : QgsSymbolLayerWidget( parent, vl )
26
27{
28 setupUi( this );
29 connect( mArrowWidthSpin, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsArrowSymbolLayerWidget::mArrowWidthSpin_valueChanged );
30 connect( mArrowWidthUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsArrowSymbolLayerWidget::mArrowWidthUnitWidget_changed );
31 connect( mArrowStartWidthSpin, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsArrowSymbolLayerWidget::mArrowStartWidthSpin_valueChanged );
32 connect( mArrowStartWidthUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsArrowSymbolLayerWidget::mArrowStartWidthUnitWidget_changed );
33 connect( mHeadLengthSpin, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsArrowSymbolLayerWidget::mHeadLengthSpin_valueChanged );
34 connect( mHeadLengthUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsArrowSymbolLayerWidget::mHeadLengthUnitWidget_changed );
35 connect( mHeadThicknessSpin, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsArrowSymbolLayerWidget::mHeadThicknessSpin_valueChanged );
36 connect( mHeadThicknessUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsArrowSymbolLayerWidget::mHeadThicknessUnitWidget_changed );
37 connect( mHeadTypeCombo, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsArrowSymbolLayerWidget::mHeadTypeCombo_currentIndexChanged );
38 connect( mArrowTypeCombo, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsArrowSymbolLayerWidget::mArrowTypeCombo_currentIndexChanged );
39 connect( mOffsetSpin, static_cast<void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ), this, &QgsArrowSymbolLayerWidget::mOffsetSpin_valueChanged );
40 connect( mOffsetUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsArrowSymbolLayerWidget::mOffsetUnitWidget_changed );
41 connect( mCurvedArrowCheck, &QCheckBox::stateChanged, this, &QgsArrowSymbolLayerWidget::mCurvedArrowChck_stateChanged );
42 connect( mRepeatArrowCheck, &QCheckBox::stateChanged, this, &QgsArrowSymbolLayerWidget::mRepeatArrowChck_stateChanged );
43 this->layout()->setContentsMargins( 0, 0, 0, 0 );
44
50
51 mOffsetSpin->setClearValue( 0.0 );
52}
53
55{
56 if ( !layer || layer->layerType() != QLatin1String( "ArrowLine" ) )
57 {
58 return;
59 }
60
61 mLayer = static_cast<QgsArrowSymbolLayer *>( layer );
62
63 mArrowWidthSpin->setValue( mLayer->arrowWidth() );
64 mArrowWidthUnitWidget->setUnit( mLayer->arrowWidthUnit() );
65 mArrowWidthUnitWidget->setMapUnitScale( mLayer->arrowWidthUnitScale() );
66
67 mArrowStartWidthSpin->setValue( mLayer->arrowStartWidth() );
68 mArrowStartWidthUnitWidget->setUnit( mLayer->arrowStartWidthUnit() );
69 mArrowStartWidthUnitWidget->setMapUnitScale( mLayer->arrowStartWidthUnitScale() );
70
71 mHeadLengthSpin->setValue( mLayer->headLength() );
72 mHeadLengthUnitWidget->setUnit( mLayer->headLengthUnit() );
73 mHeadLengthUnitWidget->setMapUnitScale( mLayer->headLengthUnitScale() );
74 mHeadThicknessSpin->setValue( mLayer->headThickness() );
75 mHeadThicknessUnitWidget->setUnit( mLayer->headThicknessUnit() );
76 mHeadThicknessUnitWidget->setMapUnitScale( mLayer->headThicknessUnitScale() );
77
78 mHeadTypeCombo->setCurrentIndex( mLayer->headType() );
79 mArrowTypeCombo->setCurrentIndex( mLayer->arrowType() );
80
81 mOffsetSpin->setValue( mLayer->offset() );
82 mOffsetUnitWidget->setUnit( mLayer->offsetUnit() );
83 mOffsetUnitWidget->setMapUnitScale( mLayer->offsetMapUnitScale() );
84
85 mCurvedArrowCheck->setChecked( mLayer->isCurved() );
86 mRepeatArrowCheck->setChecked( mLayer->isRepeated() );
87
95}
96
97
102
103void QgsArrowSymbolLayerWidget::mArrowWidthSpin_valueChanged( double d )
104{
105 if ( !mLayer )
106 return;
107
108 mLayer->setArrowWidth( d );
109 emit changed();
110}
111
112void QgsArrowSymbolLayerWidget::mArrowStartWidthSpin_valueChanged( double d )
113{
114 if ( !mLayer )
115 return;
116
117 mLayer->setArrowStartWidth( d );
118 emit changed();
119}
120
121void QgsArrowSymbolLayerWidget::mHeadLengthSpin_valueChanged( double d )
122{
123 if ( !mLayer )
124 return;
125
126 mLayer->setHeadLength( d );
127 emit changed();
128}
129
130void QgsArrowSymbolLayerWidget::mHeadThicknessSpin_valueChanged( double d )
131{
132 if ( !mLayer )
133 return;
134
135 mLayer->setHeadThickness( d );
136 emit changed();
137}
138
139void QgsArrowSymbolLayerWidget::mArrowWidthUnitWidget_changed()
140{
141 if ( !mLayer )
142 return;
143
144 mLayer->setArrowWidthUnit( mArrowWidthUnitWidget->unit() );
145 mLayer->setArrowWidthUnitScale( mArrowWidthUnitWidget->getMapUnitScale() );
146 emit changed();
147}
148
149void QgsArrowSymbolLayerWidget::mArrowStartWidthUnitWidget_changed()
150{
151 if ( !mLayer )
152 return;
153
154 mLayer->setArrowStartWidthUnit( mArrowStartWidthUnitWidget->unit() );
155 mLayer->setArrowStartWidthUnitScale( mArrowStartWidthUnitWidget->getMapUnitScale() );
156 emit changed();
157}
158
159void QgsArrowSymbolLayerWidget::mHeadLengthUnitWidget_changed()
160{
161 if ( !mLayer )
162 return;
163
164 mLayer->setHeadLengthUnit( mHeadLengthUnitWidget->unit() );
165 mLayer->setHeadLengthUnitScale( mHeadLengthUnitWidget->getMapUnitScale() );
166 emit changed();
167}
168
169void QgsArrowSymbolLayerWidget::mHeadThicknessUnitWidget_changed()
170{
171 if ( !mLayer )
172 return;
173
174 mLayer->setHeadThicknessUnit( mHeadThicknessUnitWidget->unit() );
175 mLayer->setHeadThicknessUnitScale( mHeadThicknessUnitWidget->getMapUnitScale() );
176 emit changed();
177}
178
179void QgsArrowSymbolLayerWidget::mHeadTypeCombo_currentIndexChanged( int idx )
180{
181 if ( !mLayer )
182 return;
183
185 mLayer->setHeadType( t );
187 mArrowStartWidthDDBtn->setEnabled( isSingle );
188 mArrowStartWidthSpin->setEnabled( isSingle );
189 mArrowStartWidthUnitWidget->setEnabled( isSingle );
190 emit changed();
191}
192
193void QgsArrowSymbolLayerWidget::mArrowTypeCombo_currentIndexChanged( int idx )
194{
195 if ( !mLayer )
196 return;
197
199 mLayer->setArrowType( t );
200 emit changed();
201}
202
203void QgsArrowSymbolLayerWidget::mOffsetSpin_valueChanged( double d )
204{
205 if ( !mLayer )
206 return;
207
208 mLayer->setOffset( d );
209 emit changed();
210}
211
212void QgsArrowSymbolLayerWidget::mOffsetUnitWidget_changed()
213{
214 if ( !mLayer )
215 return;
216
217 mLayer->setOffsetUnit( mOffsetUnitWidget->unit() );
218 mLayer->setOffsetMapUnitScale( mOffsetUnitWidget->getMapUnitScale() );
219 emit changed();
220}
221
222void QgsArrowSymbolLayerWidget::mCurvedArrowChck_stateChanged( int state )
223{
224 if ( !mLayer )
225 return;
226
227 mLayer->setIsCurved( state == Qt::Checked );
228 emit changed();
229}
230
231void QgsArrowSymbolLayerWidget::mRepeatArrowChck_stateChanged( int state )
232{
233 if ( !mLayer )
234 return;
235
236 mLayer->setIsRepeated( state == Qt::Checked );
237 emit changed();
238}
@ Millimeters
Millimeters.
Definition qgis.h:5184
@ Points
Points (e.g., for font sizes).
Definition qgis.h:5188
@ MapUnits
Map units.
Definition qgis.h:5185
@ Pixels
Pixels.
Definition qgis.h:5186
@ Inches
Inches.
Definition qgis.h:5189
QgsArrowSymbolLayerWidget(QgsVectorLayer *layer, QWidget *parent=nullptr)
Constructor.
QgsSymbolLayer * symbolLayer() override
void setSymbolLayer(QgsSymbolLayer *layer) override
Line symbol layer used for representing lines as arrows.
HeadType
Possible head types.
void setArrowWidth(double width)
Sets the arrow width.
ArrowType
Possible arrow types.
void setMapUnitScale(const QgsMapUnitScale &scale) override
void registerDataDefinedButton(QgsPropertyOverrideButton *button, QgsSymbolLayer::Property key)
Registers a data defined override button.
QgsSymbolLayerWidget(QWidget *parent, QgsVectorLayer *vl=nullptr)
Constructor for QgsSymbolLayerWidget.
void changed()
Should be emitted whenever configuration changes happened on this symbol layer configuration.
Abstract base class for symbol layers.
@ ArrowHeadLength
Arrow head length.
@ ArrowWidth
Arrow tail width.
@ ArrowHeadType
Arrow head type.
@ ArrowHeadThickness
Arrow head thickness.
@ ArrowStartWidth
Arrow tail start width.
virtual QString layerType() const =0
Returns a string that represents this layer type.
void changed()
Emitted when the selected unit is changed, or the definition of the map unit scale is changed.
Represents a vector layer which manages a vector based dataset.