18 #include <QColorDialog> 25 connect( mShapeListWidget, &QListWidget::itemSelectionChanged,
this, &QgsEllipseSymbolLayerWidget::mShapeListWidget_itemSelectionChanged );
26 connect( mWidthSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mWidthSpinBox_valueChanged );
27 connect( mHeightSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mHeightSpinBox_valueChanged );
28 connect( mRotationSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mRotationSpinBox_valueChanged );
29 connect( mStrokeStyleComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mStrokeStyleComboBox_currentIndexChanged );
30 connect( mStrokeWidthSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mStrokeWidthSpinBox_valueChanged );
37 connect( mHorizontalAnchorComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mHorizontalAnchorComboBox_currentIndexChanged );
38 connect( mVerticalAnchorComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mVerticalAnchorComboBox_currentIndexChanged );
49 btnChangeColorFill->setAllowOpacity(
true );
50 btnChangeColorFill->setColorDialogTitle( tr(
"Select Fill Color" ) );
51 btnChangeColorFill->setContext( QStringLiteral(
"symbology" ) );
52 btnChangeColorFill->setShowNoColor(
true );
53 btnChangeColorFill->setNoColorString( tr(
"Transparent Fill" ) );
54 btnChangeColorStroke->setAllowOpacity(
true );
55 btnChangeColorStroke->setColorDialogTitle( tr(
"Select Stroke Color" ) );
56 btnChangeColorStroke->setContext( QStringLiteral(
"symbology" ) );
57 btnChangeColorStroke->setShowNoColor(
true );
58 btnChangeColorStroke->setNoColorString( tr(
"Transparent Stroke" ) );
60 mFillColorDDBtn->registerLinkedWidget( btnChangeColorFill );
61 mStrokeColorDDBtn->registerLinkedWidget( btnChangeColorStroke );
63 spinOffsetX->setClearValue( 0.0 );
64 spinOffsetY->setClearValue( 0.0 );
65 mRotationSpinBox->setClearValue( 0.0 );
68 names << QStringLiteral(
"circle" ) << QStringLiteral(
"rectangle" ) << QStringLiteral(
"diamond" ) << QStringLiteral(
"cross" ) << QStringLiteral(
"triangle" ) << QStringLiteral(
"right_half_triangle" ) << QStringLiteral(
"left_half_triangle" ) << QStringLiteral(
"semi_circle" );
70 int size = mShapeListWidget->iconSize().width();
71 size = std::max( 30, static_cast< int >( std::round(
Qgis::UI_SCALE_FACTOR * fontMetrics().width( QStringLiteral(
"XXX" ) ) ) ) );
72 mShapeListWidget->setGridSize( QSize( size * 1.2, size * 1.2 ) );
73 mShapeListWidget->setIconSize( QSize( size, size ) );
75 double markerSize = size * 0.8;
76 const auto constNames = names;
77 for (
const QString &name : constNames )
88 QListWidgetItem *item =
new QListWidgetItem( icon, QString(), mShapeListWidget );
89 item->setToolTip( name );
90 item->setData( Qt::UserRole, name );
94 mShapeListWidget->setMinimumHeight( mShapeListWidget->gridSize().height() * 2.1 );
96 connect( spinOffsetX, static_cast <
void (
QgsDoubleSpinBox::* )(
double ) > ( &QgsDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::setOffset );
97 connect( spinOffsetY, static_cast <
void (
QgsDoubleSpinBox::* )(
double ) > ( &QgsDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::setOffset );
98 connect( cboJoinStyle,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::penJoinStyleChanged );
103 if ( !layer || layer->
layerType() != QLatin1String(
"EllipseMarker" ) )
117 QList<QListWidgetItem *> symbolItemList = mShapeListWidget->findItems(
mLayer->
symbolName(), Qt::MatchExactly );
118 if ( !symbolItemList.isEmpty() )
120 mShapeListWidget->setCurrentItem( symbolItemList.at( 0 ) );
124 blockComboSignals(
true );
134 spinOffsetX->setValue( offsetPt.x() );
135 spinOffsetY->setValue( offsetPt.y() );
139 blockComboSignals(
false );
161 void QgsEllipseSymbolLayerWidget::mShapeListWidget_itemSelectionChanged()
165 QListWidgetItem *item = mShapeListWidget->currentItem();
174 void QgsEllipseSymbolLayerWidget::mWidthSpinBox_valueChanged(
double d )
183 void QgsEllipseSymbolLayerWidget::mHeightSpinBox_valueChanged(
double d )
192 void QgsEllipseSymbolLayerWidget::mRotationSpinBox_valueChanged(
double d )
201 void QgsEllipseSymbolLayerWidget::mStrokeStyleComboBox_currentIndexChanged(
int index )
212 void QgsEllipseSymbolLayerWidget::mStrokeWidthSpinBox_valueChanged(
double d )
221 void QgsEllipseSymbolLayerWidget::btnChangeColorStroke_colorChanged(
const QColor &newColor )
232 void QgsEllipseSymbolLayerWidget::btnChangeColorFill_colorChanged(
const QColor &newColor )
243 void QgsEllipseSymbolLayerWidget::mSymbolWidthUnitWidget_changed()
253 void QgsEllipseSymbolLayerWidget::mStrokeWidthUnitWidget_changed()
263 void QgsEllipseSymbolLayerWidget::mSymbolHeightUnitWidget_changed()
273 void QgsEllipseSymbolLayerWidget::mOffsetUnitWidget_changed()
283 void QgsEllipseSymbolLayerWidget::penJoinStyleChanged()
289 void QgsEllipseSymbolLayerWidget::blockComboSignals(
bool block )
291 mSymbolWidthUnitWidget->blockSignals( block );
292 mStrokeWidthUnitWidget->blockSignals( block );
293 mSymbolHeightUnitWidget->blockSignals( block );
294 mHorizontalAnchorComboBox->blockSignals( block );
295 mVerticalAnchorComboBox->blockSignals( block );
296 mSymbolWidthUnitWidget->blockSignals( block );
297 mStrokeWidthUnitWidget->blockSignals( block );
298 mSymbolHeightUnitWidget->blockSignals( block );
299 mOffsetUnitWidget->blockSignals( block );
300 cboJoinStyle->blockSignals( block );
303 void QgsEllipseSymbolLayerWidget::mHorizontalAnchorComboBox_currentIndexChanged(
int index )
312 void QgsEllipseSymbolLayerWidget::mVerticalAnchorComboBox_currentIndexChanged(
int index )
321 void QgsEllipseSymbolLayerWidget::setOffset()
323 mLayer->
setOffset( QPointF( spinOffsetX->value(), spinOffsetY->value() ) );
void setOffset(QPointF offset)
Sets the marker's offset, which is the horizontal and vertical displacement which the rendered marker...
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value...
Meters value as Map units.
static QIcon symbolLayerPreviewIcon(const QgsSymbolLayer *layer, QgsUnitTypes::RenderUnit u, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale())
Draws a symbol layer preview to an icon.
void setOffsetUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's offset.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
const QgsMapUnitScale & strokeWidthMapUnitScale() const
static const double UI_SCALE_FACTOR
UI scaling factor.
void setFillColor(const QColor &c) override
Set fill color.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's offset.
VerticalAnchorPoint verticalAnchorPoint() const
Returns the vertical anchor point for positioning the symbol.
void setPenJoinStyle(Qt::PenJoinStyle style)
Set stroke join style.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units for the symbol's offset.
void setSymbolWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's width.
QColor strokeColor() const override
Gets stroke color.
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
Name, eg shape name for simple markers.
void setStrokeWidth(double w)
const QgsMapUnitScale & symbolHeightMapUnitScale() const
virtual void setColor(const QColor &color)
The fill color.
QgsUnitTypes::RenderUnit symbolHeightUnit() const
Returns the units for the symbol's height.
HorizontalAnchorPoint horizontalAnchorPoint() const
Returns the horizontal anchor point for positioning the symbol.
Qt::PenJoinStyle penJoinStyle() const
Gets stroke join style.
Qt::PenStyle strokeStyle() const
double angle() const
Returns the rotation angle for the marker, in degrees clockwise from north.
A symbol layer for rendering objects with major and minor axis (e.g.
void setSymbolName(const QString &name)
void setHorizontalAnchorPoint(HorizontalAnchorPoint h)
Sets the horizontal anchor point for positioning the symbol.
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's stroke width.
void setSymbolHeightMapUnitScale(const QgsMapUnitScale &scale)
double symbolWidth() const
HorizontalAnchorPoint
Symbol horizontal anchor points.
VerticalAnchorPoint
Symbol vertical anchor points.
void setSymbolHeightUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's height.
Stroke style (eg solid, dashed)
void setStrokeStyle(Qt::PenStyle strokeStyle)
void setStrokeColor(const QColor &c) override
Set stroke color.
Points (e.g., for font sizes)
double symbolHeight() const
double strokeWidth() const
void setSymbolHeight(double h)
const QgsMapUnitScale & symbolWidthMapUnitScale() const
QString symbolName() const
void setAngle(double angle)
Sets the rotation angle for the marker.
QColor fillColor() const override
Gets fill color.
void setSymbolWidth(double w)
QPointF offset() const
Returns the marker's offset, which is the horizontal and vertical displacement which the rendered mar...
Represents a vector layer which manages a vector based data sets.
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale for the symbol's offset.
void setSymbolWidthMapUnitScale(const QgsMapUnitScale &scale)
QgsUnitTypes::RenderUnit symbolWidthUnit() const
Returns the units for the symbol's width.
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the units for the symbol's stroke width.
void setVerticalAnchorPoint(VerticalAnchorPoint v)
Sets the vertical anchor point for positioning the symbol.
virtual QString layerType() const =0
Returns a string that represents this layer type.