16#include "moc_qgsellipsesymbollayerwidget.cpp"
20#include <QColorDialog>
27 connect( mShapeListWidget, &QListWidget::itemSelectionChanged,
this, &QgsEllipseSymbolLayerWidget::mShapeListWidget_itemSelectionChanged );
28 connect( mWidthSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mWidthSpinBox_valueChanged );
29 connect( mHeightSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mHeightSpinBox_valueChanged );
30 connect( mRotationSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mRotationSpinBox_valueChanged );
31 connect( mStrokeStyleComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mStrokeStyleComboBox_currentIndexChanged );
32 connect( mStrokeWidthSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::mStrokeWidthSpinBox_valueChanged );
39 connect( mHorizontalAnchorComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mHorizontalAnchorComboBox_currentIndexChanged );
40 connect( mVerticalAnchorComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::mVerticalAnchorComboBox_currentIndexChanged );
51 btnChangeColorFill->setAllowOpacity(
true );
52 btnChangeColorFill->setColorDialogTitle( tr(
"Select Fill Color" ) );
53 btnChangeColorFill->setContext( QStringLiteral(
"symbology" ) );
54 btnChangeColorFill->setShowNoColor(
true );
55 btnChangeColorFill->setNoColorString( tr(
"Transparent Fill" ) );
56 btnChangeColorStroke->setAllowOpacity(
true );
57 btnChangeColorStroke->setColorDialogTitle( tr(
"Select Stroke Color" ) );
58 btnChangeColorStroke->setContext( QStringLiteral(
"symbology" ) );
59 btnChangeColorStroke->setShowNoColor(
true );
60 btnChangeColorStroke->setNoColorString( tr(
"Transparent Stroke" ) );
62 mFillColorDDBtn->registerLinkedWidget( btnChangeColorFill );
63 mStrokeColorDDBtn->registerLinkedWidget( btnChangeColorStroke );
65 spinOffsetX->setClearValue( 0.0 );
66 spinOffsetY->setClearValue( 0.0 );
67 mRotationSpinBox->setClearValue( 0.0 );
69 int size = mShapeListWidget->iconSize().width();
70 size = std::max( 30,
static_cast< int >( std::round(
Qgis::UI_SCALE_FACTOR * fontMetrics().horizontalAdvance(
'X' ) * 3 ) ) );
71 mShapeListWidget->setGridSize( QSize( size * 1.2, size * 1.2 ) );
72 mShapeListWidget->setIconSize( QSize( size, size ) );
74 const double markerSize = size * 0.8;
87 QListWidgetItem *item =
new QListWidgetItem( icon, QString(), mShapeListWidget );
88 item->setData( Qt::UserRole,
static_cast< int >( shape ) );
93 mShapeListWidget->setMinimumHeight( mShapeListWidget->gridSize().height() * 2.1 );
95 connect( spinOffsetX,
static_cast < void (
QgsDoubleSpinBox::* )(
double )
> ( &QgsDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::setOffset );
96 connect( spinOffsetY,
static_cast < void (
QgsDoubleSpinBox::* )(
double )
> ( &QgsDoubleSpinBox::valueChanged ),
this, &QgsEllipseSymbolLayerWidget::setOffset );
97 connect( cboJoinStyle,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::penJoinStyleChanged );
98 connect( cboCapStyle,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsEllipseSymbolLayerWidget::penCapStyleChanged );
103 if ( !layer || layer->
layerType() != QLatin1String(
"EllipseMarker" ) )
118 for (
int i = 0; i < mShapeListWidget->count(); ++i )
122 mShapeListWidget->setCurrentRow( i );
129 blockComboSignals(
true );
139 spinOffsetX->setValue( offsetPt.x() );
140 spinOffsetY->setValue( offsetPt.y() );
145 blockComboSignals(
false );
168void QgsEllipseSymbolLayerWidget::mShapeListWidget_itemSelectionChanged()
178void QgsEllipseSymbolLayerWidget::mWidthSpinBox_valueChanged(
double d )
187void QgsEllipseSymbolLayerWidget::mHeightSpinBox_valueChanged(
double d )
196void QgsEllipseSymbolLayerWidget::mRotationSpinBox_valueChanged(
double d )
205void QgsEllipseSymbolLayerWidget::mStrokeStyleComboBox_currentIndexChanged(
int index )
216void QgsEllipseSymbolLayerWidget::mStrokeWidthSpinBox_valueChanged(
double d )
225void QgsEllipseSymbolLayerWidget::btnChangeColorStroke_colorChanged(
const QColor &newColor )
236void QgsEllipseSymbolLayerWidget::btnChangeColorFill_colorChanged(
const QColor &newColor )
247void QgsEllipseSymbolLayerWidget::mSymbolWidthUnitWidget_changed()
257void QgsEllipseSymbolLayerWidget::mStrokeWidthUnitWidget_changed()
267void QgsEllipseSymbolLayerWidget::mSymbolHeightUnitWidget_changed()
277void QgsEllipseSymbolLayerWidget::mOffsetUnitWidget_changed()
287void QgsEllipseSymbolLayerWidget::penJoinStyleChanged()
293void QgsEllipseSymbolLayerWidget::penCapStyleChanged()
299void QgsEllipseSymbolLayerWidget::blockComboSignals(
bool block )
301 mSymbolWidthUnitWidget->blockSignals( block );
302 mStrokeWidthUnitWidget->blockSignals( block );
303 mSymbolHeightUnitWidget->blockSignals( block );
304 mHorizontalAnchorComboBox->blockSignals( block );
305 mVerticalAnchorComboBox->blockSignals( block );
306 mSymbolWidthUnitWidget->blockSignals( block );
307 mStrokeWidthUnitWidget->blockSignals( block );
308 mSymbolHeightUnitWidget->blockSignals( block );
309 mOffsetUnitWidget->blockSignals( block );
310 cboJoinStyle->blockSignals( block );
311 cboCapStyle->blockSignals( block );
314void QgsEllipseSymbolLayerWidget::mHorizontalAnchorComboBox_currentIndexChanged(
int index )
323void QgsEllipseSymbolLayerWidget::mVerticalAnchorComboBox_currentIndexChanged(
int index )
332void QgsEllipseSymbolLayerWidget::setOffset()
334 mLayer->
setOffset( QPointF( spinOffsetX->value(), spinOffsetY->value() ) );
@ Millimeters
Millimeters.
@ Points
Points (e.g., for font sizes)
@ MetersInMapUnits
Meters value as Map units.
static const double UI_SCALE_FACTOR
UI scaling factor.
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value.
A symbol layer for rendering objects with major and minor axis (e.g.
void setPenCapStyle(Qt::PenCapStyle style)
Sets the marker's stroke cap style (e.g., flat, round, etc).
void setStrokeWidth(double w)
void setSymbolHeightMapUnitScale(const QgsMapUnitScale &scale)
void setSymbolWidthMapUnitScale(const QgsMapUnitScale &scale)
Qgis::RenderUnit symbolWidthUnit() const
Returns the units for the symbol's width.
const QgsMapUnitScale & strokeWidthMapUnitScale() const
Qgis::RenderUnit strokeWidthUnit() const
Returns the units for the symbol's stroke width.
void setSymbolWidth(double w)
double strokeWidth() const
void setStrokeColor(const QColor &c) override
Sets the stroke color for the symbol layer.
void setStrokeStyle(Qt::PenStyle strokeStyle)
void setStrokeWidthUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's stroke width.
Shape
Marker symbol shapes.
QColor fillColor() const override
Returns the fill color for the symbol layer.
QgsEllipseSymbolLayer::Shape shape() const
Returns the shape for the rendered ellipse marker symbol.
void setFillColor(const QColor &c) override
Sets the fill color for the symbol layer.
void setShape(QgsEllipseSymbolLayer::Shape shape)
Sets the rendered ellipse marker shape.
static QList< QgsEllipseSymbolLayer::Shape > availableShapes()
Returns a list of all available shape types.
const QgsMapUnitScale & symbolHeightMapUnitScale() const
Qt::PenStyle strokeStyle() const
const QgsMapUnitScale & symbolWidthMapUnitScale() const
static QString encodeShape(QgsEllipseSymbolLayer::Shape shape)
Encodes a shape to its string representation.
double symbolWidth() const
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
void setSymbolHeightUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's height.
QColor strokeColor() const override
Returns the stroke color for the symbol layer.
void setPenJoinStyle(Qt::PenJoinStyle style)
Set stroke join style.
static bool shapeIsFilled(const QgsEllipseSymbolLayer::Shape &shape)
Returns true if a shape has a fill.
void setSymbolWidthUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's width.
Qgis::RenderUnit symbolHeightUnit() const
Returns the units for the symbol's height.
Qt::PenJoinStyle penJoinStyle() const
Gets stroke join style.
Qt::PenCapStyle penCapStyle() const
Returns the marker's stroke cap style (e.g., flat, round, etc).
double symbolHeight() const
void setSymbolHeight(double h)
Struct for storing maximum and minimum scales for measurements in map units.
QPointF offset() const
Returns the marker's offset, which is the horizontal and vertical displacement which the rendered mar...
HorizontalAnchorPoint
Symbol horizontal anchor points.
void setOffsetUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's offset.
void setAngle(double angle)
Sets the rotation angle for the marker.
void setVerticalAnchorPoint(VerticalAnchorPoint v)
Sets the vertical anchor point for positioning the symbol.
void setHorizontalAnchorPoint(HorizontalAnchorPoint h)
Sets the horizontal anchor point for positioning the symbol.
void setOffset(QPointF offset)
Sets the marker's offset, which is the horizontal and vertical displacement which the rendered marker...
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale for the symbol's offset.
Qgis::RenderUnit offsetUnit() const
Returns the units for the symbol's offset.
VerticalAnchorPoint verticalAnchorPoint() const
Returns the vertical anchor point for positioning the symbol.
HorizontalAnchorPoint horizontalAnchorPoint() const
Returns the horizontal anchor point for positioning the symbol.
VerticalAnchorPoint
Symbol vertical anchor points.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's offset.
double angle() const
Returns the rotation angle for the marker, in degrees clockwise from north.
Stores properties relating to a screen.
static QIcon symbolLayerPreviewIcon(const QgsSymbolLayer *layer, Qgis::RenderUnit u, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::SymbolType parentSymbolType=Qgis::SymbolType::Hybrid, QgsMapLayer *mapLayer=nullptr, const QgsScreenProperties &screen=QgsScreenProperties())
Draws a symbol layer preview to an icon.
@ VerticalAnchor
Vertical anchor point.
@ HorizontalAnchor
Horizontal anchor point.
@ StrokeStyle
Stroke style (eg solid, dashed)
@ Name
Name, eg shape name for simple markers.
@ StrokeColor
Stroke color.
@ CapStyle
Line cap style.
@ JoinStyle
Line join style.
@ StrokeWidth
Stroke width.
virtual QString layerType() const =0
Returns a string that represents this layer type.
virtual void setColor(const QColor &color)
Sets the "representative" color for the symbol layer.
Represents a vector layer which manages a vector based data sets.