29#include "moc_qgslayoutmarkerwidget.cpp"
42 mItemPropertiesWidget->showFrameGroup(
false );
43 mainLayout->addWidget( mItemPropertiesWidget );
45 blockAllSignals(
true );
49 blockAllSignals(
false );
52 mShapeStyleButton->registerExpressionContextGenerator( mMarker );
56 connect( mRotationFromMapCheckBox, &QCheckBox::stateChanged,
this, &QgsLayoutMarkerWidget::rotationFromMapCheckBoxChanged );
57 connect( mNorthOffsetSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsLayoutMarkerWidget::northOffsetSpinBoxChanged );
58 connect( mNorthTypeComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsLayoutMarkerWidget::northTypeComboBoxChanged );
60 mNorthTypeComboBox->blockSignals(
true );
63 mNorthTypeComboBox->blockSignals(
false );
64 mNorthOffsetSpinBox->setClearValue( 0.0 );
67 if ( mMarker->layout() )
70 mMapComboBox->setCurrentLayout( mMarker->layout() );
75 setGuiElementValues();
80 if ( mItemPropertiesWidget )
81 mItemPropertiesWidget->setMasterLayout( masterLayout );
94 mMarker = qobject_cast<QgsLayoutItemMarker *>( item );
95 mItemPropertiesWidget->setItem( mMarker );
100 mShapeStyleButton->registerExpressionContextGenerator( mMarker );
103 setGuiElementValues();
108void QgsLayoutMarkerWidget::blockAllSignals(
bool block )
110 mShapeStyleButton->blockSignals( block );
111 mMapComboBox->blockSignals( block );
112 mRotationFromMapCheckBox->blockSignals( block );
113 mNorthTypeComboBox->blockSignals( block );
114 mNorthOffsetSpinBox->blockSignals( block );
117void QgsLayoutMarkerWidget::setGuiElementValues()
124 blockAllSignals(
true );
126 mShapeStyleButton->setSymbol( mMarker->symbol()->clone() );
128 mMapComboBox->setItem( mMarker->linkedMap() );
129 if ( mMarker->linkedMap() )
131 mRotationFromMapCheckBox->setCheckState( Qt::Checked );
132 mMapComboBox->setEnabled(
true );
133 mNorthTypeComboBox->setEnabled(
true );
134 mNorthOffsetSpinBox->setEnabled(
true );
138 mRotationFromMapCheckBox->setCheckState( Qt::Unchecked );
139 mMapComboBox->setEnabled(
false );
140 mNorthTypeComboBox->setEnabled(
false );
141 mNorthOffsetSpinBox->setEnabled(
false );
143 mNorthTypeComboBox->setCurrentIndex( mNorthTypeComboBox->findData( mMarker->northMode() ) );
144 mNorthOffsetSpinBox->setValue( mMarker->northOffset() );
146 blockAllSignals(
false );
149void QgsLayoutMarkerWidget::symbolChanged()
155 mMarker->setSymbol( mShapeStyleButton->clonedSymbol<QgsMarkerSymbol>() );
156 mMarker->layout()->undoStack()->endCommand();
159void QgsLayoutMarkerWidget::rotationFromMapCheckBoxChanged(
int state )
166 mMarker->beginCommand( tr(
"Toggle Rotation Sync" ) );
167 if ( state == Qt::Unchecked )
169 mMarker->setLinkedMap(
nullptr );
170 mMapComboBox->setEnabled(
false );
171 mNorthTypeComboBox->setEnabled(
false );
172 mNorthOffsetSpinBox->setEnabled(
false );
176 QgsLayoutItemMap *map = qobject_cast<QgsLayoutItemMap *>( mMapComboBox->currentItem() );
177 mMarker->setLinkedMap( map );
178 mNorthTypeComboBox->setEnabled(
true );
179 mNorthOffsetSpinBox->setEnabled(
true );
180 mMapComboBox->setEnabled(
true );
182 mMarker->endCommand();
192 const QgsLayout *layout = mMarker->layout();
198 QgsLayoutItemMap *map = qobject_cast<QgsLayoutItemMap *>( item );
204 mMarker->beginCommand( tr(
"Change Rotation Map" ) );
205 mMarker->setLinkedMap( map );
207 mMarker->endCommand();
210void QgsLayoutMarkerWidget::northOffsetSpinBoxChanged(
double d )
213 mMarker->setNorthOffset( d );
214 mMarker->endCommand();
218void QgsLayoutMarkerWidget::northTypeComboBoxChanged(
int index )
220 mMarker->beginCommand( tr(
"Change Marker North Mode" ) );
222 mMarker->endCommand();
void itemChanged(QgsLayoutItem *item)
Emitted whenever the currently selected item changes.
A layout item for showing marker symbols.
Base class for graphical items within a QgsLayout.
@ UndoPictureNorthOffset
Picture north offset.
@ UndoShapeStyle
Shape symbol style.
int type() const override
Returns a unique graphics item type identifier.
NorthMode
Method for syncing rotation to a map's North direction.
@ GridNorth
Align to grid north.
@ TrueNorth
Align to true north.
void changed()
Emitted when the object's properties change.
void layerChanged(QgsVectorLayer *layer)
Emitted when the context's layer is changed.
Interface for master layout type objects, such as print layouts and reports.