20#include <QColorDialog>
23#include "moc_qgsarrowsymbollayerwidget.cpp"
25using namespace Qt::StringLiterals;
32 connect( mArrowWidthSpin,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsArrowSymbolLayerWidget::mArrowWidthSpin_valueChanged );
34 connect( mArrowStartWidthSpin,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsArrowSymbolLayerWidget::mArrowStartWidthSpin_valueChanged );
36 connect( mHeadLengthSpin,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsArrowSymbolLayerWidget::mHeadLengthSpin_valueChanged );
38 connect( mHeadThicknessSpin,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsArrowSymbolLayerWidget::mHeadThicknessSpin_valueChanged );
40 connect( mHeadTypeCombo,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsArrowSymbolLayerWidget::mHeadTypeCombo_currentIndexChanged );
41 connect( mArrowTypeCombo,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsArrowSymbolLayerWidget::mArrowTypeCombo_currentIndexChanged );
42 connect( mOffsetSpin,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsArrowSymbolLayerWidget::mOffsetSpin_valueChanged );
44 connect( mCurvedArrowCheck, &QCheckBox::stateChanged,
this, &QgsArrowSymbolLayerWidget::mCurvedArrowChck_stateChanged );
45 connect( mRepeatArrowCheck, &QCheckBox::stateChanged,
this, &QgsArrowSymbolLayerWidget::mRepeatArrowChck_stateChanged );
46 this->layout()->setContentsMargins( 0, 0, 0, 0 );
54 mOffsetSpin->setClearValue( 0.0 );
59 if ( !layer || layer->
layerType() !=
"ArrowLine"_L1 )
66 mArrowWidthSpin->setValue( mLayer->arrowWidth() );
67 mArrowWidthUnitWidget->setUnit( mLayer->arrowWidthUnit() );
68 mArrowWidthUnitWidget->
setMapUnitScale( mLayer->arrowWidthUnitScale() );
70 mArrowStartWidthSpin->setValue( mLayer->arrowStartWidth() );
71 mArrowStartWidthUnitWidget->setUnit( mLayer->arrowStartWidthUnit() );
72 mArrowStartWidthUnitWidget->setMapUnitScale( mLayer->arrowStartWidthUnitScale() );
74 mHeadLengthSpin->setValue( mLayer->headLength() );
75 mHeadLengthUnitWidget->setUnit( mLayer->headLengthUnit() );
76 mHeadLengthUnitWidget->setMapUnitScale( mLayer->headLengthUnitScale() );
77 mHeadThicknessSpin->setValue( mLayer->headThickness() );
78 mHeadThicknessUnitWidget->setUnit( mLayer->headThicknessUnit() );
79 mHeadThicknessUnitWidget->setMapUnitScale( mLayer->headThicknessUnitScale() );
81 mHeadTypeCombo->setCurrentIndex( mLayer->headType() );
82 mArrowTypeCombo->setCurrentIndex( mLayer->arrowType() );
84 mOffsetSpin->setValue( mLayer->offset() );
85 mOffsetUnitWidget->setUnit( mLayer->offsetUnit() );
86 mOffsetUnitWidget->setMapUnitScale( mLayer->offsetMapUnitScale() );
88 mCurvedArrowCheck->setChecked( mLayer->isCurved() );
89 mRepeatArrowCheck->setChecked( mLayer->isRepeated() );
106void QgsArrowSymbolLayerWidget::mArrowWidthSpin_valueChanged(
double d )
115void QgsArrowSymbolLayerWidget::mArrowStartWidthSpin_valueChanged(
double d )
120 mLayer->setArrowStartWidth( d );
124void QgsArrowSymbolLayerWidget::mHeadLengthSpin_valueChanged(
double d )
129 mLayer->setHeadLength( d );
133void QgsArrowSymbolLayerWidget::mHeadThicknessSpin_valueChanged(
double d )
138 mLayer->setHeadThickness( d );
142void QgsArrowSymbolLayerWidget::mArrowWidthUnitWidget_changed()
147 mLayer->setArrowWidthUnit( mArrowWidthUnitWidget->unit() );
148 mLayer->setArrowWidthUnitScale( mArrowWidthUnitWidget->getMapUnitScale() );
152void QgsArrowSymbolLayerWidget::mArrowStartWidthUnitWidget_changed()
157 mLayer->setArrowStartWidthUnit( mArrowStartWidthUnitWidget->unit() );
158 mLayer->setArrowStartWidthUnitScale( mArrowStartWidthUnitWidget->getMapUnitScale() );
162void QgsArrowSymbolLayerWidget::mHeadLengthUnitWidget_changed()
167 mLayer->setHeadLengthUnit( mHeadLengthUnitWidget->unit() );
168 mLayer->setHeadLengthUnitScale( mHeadLengthUnitWidget->getMapUnitScale() );
172void QgsArrowSymbolLayerWidget::mHeadThicknessUnitWidget_changed()
177 mLayer->setHeadThicknessUnit( mHeadThicknessUnitWidget->unit() );
178 mLayer->setHeadThicknessUnitScale( mHeadThicknessUnitWidget->getMapUnitScale() );
182void QgsArrowSymbolLayerWidget::mHeadTypeCombo_currentIndexChanged(
int idx )
188 mLayer->setHeadType( t );
190 mArrowStartWidthDDBtn->setEnabled( isSingle );
191 mArrowStartWidthSpin->setEnabled( isSingle );
192 mArrowStartWidthUnitWidget->setEnabled( isSingle );
196void QgsArrowSymbolLayerWidget::mArrowTypeCombo_currentIndexChanged(
int idx )
202 mLayer->setArrowType( t );
206void QgsArrowSymbolLayerWidget::mOffsetSpin_valueChanged(
double d )
211 mLayer->setOffset( d );
215void QgsArrowSymbolLayerWidget::mOffsetUnitWidget_changed()
220 mLayer->setOffsetUnit( mOffsetUnitWidget->unit() );
221 mLayer->setOffsetMapUnitScale( mOffsetUnitWidget->getMapUnitScale() );
225void QgsArrowSymbolLayerWidget::mCurvedArrowChck_stateChanged(
int state )
230 mLayer->setIsCurved( state == Qt::Checked );
234void QgsArrowSymbolLayerWidget::mRepeatArrowChck_stateChanged(
int state )
239 mLayer->setIsRepeated( state == Qt::Checked );
@ Millimeters
Millimeters.
@ Points
Points (e.g., for font sizes).
Line symbol layer used for representing lines as arrows.
HeadType
Possible head types.
@ HeadSingle
One single head at the end.
@ HeadReversed
One single head at the beginning.
void setArrowWidth(double width)
Sets the arrow width.
ArrowType
Possible arrow types.
void setMapUnitScale(const QgsMapUnitScale &scale) override
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.
Represents a vector layer which manages a vector based dataset.