47#include <QButtonGroup>
52 , mMapCanvas( mapCanvas )
56 setWidgetMode(
Text );
63 , mMapCanvas( mapCanvas )
70 setWidgetMode( mode );
73void QgsTextFormatWidget::initWidget()
77 mGeometryGeneratorGroupBox->setCollapsed(
true );
79 connect( mShapeSVGPathLineEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged );
80 connect( mFontSizeSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontSizeSpinBox_valueChanged );
81 connect( mFontFamilyCmbBx, &QFontComboBox::currentFontChanged,
this, &QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged );
82 connect( mFontStyleComboBox, &QComboBox::currentTextChanged,
this, &QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged );
83 connect( mFontUnderlineBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontUnderlineBtn_toggled );
84 connect( mFontStrikethroughBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontStrikethroughBtn_toggled );
85 connect( mFontWordSpacingSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged );
86 connect( mFontLetterSpacingSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged );
88 connect( mFontMinPixelSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged );
89 connect( mFontMaxPixelSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged );
98 connect( mShapeTypeCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged );
99 connect( mShapeRotationCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged );
100 connect( mShapeSVGParamsBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGParamsBtn_clicked );
101 connect( mShapeSVGSelectorBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked );
102 connect( mPreviewTextEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mPreviewTextEdit_textChanged );
103 connect( mPreviewTextBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mPreviewTextBtn_clicked );
105 connect( mDirectSymbLeftToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked );
106 connect( mDirectSymbRightToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked );
107 connect( chkLineOrientationDependent, &QCheckBox::toggled,
this, &QgsTextFormatWidget::chkLineOrientationDependent_toggled );
108 connect( mToolButtonConfigureSubstitutes, &QToolButton::clicked,
this, &QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked );
109 connect( mKerningCheckBox, &QCheckBox::toggled,
this, &QgsTextFormatWidget::kerningToggled );
110 connect( mComboOverlapHandling, qOverload< int >( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::overlapModeChanged );
113 mOptionsTab->setIconSize( QSize( iconSize, iconSize ) );
114 mLabelingOptionsListWidget->setIconSize( QSize( iconSize, iconSize ) ) ;
120 mPreviewTextBtn->setIconSize( QSize( iconSize16, iconSize16 ) );
121 mPointOffsetAboveLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
122 mPointOffsetAbove->setIconSize( QSize( iconSize32, iconSize18 ) );
123 mPointOffsetAboveRight->setIconSize( QSize( iconSize32, iconSize18 ) );
124 mPointOffsetLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
125 mPointOffsetOver ->setIconSize( QSize( iconSize32, iconSize18 ) );
126 mPointOffsetRight->setIconSize( QSize( iconSize32, iconSize18 ) );
127 mPointOffsetBelowLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
128 mPointOffsetBelow->setIconSize( QSize( iconSize32, iconSize18 ) );
129 mPointOffsetBelowRight->setIconSize( QSize( iconSize32, iconSize18 ) );
130 mLabelMinScale->setPixmap(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionZoomOut.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
131 mLabelMaxScale->setPixmap(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionZoomIn.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
134 mFontUnderlineBtn->setMinimumSize( buttonSize, buttonSize );
135 mFontUnderlineBtn->setMaximumSize( buttonSize, buttonSize );
136 mFontStrikethroughBtn->setMinimumSize( buttonSize, buttonSize );
137 mFontStrikethroughBtn->setMaximumSize( buttonSize, buttonSize );
138 mFontBoldBtn->setMinimumSize( buttonSize, buttonSize );
139 mFontBoldBtn->setMaximumSize( buttonSize, buttonSize );
140 mFontItalicBtn->setMinimumSize( buttonSize, buttonSize );
141 mFontItalicBtn->setMaximumSize( buttonSize, buttonSize );
143 mPreviewScaleComboBox->setMapCanvas(
mMapCanvas );
144 mPreviewScaleComboBox->setShowCurrentScaleButton(
true );
147 const auto unitWidgets = findChildren<QgsUnitSelectionWidget *>();
181 mFontLineHeightSpinBox->setClearValue( 100.0 );
182 mShapeRotationDblSpnBx->setClearValue( 0.0 );
183 mShapeOffsetXSpnBx->setClearValue( 0.0 );
184 mShapeOffsetYSpnBx->setClearValue( 0.0 );
185 mPointOffsetXSpinBox->setClearValue( 0.0 );
186 mPointOffsetYSpinBox->setClearValue( 0.0 );
187 mPointAngleSpinBox->setClearValue( 0.0 );
188 mFontLetterSpacingSpinBox->setClearValue( 0.0 );
189 mFontWordSpacingSpinBox->setClearValue( 0.0 );
190 mZIndexSpinBox->setClearValue( 0.0 );
191 mLineDistanceSpnBx->setClearValue( 0.0 );
192 mSpinStretch->setClearValue( 100 );
197 mFontLineHeightSpinBox->setClearValue( 100.0 );
199 mFontLineHeightSpinBox->setClearValue( 10.0 );
216 updateAvailableShadowPositions();
219 mBackgroundMarkerSymbolButton->setDialogTitle( tr(
"Background Symbol" ) );
220 mBackgroundMarkerSymbolButton->registerExpressionContextGenerator(
this );
221 mBackgroundMarkerSymbolButton->setMapCanvas(
mMapCanvas );
223 mBackgroundFillSymbolButton->setDialogTitle( tr(
"Background Symbol" ) );
224 mBackgroundFillSymbolButton->registerExpressionContextGenerator(
this );
225 mBackgroundFillSymbolButton->setMapCanvas(
mMapCanvas );
229 mRefFont = lblFontPreview->font();
232 connect( mShadowOffsetAngleDial, &QAbstractSlider::valueChanged, mShadowOffsetAngleSpnBx, &QSpinBox::setValue );
233 connect( mShadowOffsetAngleSpnBx,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), mShadowOffsetAngleDial, &QAbstractSlider::setValue );
234 connect( mLimitLabelChkBox, &QAbstractButton::toggled, mLimitLabelSpinBox, &QWidget::setEnabled );
235 connect( mCheckBoxSubstituteText, &QAbstractButton::toggled, mToolButtonConfigureSubstitutes, &QWidget::setEnabled );
245 populateFontCapitalsComboBox();
248 mPreviewBackgroundBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
249 mPreviewBackgroundBtn->setContext( QStringLiteral(
"labeling" ) );
250 mPreviewBackgroundBtn->setColor( QColor( 255, 255, 255 ) );
251 btnTextColor->setColorDialogTitle( tr(
"Select Text Color" ) );
252 btnTextColor->setContext( QStringLiteral(
"labeling" ) );
253 btnTextColor->setDefaultColor( Qt::black );
254 btnBufferColor->setColorDialogTitle( tr(
"Select Buffer Color" ) );
255 btnBufferColor->setContext( QStringLiteral(
"labeling" ) );
256 btnBufferColor->setDefaultColor( Qt::white );
257 mShapeStrokeColorBtn->setColorDialogTitle( tr(
"Select Stroke Color" ) );
258 mShapeStrokeColorBtn->setContext( QStringLiteral(
"labeling" ) );
259 mShapeFillColorBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
260 mShapeFillColorBtn->setContext( QStringLiteral(
"labeling" ) );
261 mShadowColorBtn->setColorDialogTitle( tr(
"Select Shadow Color" ) );
262 mShadowColorBtn->setContext( QStringLiteral(
"labeling" ) );
263 mShadowColorBtn->setDefaultColor( Qt::black );
265 mFontColorDDBtn->registerLinkedWidget( btnTextColor );
266 mBufferColorDDBtn->registerLinkedWidget( btnBufferColor );
267 mShapeStrokeColorDDBtn->registerLinkedWidget( mShapeStrokeColorBtn );
268 mShapeFillColorDDBtn->registerLinkedWidget( mShapeFillColorBtn );
269 mShadowColorDDBtn->registerLinkedWidget( mShadowColorBtn );
310 const auto groupBoxes = findChildren<QgsCollapsibleGroupBox *>();
313 grpbox->setSettingGroup( QStringLiteral(
"mAdvLabelingDlg" ) );
319 mLabelingOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect,
false );
324 QSizePolicy policy( mLabelingOptionsListFrame->sizePolicy() );
325 policy.setHorizontalStretch( 0 );
326 mLabelingOptionsListFrame->setSizePolicy( policy );
327 if ( !settings.
contains( QStringLiteral(
"/Windows/Labeling/OptionsSplitState" ) ) )
330 QList<int> splitsizes;
332 mLabelingOptionsSplitter->setSizes( splitsizes );
336 connect( mLabelStackedWidget, &QStackedWidget::currentChanged,
this, &QgsTextFormatWidget::optionsStackedWidget_CurrentChanged );
339 mFontPreviewSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ) ).toByteArray() );
340 mLabelingOptionsSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ) ).toByteArray() );
342 mLabelingOptionsListWidget->setCurrentRow( settings.
value( QStringLiteral(
"Windows/Labeling/Tab" ), 0 ).toInt() );
346 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
350 mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
354 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
356 overlapModeChanged();
358#ifndef HAS_KDE_QT5_FONT_STRETCH_FIX
359 mLabelStretch->hide();
360 mSpinStretch->hide();
361 mFontStretchDDBtn->hide();
366 QList<QWidget *> widgets;
367 widgets << btnBufferColor
369 << chkLabelPerFeaturePart
373 << chkLineOrientationDependent
375 << chkPreserveRotation
377 << comboBufferBlendMode
379 << mBufferJoinStyleComboBox
380 << mBufferTranspFillChbx
381 << mBufferOpacityWidget
382 << mCentroidInsideCheckBox
384 << mCoordRotationUnitComboBox
386 << mDirectSymbLeftLineEdit
387 << mDirectSymbRevChkBx
388 << mDirectSymbRightLineEdit
389 << mFitInsidePolygonCheckBox
390 << mFontCapitalsComboBox
391 << mFontLetterSpacingSpinBox
392 << mFontLimitPixelChkBox
393 << mFontLineHeightSpinBox
394 << mLineHeightUnitWidget
395 << mFontMaxPixelSpinBox
396 << mFontMinPixelSpinBox
397 << mFontMultiLineAlignComboBox
399 << mFontStyleComboBox
400 << mTextOrientationComboBox
401 << mTextOpacityWidget
403 << mFontWordSpacingSpinBox
405 << mFormatNumDecimalsSpnBx
406 << mFormatNumPlusSignChkBx
408 << mLimitLabelSpinBox
409 << mLineDistanceSpnBx
410 << mLineDistanceUnitWidget
411 << mMaxCharAngleInDSpinBox
412 << mMaxCharAngleOutDSpinBox
414 << mOffsetTypeComboBox
415 << mCheckAllowDegradedPlacement
416 << mComboOverlapHandling
417 << mPointAngleSpinBox
418 << mPointOffsetUnitWidget
419 << mPointOffsetXSpinBox
420 << mPointOffsetYSpinBox
421 << mPreviewBackgroundBtn
424 << mRepeatDistanceSpinBox
425 << mRepeatDistanceUnitWidget
426 << mOverrunDistanceSpinBox
427 << mOverrunDistanceUnitWidget
428 << mScaleBasedVisibilityChkBx
434 << mShadowOffsetAngleSpnBx
435 << mShadowOffsetGlobalChkBx
436 << mShadowOffsetSpnBx
437 << mShadowOffsetUnitWidget
438 << mShadowRadiusAlphaChkBx
439 << mShadowRadiusDblSpnBx
440 << mShadowRadiusUnitWidget
442 << mShadowOpacityWidget
445 << mShapeStrokeColorBtn
446 << mShapeStrokeWidthSpnBx
447 << mShapeStrokeWidthUnitWidget
449 << mShapeFillColorBtn
450 << mShapeOffsetXSpnBx
451 << mShapeOffsetYSpnBx
452 << mShapeOffsetUnitWidget
453 << mShapeRadiusXDbSpnBx
454 << mShapeRadiusYDbSpnBx
455 << mShapeRotationCmbBx
456 << mShapeRotationDblSpnBx
457 << mShapeRadiusUnitWidget
458 << mShapeSVGPathLineEdit
460 << mShapeSizeUnitWidget
463 << mBackgroundOpacityWidget
468 << mAutoWrapLengthSpinBox
469 << mAutoWrapTypeComboBox
470 << mCentroidRadioVisible
471 << mCentroidRadioWhole
472 << mDirectSymbRadioBtnAbove
473 << mDirectSymbRadioBtnBelow
474 << mDirectSymbRadioBtnLR
475 << mUpsidedownRadioAll
476 << mUpsidedownRadioDefined
477 << mUpsidedownRadioOff
478 << mPlacementModeComboBox
479 << mFieldExpressionWidget
480 << mCheckBoxSubstituteText
481 << mGeometryGeneratorGroupBox
482 << mGeometryGenerator
483 << mGeometryGeneratorType
484 << mBackgroundMarkerSymbolButton
485 << mBackgroundFillSymbolButton
486 << mCalloutsDrawCheckBox
487 << mCalloutStyleComboBox
490 << mMaskJoinStyleComboBox
491 << mMaskBufferSizeSpinBox
492 << mMaskOpacityWidget
493 << mCheckAllowLabelsOutsidePolygons
494 << mHtmlFormattingCheckBox;
501 connect( mBufferDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
503 updateBufferFrameStatus();
506 connect( mShapeDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
508 updateShapeFrameStatus();
511 connect( mShadowDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
513 updateShadowFrameStatus();
516 connect( mCalloutsDrawCheckBox, &QCheckBox::stateChanged,
this, [ = ](
int )
518 updateCalloutFrameStatus();
526 whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() );
527 mOptionsTab->tabBar()->setUsesScrollButtons(
true );
548 toggleDDButtons(
true );
555 const int prevIndex = mOptionsTab->currentIndex();
556 toggleDDButtons(
true );
557 delete mLabelingOptionsListWidget->takeItem( 8 );
558 delete mLabelingOptionsListWidget->takeItem( 7 );
559 delete mLabelingOptionsListWidget->takeItem( 6 );
560 delete mLabelingOptionsListWidget->takeItem( 3 );
561 mOptionsTab->removeTab( 8 );
562 mOptionsTab->removeTab( 7 );
563 mOptionsTab->removeTab( 6 );
564 mOptionsTab->removeTab( 3 );
565 mLabelStackedWidget->removeWidget( mLabelPage_Rendering );
566 mLabelStackedWidget->removeWidget( mLabelPage_Callouts );
567 mLabelStackedWidget->removeWidget( mLabelPage_Mask );
568 mLabelStackedWidget->removeWidget( mLabelPage_Placement );
578 mLabelStackedWidget->setCurrentIndex( prevIndex - 1 );
579 mOptionsTab->setCurrentIndex( prevIndex - 1 );
586 mLabelStackedWidget->setCurrentIndex( 0 );
587 mOptionsTab->setCurrentIndex( 0 );
591 frameLabelWith->hide();
592 mDirectSymbolsFrame->hide();
593 mFormatNumFrame->hide();
594 mFormatNumChkBx->hide();
595 mFormatNumDDBtn->hide();
596 mCheckBoxSubstituteText->hide();
597 mToolButtonConfigureSubstitutes->hide();
598 mLabelWrapOnCharacter->hide();
599 wrapCharacterEdit->hide();
600 mWrapCharDDBtn->hide();
601 mLabelWrapLinesTo->hide();
602 mAutoWrapLengthSpinBox->hide();
603 mAutoWrapLengthDDBtn->hide();
604 mAutoWrapTypeComboBox->hide();
605 mFontMultiLineLabel->hide();
606 mFontMultiLineAlignComboBox->hide();
607 mFontMultiLineAlignDDBtn->hide();
615void QgsTextFormatWidget::toggleDDButtons(
bool visible )
617 const auto buttons = findChildren< QgsPropertyOverrideButton * >();
620#ifndef HAS_KDE_QT5_FONT_STRETCH_FIX
621 if ( button == mFontStretchDDBtn )
624 button->setVisible( visible );
630 mOptionsTab->setVisible( enabled );
631 mOptionsTab->setTabToolTip( 0, tr(
"Text" ) );
632 mOptionsTab->setTabToolTip( 1, tr(
"Formatting" ) );
633 mOptionsTab->setTabToolTip( 2, tr(
"Buffer" ) );
634 mOptionsTab->setTabToolTip( 3, tr(
"Mask" ) );
635 mOptionsTab->setTabToolTip( 4, tr(
"Background" ) );
636 mOptionsTab->setTabToolTip( 5, tr(
"Shadow" ) );
637 mOptionsTab->setTabToolTip( 6, tr(
"Callouts" ) );
638 mOptionsTab->setTabToolTip( 7, tr(
"Placement" ) );
639 mOptionsTab->setTabToolTip( 8, tr(
"Rendering" ) );
641 mLabelingOptionsListFrame->setVisible( !enabled );
642 groupBox_mPreview->setVisible( !enabled );
646void QgsTextFormatWidget::connectValueChanged(
const QList<QWidget *> &widgets,
const char *slot )
648 const auto constWidgets = widgets;
649 for ( QWidget *widget : constWidgets )
653 connect( w, SIGNAL( changed() ),
this, slot );
657 connect( w, SIGNAL( fieldChanged( QString ) ),
this, slot );
659 else if (
QgsOpacityWidget *w = qobject_cast< QgsOpacityWidget *>( widget ) )
661 connect( w, SIGNAL( opacityChanged(
double ) ),
this, slot );
663 else if (
QgsScaleWidget *w = qobject_cast< QgsScaleWidget *>( widget ) )
665 connect( w, SIGNAL( scaleChanged(
double ) ),
this, slot );
669 connect( w, SIGNAL( changed() ),
this, slot );
671 else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
673 connect( w, SIGNAL( currentIndexChanged(
int ) ),
this, slot );
675 else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
677 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
679 else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
681 connect( w, SIGNAL( valueChanged(
double ) ),
this, slot );
683 else if (
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
685 connect( w, SIGNAL( colorChanged( QColor ) ),
this, slot );
687 else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
689 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
691 else if ( QRadioButton *w = qobject_cast<QRadioButton *>( widget ) )
693 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
695 else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
697 connect( w, SIGNAL( textEdited( QString ) ),
this, slot );
699 else if ( QSlider *w = qobject_cast<QSlider *>( widget ) )
701 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
703 else if ( QGroupBox *w = qobject_cast<QGroupBox *>( widget ) )
705 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
709 connect( w, SIGNAL( textChanged() ),
this, slot );
713 QgsLogger::warning( QStringLiteral(
"Could not create connection for widget %1" ).arg( widget->objectName() ) );
745 mDirectSymbDDBtn->registerCheckedWidget( mDirectSymbChkBx );
753 mFormatNumDDBtn->registerCheckedWidget( mFormatNumChkBx );
768 mEnableMaskDDBtn->registerCheckedWidget( mEnableMaskChkBx );
776 mShapeDrawDDBtn->registerCheckedWidget( mShapeDrawChkBx );
798 mShadowDrawDDBtn->registerCheckedWidget( mShadowDrawChkBx );
840 updateDataDefinedAlignment();
843 const QString ddScaleVisInfo = tr(
"Value < 0 represents a scale closer than 1:1, e.g. -10 = 10:1<br>"
844 "Value of 0 disables the specific limit." );
846 mScaleBasedVisibilityDDBtn->registerCheckedWidget( mScaleBasedVisibilityChkBx );
848 mScaleBasedVisibilityMinDDBtn->setUsageInfo( ddScaleVisInfo );
850 mScaleBasedVisibilityMaxDDBtn->setUsageInfo( ddScaleVisInfo );
853 mFontLimitPixelDDBtn->registerCheckedWidget( mFontLimitPixelChkBox );
874 if ( !mButtons.contains( key ) )
879 mButtons[key] = button;
896 mBufferDrawChkBx->setChecked( buffer.
enabled() );
897 mBufferFrame->setEnabled( buffer.
enabled() );
898 spinBufferSize->setValue( buffer.
size() );
899 mBufferUnitWidget->setUnit( buffer.
sizeUnit() );
901 btnBufferColor->setColor( buffer.
color() );
902 mBufferOpacityWidget->setOpacity( buffer.
opacity() );
903 mBufferJoinStyleComboBox->setPenJoinStyle( buffer.
joinStyle() );
905 comboBufferBlendMode->setBlendMode( buffer.
blendMode() );
907 mBufferEffect.reset( lPaintEffect->clone() );
911 mBufferEffect->setEnabled(
false );
913 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
917 mEnableMaskChkBx->setChecked( mask.
enabled() );
918 mMaskBufferSizeSpinBox->setValue( mask.
size() );
919 mMaskBufferUnitWidget->setUnit( mask.
sizeUnit() );
921 mMaskOpacityWidget->setOpacity( mask.
opacity() );
922 mMaskJoinStyleComboBox->setPenJoinStyle( mask.
joinStyle() );
924 mMaskEffect.reset( lPaintEffect->clone() );
928 mMaskEffect->setEnabled(
false );
930 mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
940 mTextOrientationComboBox->setCurrentIndex( mTextOrientationComboBox->findData(
static_cast< int >(
format.
orientation() ) ) );
943 mFontWordSpacingSpinBox->setValue(
format.
font().wordSpacing() );
944 mFontLetterSpacingSpinBox->setValue(
format.
font().letterSpacing() );
949 updateFont( mRefFont );
955 const QString missingTxt = tr(
"%1 not found. Default substituted." );
956 QString txtPrepend = tr(
"Chosen font" );
961 mFontMissingLabel->setText( missingTxt.arg( txtPrepend ) );
964 mLabelingOptionsListWidget->setCurrentRow( 0 );
971 mShapeDrawChkBx->setChecked( background.
enabled() );
972 mShapeFrame->setEnabled( background.
enabled() );
973 mShapeTypeCmbBx->blockSignals(
true );
974 mShapeTypeCmbBx->setCurrentIndex( mShapeTypeCmbBx->findData( background.
type() ) );
975 mShapeTypeCmbBx->blockSignals(
false );
976 updateAvailableShadowPositions();
977 mShapeSVGPathLineEdit->setText( background.
svgFile() );
979 mShapeSizeCmbBx->setCurrentIndex( background.
sizeType() );
980 mShapeSizeXSpnBx->setValue( background.
size().width() );
981 mShapeSizeYSpnBx->setValue( background.
size().height() );
982 mShapeSizeUnitWidget->setUnit( background.
sizeUnit() );
984 mShapeRotationCmbBx->setCurrentIndex( background.
rotationType() );
987 mShapeRotationDblSpnBx->setValue( background.
rotation() );
988 mShapeOffsetXSpnBx->setValue( background.
offset().x() );
989 mShapeOffsetYSpnBx->setValue( background.
offset().y() );
990 mShapeOffsetUnitWidget->setUnit( background.
offsetUnit() );
992 mShapeRadiusXDbSpnBx->setValue( background.
radii().width() );
993 mShapeRadiusYDbSpnBx->setValue( background.
radii().height() );
994 mShapeRadiusUnitWidget->setUnit( background.
radiiUnit() );
997 mShapeFillColorBtn->setColor( background.
fillColor() );
998 mShapeStrokeColorBtn->setColor( background.
strokeColor() );
999 mShapeStrokeWidthSpnBx->setValue( background.
strokeWidth() );
1003 mBackgroundOpacityWidget->setOpacity( background.
opacity() );
1004 mShapeBlendCmbBx->setBlendMode( background.
blendMode() );
1006 mLoadSvgParams =
false;
1007 mShapeTypeCmbBx_currentIndexChanged( background.
type() );
1009 if (
auto *lPaintEffect = background.
paintEffect() )
1010 mBackgroundEffect.reset( lPaintEffect->clone() );
1014 mBackgroundEffect->setEnabled(
false );
1016 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
1022 mShadowDrawChkBx->setChecked( shadow.
enabled() );
1023 mShadowFrame->setEnabled( shadow.
enabled() );
1024 mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( shadow.
shadowPlacement() ) );
1025 mShadowOffsetAngleSpnBx->setValue( shadow.
offsetAngle() );
1027 mShadowOffsetUnitWidget->setUnit( shadow.
offsetUnit() );
1029 mShadowOffsetGlobalChkBx->setChecked( shadow.
offsetGlobal() );
1031 mShadowRadiusDblSpnBx->setValue( shadow.
blurRadius() );
1034 mShadowRadiusAlphaChkBx->setChecked( shadow.
blurAlphaOnly() );
1035 mShadowOpacityWidget->setOpacity( shadow.
opacity() );
1036 mShadowScaleSpnBx->setValue( shadow.
scale() );
1038 mShadowColorBtn->setColor( shadow.
color() );
1039 mShadowBlendCmbBx->setBlendMode( shadow.
blendMode() );
1051 settings.
setValue( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ), mFontPreviewSplitter->saveState() );
1052 settings.
setValue( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ), mLabelingOptionsSplitter->saveState() );
1054 int prevIndex = mLabelingOptionsListWidget->currentRow();
1055 if ( mWidgetMode ==
Text )
1057 switch ( prevIndex )
1066 settings.
setValue( QStringLiteral(
"Windows/Labeling/Tab" ), prevIndex );
1090 buffer.
setEnabled( mBufferDrawChkBx->isChecked() );
1091 buffer.
setSize( spinBufferSize->value() );
1092 buffer.
setColor( btnBufferColor->color() );
1093 buffer.
setOpacity( mBufferOpacityWidget->opacity() );
1096 buffer.
setJoinStyle( mBufferJoinStyleComboBox->penJoinStyle() );
1098 buffer.
setBlendMode( comboBufferBlendMode->blendMode() );
1107 mask.
setEnabled( mEnableMaskChkBx->isChecked() );
1108 mask.
setSize( mMaskBufferSizeSpinBox->value() );
1109 mask.
setOpacity( mMaskOpacityWidget->opacity() );
1110 mask.
setSizeUnit( mMaskBufferUnitWidget->unit() );
1112 mask.
setJoinStyle( mMaskJoinStyleComboBox->penJoinStyle() );
1122 background.
setEnabled( mShapeDrawChkBx->isChecked() );
1124 background.
setSvgFile( mShapeSVGPathLineEdit->text() );
1126 background.
setSize( QSizeF( mShapeSizeXSpnBx->value(), mShapeSizeYSpnBx->value() ) );
1127 background.
setSizeUnit( mShapeSizeUnitWidget->unit() );
1130 background.
setRotation( mShapeRotationDblSpnBx->value() );
1131 background.
setOffset( QPointF( mShapeOffsetXSpnBx->value(), mShapeOffsetYSpnBx->value() ) );
1134 background.
setRadii( QSizeF( mShapeRadiusXDbSpnBx->value(), mShapeRadiusYDbSpnBx->value() ) );
1135 background.
setRadiiUnit( mShapeRadiusUnitWidget->unit() );
1138 background.
setFillColor( mShapeFillColorBtn->color() );
1143 background.
setOpacity( mBackgroundOpacityWidget->opacity() );
1144 background.
setBlendMode( mShapeBlendCmbBx->blendMode() );
1155 shadow.
setEnabled( mShadowDrawChkBx->isChecked() );
1166 shadow.
setOpacity( mShadowOpacityWidget->opacity() );
1167 shadow.
setScale( mShadowScaleSpnBx->value() );
1168 shadow.
setColor( mShadowColorBtn->color() );
1172 if ( includeDataDefinedProperties )
1203 if ( mButtons.contains( key ) )
1212void QgsTextFormatWidget::optionsStackedWidget_CurrentChanged(
int indx )
1214 mLabelingOptionsListWidget->blockSignals(
true );
1215 mLabelingOptionsListWidget->setCurrentRow( indx );
1216 mLabelingOptionsListWidget->blockSignals(
false );
1225 mPreviewExpressionContext = *lExpressionContext;
1230 const auto symbolButtonWidgets = findChildren<QgsSymbolButton *>();
1238void QgsTextFormatWidget::collapseSample(
bool collapse )
1242 QList<int> splitSizes = mFontPreviewSplitter->sizes();
1243 if ( splitSizes[0] > groupBox_mPreview->height() )
1245 const int delta = splitSizes[0] - groupBox_mPreview->height();
1246 splitSizes[0] -= delta;
1247 splitSizes[1] += delta;
1248 mFontPreviewSplitter->setSizes( splitSizes );
1253void QgsTextFormatWidget::changeTextColor(
const QColor &color )
1259void QgsTextFormatWidget::updateFont(
const QFont &font )
1262 if ( font != mRefFont )
1271 mDirectSymbLeftLineEdit->setFont( mRefFont );
1272 mDirectSymbRightLineEdit->setFont( mRefFont );
1274 blockFontChangeSignals(
true );
1275 mFontFamilyCmbBx->setCurrentFont( mRefFont );
1276 populateFontStyleComboBox();
1277 mFontUnderlineBtn->setChecked( mRefFont.underline() );
1278 mFontStrikethroughBtn->setChecked( mRefFont.strikeOut() );
1279 mKerningCheckBox->setChecked( mRefFont.kerning() );
1280 blockFontChangeSignals(
false );
1288void QgsTextFormatWidget::blockFontChangeSignals(
bool blk )
1290 mFontFamilyCmbBx->blockSignals( blk );
1291 mFontStyleComboBox->blockSignals( blk );
1292 mFontCapitalsComboBox->blockSignals( blk );
1293 mFontUnderlineBtn->blockSignals( blk );
1294 mFontStrikethroughBtn->blockSignals( blk );
1295 mFontWordSpacingSpinBox->blockSignals( blk );
1296 mFontLetterSpacingSpinBox->blockSignals( blk );
1297 mKerningCheckBox->blockSignals( blk );
1312 lblFontPreview->setFormat(
format() );
1315void QgsTextFormatWidget::scrollPreview()
1317 scrollArea_mPreview->ensureVisible( 0, 0, 0, 0 );
1322 mPreviewBackgroundColor = color;
1324 scrollArea_mPreview->widget()->setStyleSheet( QStringLiteral(
"background: rgb(%1, %2, %3);" ).arg( QString::number( color.red() ),
1325 QString::number( color.green() ),
1326 QString::number( color.blue() ) ) );
1329void QgsTextFormatWidget::changeBufferColor(
const QColor &color )
1338 bool showLineFrame =
false;
1339 bool showCentroidFrame =
false;
1340 bool showQuadrantFrame =
false;
1341 bool showFixedQuadrantFrame =
false;
1342 bool showPlacementPriorityFrame =
false;
1343 bool showOffsetTypeFrame =
false;
1344 bool showOffsetFrame =
false;
1345 bool showDistanceFrame =
false;
1346 bool showRotationFrame =
false;
1347 bool showMaxCharAngleFrame =
false;
1352 bool enableMultiLinesFrame =
true;
1358 showDistanceFrame =
true;
1366 showQuadrantFrame =
true;
1367 showFixedQuadrantFrame =
true;
1368 showOffsetFrame =
true;
1369 showRotationFrame =
true;
1373 showDistanceFrame =
true;
1374 showPlacementPriorityFrame =
true;
1375 showOffsetTypeFrame =
true;
1382 showLineFrame =
true;
1383 showDistanceFrame =
true;
1386 const bool offline = chkLineAbove->isChecked() || chkLineBelow->isChecked();
1387 chkLineOrientationDependent->setEnabled( offline );
1388 mPlacementDistanceFrame->setEnabled( offline );
1392 showMaxCharAngleFrame = isCurved;
1394 enableMultiLinesFrame = !isCurved;
1399 showDistanceFrame =
true;
1402 mPlacementLineFrame->setVisible( showLineFrame );
1403 mPlacementPolygonFrame->setVisible( showPolygonPlacementOptions );
1404 mPlacementCentroidFrame->setVisible( showCentroidFrame );
1405 mPlacementQuadrantFrame->setVisible( showQuadrantFrame );
1406 mPlacementFixedQuadrantFrame->setVisible( showFixedQuadrantFrame );
1407 mPlacementCartographicFrame->setVisible( showPlacementPriorityFrame );
1408 mPlacementOffsetFrame->setVisible( showOffsetFrame );
1409 mPlacementDistanceFrame->setVisible( showDistanceFrame );
1410 mPlacementOffsetTypeFrame->setVisible( showOffsetTypeFrame );
1411 mPlacementRotationFrame->setVisible( showRotationFrame );
1416 mPlacementMaxCharAngleFrame->setVisible( showMaxCharAngleFrame );
1418 mMultiLinesFrame->setEnabled( enableMultiLinesFrame );
1422 switch ( currentPlacement )
1426 helperText = tr(
"Arranges label candidates in a clockwise circle around the feature, preferring placements to the top-right of the feature." );
1428 helperText = tr(
"Arranges label candidates in a cluster around the feature's centroid, preferring placements directly over the centroid." );
1432 helperText = tr(
"Arranges label candidates directly over the feature or at a preset offset from the feature." );
1434 helperText = tr(
"Arranges label candidates directly over the feature's centroid, or at a preset offset from the centroid." );
1438 helperText = tr(
"Arranges label candidates parallel to a generalised line representing the feature. Placements which fall over straighter portions of the line are preferred." );
1440 helperText = tr(
"Arranges label candidates parallel to a generalised line representing the polygon's perimeter. Placements which fall over straighter portions of the perimeter are preferred." );
1444 helperText = tr(
"Arranges candidates following the curvature of a line feature. Placements which fall over straighter portions of the line are preferred." );
1448 helperText = tr(
"Arranges label candidates scattered throughout the polygon. Labels will always be placed horizontally, with placements further from the edges of the polygon preferred." );
1450 helperText = tr(
"Label candidates are arranged horizontally along the length of the feature." );
1454 helperText = tr(
"Arranges label candidates scattered throughout the polygon. Labels are rotated to respect the polygon's orientation, with placements further from the edges of the polygon preferred." );
1458 helperText = tr(
"Label candidates are placed in predefined positions around the features. Preference is given to positions with greatest cartographic appeal, e.g., top right and bottom right of the feature." );
1462 helperText = tr(
"Arranges candidates following the curvature of the feature's perimeter. Placements which fall over straighter portions of the perimeter are preferred." );
1466 helperText = tr(
"Label candidates are placed outside of the features, preferring placements which give greatest visual association between the label and the feature." );
1469 mPlacementModeDescriptionLabel->setText( QStringLiteral(
"<i>%1</i>" ).arg( helperText ) );
1472void QgsTextFormatWidget::populateFontCapitalsComboBox()
1477#if defined(HAS_KDE_QT5_SMALL_CAPS_FIX) || QT_VERSION >= QT_VERSION_CHECK(6, 3, 0)
1487void QgsTextFormatWidget::populateFontStyleComboBox()
1489 mFontStyleComboBox->clear();
1490 const QStringList styles = mFontDB.styles( mRefFont.family() );
1491 const auto constStyles = styles;
1492 for (
const QString &style : constStyles )
1494 mFontStyleComboBox->addItem( style );
1497 QString targetStyle = mFontDB.styleString( mRefFont );
1498 if ( !styles.contains( targetStyle ) )
1501 targetStyle = QFontInfo( f ).styleName();
1502 mRefFont.setStyleName( targetStyle );
1505 const int stylIndx = mFontStyleComboBox->findText( targetStyle );
1506 if ( stylIndx > -1 )
1511 mFontStyleComboBox->setCurrentIndex( curIndx );
1514void QgsTextFormatWidget::mFontSizeSpinBox_valueChanged(
double d )
1516 mRefFont.setPointSizeF( d );
1517 updateFont( mRefFont );
1520void QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged(
const QFont &f )
1523 updateFont( mRefFont );
1526void QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged(
const QString &text )
1529 updateFont( mRefFont );
1532void QgsTextFormatWidget::mFontUnderlineBtn_toggled(
bool ckd )
1534 mRefFont.setUnderline( ckd );
1535 updateFont( mRefFont );
1538void QgsTextFormatWidget::mFontStrikethroughBtn_toggled(
bool ckd )
1540 mRefFont.setStrikeOut( ckd );
1541 updateFont( mRefFont );
1544void QgsTextFormatWidget::kerningToggled(
bool checked )
1546 mRefFont.setKerning( checked );
1547 updateFont( mRefFont );
1550void QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged(
double spacing )
1552 mRefFont.setWordSpacing( spacing );
1553 updateFont( mRefFont );
1556void QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged(
double spacing )
1558 mRefFont.setLetterSpacing( QFont::AbsoluteSpacing, spacing );
1559 updateFont( mRefFont );
1562void QgsTextFormatWidget::mFontSizeUnitWidget_changed()
1567 mFontLimitPixelChkBox->setChecked(
false );
1573 mFontLimitPixelChkBox->setChecked(
true );
1575 updateFont( mRefFont );
1578void QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged(
int px )
1581 mFontMaxPixelSpinBox->setMinimum( px );
1582 mFontMaxPixelSpinBox->update();
1585void QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged(
int px )
1588 if ( px < mFontMinPixelSpinBox->value() )
1590 mFontMaxPixelSpinBox->blockSignals(
true );
1591 mFontMaxPixelSpinBox->setValue( mFontMinPixelSpinBox->value() );
1592 mFontMaxPixelSpinBox->blockSignals(
false );
1594 mFontMaxPixelSpinBox->setMinimum( mFontMinPixelSpinBox->value() );
1597void QgsTextFormatWidget::mBufferUnitWidget_changed()
1599 updateFont( mRefFont );
1602void QgsTextFormatWidget::mMaskBufferUnitWidget_changed()
1604 updateFont( mRefFont );
1607void QgsTextFormatWidget::mCoordXDDBtn_changed()
1609 updateDataDefinedAlignment();
1612void QgsTextFormatWidget::mCoordXDDBtn_activated(
bool isActive )
1617 mCoordPointDDBtn->setActive(
false );
1620void QgsTextFormatWidget::mCoordYDDBtn_changed()
1622 updateDataDefinedAlignment();
1625void QgsTextFormatWidget::mCoordYDDBtn_activated(
bool isActive )
1630 mCoordPointDDBtn->setActive(
false );
1633void QgsTextFormatWidget::mCoordPointDDBtn_changed()
1635 updateDataDefinedAlignment();
1638void QgsTextFormatWidget::mCoordPointDDBtn_activated(
bool isActive )
1643 mCoordXDDBtn->setActive(
false );
1644 mCoordYDDBtn->setActive(
false );
1647void QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged(
int )
1655 showBackgroundRadius( isRect );
1657 mShapeSVGPathFrame->setVisible( isSVG );
1658 mBackgroundMarkerSymbolButton->setVisible( isMarker );
1659 mBackgroundFillSymbolButton->setVisible( !isSVG && !isMarker );
1663 mShapeSizeYLabel->setVisible( !isSVG && !isMarker );
1664 mShapeSizeYSpnBx->setVisible( !isSVG && !isMarker );
1665 mShapeSizeYDDBtn->setVisible( !isSVG && !isMarker );
1666 mShapeSizeXLabel->setText( tr(
"Size%1" ).arg( !isSVG && !isMarker ? tr(
" X" ) : QString() ) );
1669 mShapeFillColorBtn->setAllowOpacity( !isSVG );
1670 mShapeFillColorBtn->setButtonBackground();
1671 mShapeStrokeColorBtn->setAllowOpacity( !isSVG );
1672 mShapeStrokeColorBtn->setButtonBackground();
1675 mShapeFillColorLabel->setVisible( isSVG );
1676 mShapeFillColorLabel->setEnabled( isSVG );
1677 mShapeFillColorBtn->setVisible( isSVG );
1678 mShapeFillColorBtn->setEnabled( isSVG );
1679 mShapeFillColorDDBtn->setVisible( isSVG );
1680 mShapeFillColorDDBtn->setEnabled( isSVG );
1681 mShapeStrokeColorLabel->setVisible( isSVG );
1682 mShapeStrokeColorLabel->setEnabled( isSVG );
1683 mShapeStrokeColorBtn->setVisible( isSVG );
1684 mShapeStrokeColorBtn->setEnabled( isSVG );
1685 mShapeStrokeColorDDBtn->setVisible( isSVG );
1686 mShapeStrokeColorDDBtn->setEnabled( isSVG );
1687 mShapeStrokeWidthLabel->setVisible( isSVG );
1688 mShapeStrokeWidthLabel->setEnabled( isSVG );
1689 mShapeStrokeWidthSpnBx->setVisible( isSVG );
1690 mShapeStrokeWidthSpnBx->setEnabled( isSVG );
1691 mShapeStrokeWidthDDBtn->setVisible( isSVG );
1692 mShapeStrokeWidthDDBtn->setEnabled( isSVG );
1695 mShapeSVGParamsBtn->setVisible( isSVG );
1698 updateSvgWidgets( mShapeSVGPathLineEdit->text() );
1702 mShapeSVGUnitsLabel->setVisible( isSVG );
1703 mShapeStrokeWidthUnitWidget->setVisible(
false );
1704 mShapeStrokeUnitsDDBtn->setVisible(
false );
1705 mShapeStrokeUnitsDDBtn->setEnabled(
false );
1707 updateAvailableShadowPositions();
1710void QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged(
const QString &text )
1712 updateSvgWidgets( text );
1717 const int numOptionsChecked = ( chkLineAbove->isChecked() ? 1 : 0 ) +
1718 ( chkLineBelow->isChecked() ? 1 : 0 ) +
1719 ( chkLineOn->isChecked() ? 1 : 0 );
1721 if ( numOptionsChecked == 1 )
1724 chkLineAbove->setEnabled( !chkLineAbove->isChecked() );
1725 chkLineBelow->setEnabled( !chkLineBelow->isChecked() );
1726 chkLineOn->setEnabled( !chkLineOn->isChecked() );
1730 chkLineAbove->setEnabled(
true );
1731 chkLineBelow->setEnabled(
true );
1732 chkLineOn->setEnabled(
true );
1742void QgsTextFormatWidget::previewScaleChanged(
double scale )
1744 lblFontPreview->setScale( scale );
1747void QgsTextFormatWidget::updateSvgWidgets(
const QString &svgPath )
1749 if ( mShapeSVGPathLineEdit->text() != svgPath )
1751 mShapeSVGPathLineEdit->setText( svgPath );
1754 QString resolvedPath;
1755 bool validSVG =
true;
1756 if ( ! svgPath.startsWith( QLatin1String(
"base64:" ), Qt::CaseInsensitive ) )
1759 validSVG = QFileInfo::exists( resolvedPath );
1763 resolvedPath = svgPath;
1768 mShapeSVGPathLineEdit->setStyleSheet( !validSVG ? QStringLiteral(
"QLineEdit{ color: rgb(225, 0, 0); }" ) : QString() );
1769 mShapeSVGPathLineEdit->setToolTip( !validSVG ? tr(
"File not found" ) : resolvedPath );
1771 QColor fill, stroke;
1772 double strokeWidth = 0.0;
1773 bool fillParam =
false, strokeParam =
false, strokeWidthParam =
false;
1779 mShapeSVGParamsBtn->setEnabled( validSVG && ( fillParam || strokeParam || strokeWidthParam ) );
1781 mShapeFillColorLabel->setEnabled( validSVG && fillParam );
1782 mShapeFillColorBtn->setEnabled( validSVG && fillParam );
1783 mShapeFillColorDDBtn->setEnabled( validSVG && fillParam );
1784 if ( mLoadSvgParams && validSVG && fillParam )
1785 mShapeFillColorBtn->setColor( fill );
1787 mShapeStrokeColorLabel->setEnabled( validSVG && strokeParam );
1788 mShapeStrokeColorBtn->setEnabled( validSVG && strokeParam );
1789 mShapeStrokeColorDDBtn->setEnabled( validSVG && strokeParam );
1790 if ( mLoadSvgParams && validSVG && strokeParam )
1791 mShapeStrokeColorBtn->setColor( stroke );
1793 mShapeStrokeWidthLabel->setEnabled( validSVG && strokeWidthParam );
1794 mShapeStrokeWidthSpnBx->setEnabled( validSVG && strokeWidthParam );
1795 mShapeStrokeWidthDDBtn->setEnabled( validSVG && strokeWidthParam );
1796 if ( mLoadSvgParams && validSVG && strokeWidthParam )
1797 mShapeStrokeWidthSpnBx->setValue( strokeWidth );
1803 mShapeSVGUnitsLabel->setEnabled( validSVG && strokeWidthParam );
1806void QgsTextFormatWidget::updateAvailableShadowPositions()
1808 if ( mShadowUnderCmbBx->count() == 0
1814 mShadowUnderCmbBx->clear();
1822 mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( currentPlacement ) );
1823 if ( mShadowUnderCmbBx->currentIndex() == -1 )
1824 mShadowUnderCmbBx->setCurrentIndex( 0 );
1828void QgsTextFormatWidget::updateProperty()
1836void QgsTextFormatWidget::createAuxiliaryField()
1868 property.setActive(
true );
1877void QgsTextFormatWidget::updateShapeFrameStatus()
1879 mShapeFrame->setEnabled( mShapeDrawDDBtn->isActive() || mShapeDrawChkBx->isChecked() );
1882void QgsTextFormatWidget::updateBufferFrameStatus()
1884 mBufferFrame->setEnabled( mBufferDrawDDBtn->isActive() || mBufferDrawChkBx->isChecked() );
1887void QgsTextFormatWidget::updateShadowFrameStatus()
1889 mShadowFrame->setEnabled( mShadowDrawDDBtn->isActive() || mShadowDrawChkBx->isChecked() );
1892void QgsTextFormatWidget::updateCalloutFrameStatus()
1894 mCalloutFrame->setEnabled( mCalloutDrawDDBtn->isActive() || mCalloutsDrawCheckBox->isChecked() );
1897void QgsTextFormatWidget::updateDataDefinedAlignment()
1900 mCoordAlignmentFrame->setEnabled( ( mCoordXDDBtn->isActive() && mCoordYDDBtn->isActive() )
1901 || mCoordPointDDBtn->isActive() );
1904void QgsTextFormatWidget::overlapModeChanged()
1906 QString description;
1910 description = tr(
"Overlapping labels will never be placed for the layer, even if it means some labels will be missing. (To see unplaced labels use the \"Show Unplaced Labels\" toolbar action.)" );
1913 description = tr(
"If a label cannot otherwise be placed for a feature then an overlapping label is permitted." );
1916 description = tr(
"Labels from this layer may freely overlap other labels or label obstacles without penalty." );
1920 mOverlapModeDescriptionLabel->setText( QStringLiteral(
"<i>%1</i>" ).arg( description ) );
1925 if ( name.isEmpty() )
1968 saveDlg.
setDefaultTags( mTextFormatsListWidget->currentTagFilter() );
1969 if ( !saveDlg.exec() )
1972 if ( saveDlg.
name().isEmpty() )
1982 const int res = QMessageBox::warning(
this, tr(
"Save Text Format" ),
1983 tr(
"Format with name '%1' already exists. Overwrite?" )
1984 .arg( saveDlg.
name() ),
1985 QMessageBox::Yes | QMessageBox::No );
1986 if ( res != QMessageBox::Yes )
1993 const QStringList symbolTags = saveDlg.
tags().split(
',' );
2000void QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked()
2003 svgDlg.setWindowTitle( tr(
"Select SVG file" ) );
2004 svgDlg.svgSelector()->setSvgPath( mShapeSVGPathLineEdit->text().trimmed() );
2006 if ( svgDlg.exec() == QDialog::Accepted )
2008 const QString svgPath = svgDlg.svgSelector()->currentSvgPath();
2009 if ( !svgPath.isEmpty() )
2011 mShapeSVGPathLineEdit->setText( svgPath );
2017void QgsTextFormatWidget::mShapeSVGParamsBtn_clicked()
2019 const QString svgPath = mShapeSVGPathLineEdit->text();
2020 mLoadSvgParams =
true;
2021 updateSvgWidgets( svgPath );
2022 mLoadSvgParams =
false;
2025void QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged(
int index )
2031void QgsTextFormatWidget::mPreviewTextEdit_textChanged(
const QString &text )
2033 lblFontPreview->setText( text );
2037void QgsTextFormatWidget::mPreviewTextBtn_clicked()
2039 mPreviewTextEdit->setText( QStringLiteral(
"Lorem Ipsum" ) );
2043void QgsTextFormatWidget::mPreviewBackgroundBtn_colorChanged(
const QColor &color )
2048void QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked()
2050 bool gotChar =
false;
2052 const QChar initial = !mDirectSymbLeftLineEdit->text().isEmpty() ? mDirectSymbLeftLineEdit->text().at( 0 ) : QChar();
2053 const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
2058 if ( !dirSymb.isNull() )
2059 mDirectSymbLeftLineEdit->setText( QString( dirSymb ) );
2062void QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked()
2064 bool gotChar =
false;
2065 const QChar initial = !mDirectSymbRightLineEdit->text().isEmpty() ? mDirectSymbRightLineEdit->text().at( 0 ) : QChar();
2066 const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
2071 if ( !dirSymb.isNull() )
2072 mDirectSymbRightLineEdit->setText( QString( dirSymb ) );
2075void QgsTextFormatWidget::chkLineOrientationDependent_toggled(
bool active )
2079 chkLineAbove->setText( tr(
"Left of line" ) );
2080 chkLineBelow->setText( tr(
"Right of line" ) );
2084 chkLineAbove->setText( tr(
"Above line" ) );
2085 chkLineBelow->setText( tr(
"Below line" ) );
2090void QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked()
2105 if ( dlg.exec() == QDialog::Accepted )
2112void QgsTextFormatWidget::showBackgroundRadius(
bool show )
2114 mShapeRadiusLabel->setVisible( show );
2115 mShapeRadiusXDbSpnBx->setVisible( show );
2117 mShapeRadiusYDbSpnBx->setVisible( show );
2119 mShapeRadiusUnitWidget->setVisible( show );
2121 mShapeRadiusDDBtn->setVisible( show );
2122 mShapeRadiusUnitsDDBtn->setVisible( show );
2128 return *lExpressionContext;
2149 if ( mGeometryGeneratorGroupBox->isChecked() )
2163 : QDialog( parent, fl )
2165 setWindowTitle( tr(
"Text Settings" ) );
2168 mFormatWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
2170 QVBoxLayout *layout =
new QVBoxLayout(
this );
2171 layout->addWidget( mFormatWidget );
2173 mButtonBox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, Qt::Horizontal,
this );
2174 layout->addWidget( mButtonBox );
2176 setLayout( layout );
2179 connect( mButtonBox->button( QDialogButtonBox::Ok ), &QAbstractButton::clicked,
this, &QDialog::accept );
2180 connect( mButtonBox->button( QDialogButtonBox::Cancel ), &QAbstractButton::clicked,
this, &QDialog::reject );
2181 connect( mButtonBox->button( QDialogButtonBox::Help ), &QAbstractButton::clicked,
this, &QgsTextFormatDialog::showHelp );
2186 return mFormatWidget->
format();
2189void QgsTextFormatDialog::showHelp()
2191 QgsHelp::openHelp( QStringLiteral(
"style_library/label_settings.html#formatting-the-label-text" ) );
2207 mFormatWidget = qobject_cast< QgsTextFormatWidget * >(
widget() );
2210 if ( !mBlockSignals )
2217 return mFormatWidget->
format();
2222 mBlockSignals =
true;
2224 mBlockSignals =
false;
@ FromPoint
Offset distance applies from point geometry.
@ FromSymbolBounds
Offset distance applies from rendered symbol bounds.
LabelPlacement
Placement modes which determine how label candidates are generated for a feature.
@ OverPoint
Arranges candidates over a point (or centroid of a polygon), or at a preset offset from the point....
@ Curved
Arranges candidates following the curvature of a line feature. Applies to line layers only.
@ AroundPoint
Arranges candidates in a circle around a point (or centroid of a polygon). Applies to point or polygo...
@ Line
Arranges candidates parallel to a generalised line representing the feature or parallel to a polygon'...
@ Free
Arranges candidates scattered throughout a polygon feature. Candidates are rotated to respect the pol...
@ OrderedPositionsAroundPoint
Candidates are placed in predefined positions around a point. Preference is given to positions with g...
@ Horizontal
Arranges horizontal candidates scattered throughout a polygon feature. Applies to polygon layers only...
@ PerimeterCurved
Arranges candidates following the curvature of a polygon's boundary. Applies to polygon layers only.
@ OutsidePolygons
Candidates are placed outside of polygon boundaries. Applies to polygon layers only....
Capitalization
String capitalization options.
@ AllSmallCaps
Force all characters to small caps (since QGIS 3.24)
@ MixedCase
Mixed case, ie no change.
@ AllLowercase
Convert all characters to lowercase.
@ TitleCase
Simple title case conversion - does not fully grammatically parse the text and uses simple rules only...
@ SmallCaps
Mixed case small caps (since QGIS 3.24)
@ ForceFirstLetterToCapital
Convert just the first letter of each word to uppercase, leave the rest untouched.
@ AllUppercase
Convert all characters to uppercase.
TextOrientation
Text orientations.
@ Vertical
Vertically oriented text.
@ RotationBased
Horizontally or vertically oriented text based on rotation (only available for map labeling)
@ Horizontal
Horizontally oriented text.
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
@ Percentage
Percentage of another measurement (e.g., canvas size, feature size)
@ Millimeters
Millimeters.
@ Points
Points (e.g., for font sizes)
@ MetersInMapUnits
Meters value as Map units.
LabelOverlapHandling
Label overlap handling.
@ AllowOverlapAtNoCost
Labels may freely overlap other labels, at no cost.
@ AllowOverlapIfRequired
Avoids overlapping labels when possible, but permit overlaps if labels for features cannot otherwise ...
@ PreventOverlap
Do not allow labels to overlap other labels.
@ FlipUpsideDownLabels
Upside-down labels (90 <= angle < 270) are shown upright.
@ AlwaysAllowUpsideDown
Show upside down for all labels, including dynamic ones.
@ AllowUpsideDownWhenRotationIsDefined
Show upside down when rotation is layer- or data-defined.
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
static QgsSvgCache * svgCache()
Returns the application's SVG cache, used for caching SVG images and handling parameter replacement w...
static QString nameFromProperty(const QgsPropertyDefinition &def, bool joined=false)
Returns the name of the auxiliary field for a property definition.
bool addAuxiliaryField(const QgsPropertyDefinition &definition)
Adds an auxiliary field for the given property.
bool exists(const QgsPropertyDefinition &definition) const
Returns true if the property is stored in the layer already, false otherwise.
A dialog for selecting a single character from a single font.
QChar selectCharacter(bool *gotChar, const QFont &font, const QString &style, QChar initialSelection=QChar())
Opens the dialog modally and returns when the user has selected a character.
A QGIS expression editor based on QScintilla2.
void collapsedStateChanged(bool collapsed)
Signal emitted when groupbox collapsed/expanded state is changed, and when first shown.
A groupbox that collapses/expands when toggled and can save its collapsed and checked states.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
static QgsExpressionContextScope * atlasScope(const QgsLayoutAtlas *atlas)
Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
static QgsExpressionContextScope * mapSettingsScope(const QgsMapSettings &mapSettings)
Creates a new scope which contains variables and functions relating to a QgsMapSettings object.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for the context.
void appendScope(QgsExpressionContextScope *scope)
Appends a scope to the end of the context.
void setHighlightedVariables(const QStringList &variableNames)
Sets the list of variable names within the context intended to be highlighted to the user.
static const QString EXPR_ORIGINAL_VALUE
Inbuilt variable name for value original value variable.
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
QgsFillSymbol * clone() const override
Returns a deep copy of this symbol.
static QFont createFont(const QString &family, int pointSize=-1, int weight=-1, bool italic=false)
Creates a font with the specified family.
static bool fontFamilyMatchOnSystem(const QString &family, QString *chosen=nullptr, bool *match=nullptr)
Check whether font family is on system.
static bool updateFontViaStyle(QFont &f, const QString &fontstyle, bool fallback=false)
Updates font with named style and retain all font properties.
static void setFontFamily(QFont &font, const QString &family)
Sets the family for a font object.
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
static QIcon iconForWkbType(Qgis::WkbType type)
Returns the icon for a vector layer whose geometry type is provided.
@ SymbolLeftRight
Place direction symbols on left/right of label.
@ SymbolAbove
Place direction symbols on above label.
@ SymbolBelow
Place direction symbols on below label.
static void warning(const QString &msg)
Goes to qWarning.
Map canvas is a class for displaying all GIS data types on a canvas.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
Base class for all map layer types.
Qgis::DistanceUnit mapUnits() const
Returns the units of the map's geographical coordinates - used for scale calculation.
double scale() const
Returns the calculated map scale.
A marker symbol type, for rendering Point and MultiPoint geometries.
QgsMarkerSymbol * clone() const override
Returns a deep copy of this symbol.
A dialog to create a new auxiliary layer.
static QgsPaintEffect * defaultStack()
Returns a new effect stack consisting of a sensible selection of default effects.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
Property
Data definable properties.
@ PositionX
X-coordinate data defined label position.
@ LinePlacementOptions
Line placement flags.
@ FontSizeUnit
Font size units.
@ LabelRotation
Label rotation.
@ FontStyle
Font style name.
@ Italic
Use italic style.
@ ShapeOpacity
Shape opacity.
@ AllowDegradedPlacement
Allow degraded label placements (since QGIS 3.26)
@ MaskEnabled
Whether the mask is enabled.
@ PredefinedPositionOrder
@ OverlapHandling
Overlap handling technique (since QGIS 3.26)
@ PositionY
Y-coordinate data defined label position.
@ MaximumScale
Maximum map scale (ie most "zoomed in")
@ Vali
Vertical alignment for data defined label position (Bottom, Base, Half, Cap, Top)
@ MinimumScale
Minimum map scale (ie most "zoomed out")
@ FontStretchFactor
Font stretch factor, since QGIS 3.24.
@ PolygonLabelOutside
Whether labels outside a polygon feature are permitted, or should be forced (since QGIS 3....
@ BufferOpacity
Buffer opacity.
@ MaskJoinStyle
Mask join style.
@ Strikeout
Use strikeout.
@ LabelAllParts
Whether all parts of multi-part features should be labeled.
@ Underline
Use underline.
@ FontBlendMode
Text blend mode.
@ FontCase
Label text case.
@ Hali
Horizontal alignment for data defined label position (Left, Center, Right)
@ MaskOpacity
Mask opacity.
@ OverrunDistance
Distance which labels can extend past either end of linear features.
@ MaskBufferUnit
Mask buffer size unit.
@ FontOpacity
Text opacity.
@ FontWordSpacing
Word spacing.
@ CalloutDraw
Show callout.
@ MaskBufferSize
Mask buffer size.
@ FontLetterSpacing
Letter spacing.
@ ShadowOpacity
Shadow opacity.
@ PositionPoint
Point-coordinate data defined label position.
const QgsTextFormat & format() const
Returns the label text formatting settings, e.g., font settings, buffer settings, etc.
static const QgsPropertiesDefinition & propertyDefinitions()
Returns the labeling property definitions.
QgsStyle * styleAtPath(const QString &path)
Returns a reference to the style database associated with the project with matching file path.
static QgsProject * instance()
Returns the QgsProject singleton instance.
const QgsProjectStyleSettings * styleSettings() const
Returns the project's style settings, which contains settings and properties relating to how a QgsPro...
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
QSet< int > propertyKeys() const final
Returns a list of property keys contained within the collection.
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
bool isActive(int key) const final
Returns true if the collection contains an active property with the specified key.
QgsProperty property(int key) const final
Returns a matching property from the collection, if one exists.
Definition for a property.
A store for object properties.
void setField(const QString &field)
Sets the field name the property references.
This class is a composition of two QSettings instances:
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
bool contains(const QString &key, QgsSettings::Section section=QgsSettings::NoSection) const
Returns true if there exists a setting called key; returns false otherwise.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
A collection of string replacements (specified using QgsStringReplacement objects).
a dialog for setting properties of a newly saved style.
bool isFavorite() const
Returns true if the favorite is checked for the symbol.
QString name() const
Returns the entered name for the new symbol.
void setDefaultTags(const QString &tags)
Sets the default tags for the newly created item.
QString tags() const
Returns any tags entered for the new symbol (as a comma separated value list).
QgsStyle * destinationStyle()
Returns the destination style database.
QgsTextFormat textFormat(const QString &name) const
Returns the text format with the specified name.
QStringList textFormatNames() const
Returns a list of names of text formats in the style.
bool removeTextFormat(const QString &name)
Removes a text format from the style.
StyleEntity
Enum for Entities involved in a style.
@ LabelSettingsEntity
Label settings.
@ TextFormatEntity
Text formats.
@ SmartgroupEntity
Smart groups.
@ Symbol3DEntity
3D symbol entity (since QGIS 3.14)
@ ColorrampEntity
Color ramps.
@ LegendPatchShapeEntity
Legend patch shape (since QGIS 3.14)
static QgsStyle * defaultStyle(bool initialize=true)
Returns the default application-wide style.
QStringList labelSettingsNames() const
Returns a list of names of label settings in the style.
static QgsTextFormat defaultTextFormatForProject(QgsProject *project, QgsStyle::TextFormatContext context=QgsStyle::TextFormatContext::Labeling)
Returns the default text format to use for new text based objects for the specified project,...
bool addTextFormat(const QString &name, const QgsTextFormat &format, bool update=false)
Adds a text format with the specified name to the style.
QgsPalLayerSettings labelSettings(const QString &name) const
Returns the label settings with the specified name.
bool saveTextFormat(const QString &name, const QgsTextFormat &format, bool favorite, const QStringList &tags)
Adds a text format to the database.
A dialog which allows users to specify a list of substitutions to apply to a string,...
void containsParams(const QString &path, bool &hasFillParam, QColor &defaultFillColor, bool &hasStrokeParam, QColor &defaultStrokeColor, bool &hasStrokeWidthParam, double &defaultStrokeWidth, bool blocking=false) const
Tests if an SVG file contains parameters for fill, stroke color, stroke width.
static QString svgSymbolNameToPath(const QString &name, const QgsPathResolver &pathResolver)
Determines an SVG symbol's path from its name.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
QgsExpressionContext * expressionContext() const
Returns the expression context used for the widget, if set.
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget.
static QgsSymbol * defaultSymbol(Qgis::GeometryType geomType)
Returns a new default symbol for the specified geometry type.
Container for settings relating to a text background object.
QgsMapUnitScale strokeWidthMapUnitScale() const
Returns the map unit scale object for the shape stroke width.
void setRadiiUnit(Qgis::RenderUnit units)
Sets the units used for the shape's radii.
void setFillSymbol(QgsFillSymbol *symbol)
Sets the current fill symbol for the background shape.
RotationType rotationType() const
Returns the method used for rotating the background shape.
QString svgFile() const
Returns the absolute path to the background SVG file, if set.
QSizeF size() const
Returns the size of the background shape.
QSizeF radii() const
Returns the radii used for rounding the corners of shapes.
QgsMapUnitScale radiiMapUnitScale() const
Returns the map unit scale object for the shape radii.
void setOpacity(double opacity)
Sets the background shape's opacity.
void setStrokeColor(const QColor &color)
Sets the color used for outlining the background shape.
Qgis::RenderUnit radiiUnit() const
Returns the units used for the shape's radii.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape size.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the background shape.
SizeType
Methods for determining the background shape size.
bool enabled() const
Returns whether the background is enabled.
double opacity() const
Returns the background shape's opacity.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape stroke width.
double rotation() const
Returns the rotation for the background shape, in degrees clockwise.
QColor fillColor() const
Returns the color used for filing the background shape.
void setMarkerSymbol(QgsMarkerSymbol *symbol)
Sets the current marker symbol for the background shape.
void setRadii(QSizeF radii)
Sets the radii used for rounding the corners of shapes.
SizeType sizeType() const
Returns the method used to determine the size of the background shape (e.g., fixed size or buffer aro...
Qgis::RenderUnit strokeWidthUnit() const
Returns the units used for the shape's stroke width.
ShapeType type() const
Returns the type of background shape (e.g., square, ellipse, SVG).
double strokeWidth() const
Returns the width of the shape's stroke (stroke).
void setSizeType(SizeType type)
Sets the method used to determine the size of the background shape (e.g., fixed size or buffer around...
ShapeType
Background shape types.
@ ShapeMarkerSymbol
Marker symbol.
@ ShapeSquare
Square - buffered sizes only.
@ ShapeRectangle
Rectangle.
void setFillColor(const QColor &color)
Sets the color used for filing the background shape.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the background shape.
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units used for the shape's size.
Qgis::RenderUnit offsetUnit() const
Returns the units used for the shape's offset.
QColor strokeColor() const
Returns the color used for outlining the background shape.
void setRotationType(RotationType type)
Sets the method used for rotating the background shape.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape offset.
QgsFillSymbol * fillSymbol() const
Returns the fill symbol to be rendered in the background.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the background shape.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the shape size.
void setType(ShapeType type)
Sets the type of background shape to draw (e.g., square, ellipse, SVG).
Qgis::RenderUnit sizeUnit() const
Returns the units used for the shape's size.
RotationType
Methods for determining the rotation of the background shape.
@ RotationSync
Shape rotation is synced with text rotation.
void setEnabled(bool enabled)
Sets whether the text background will be drawn.
QgsMarkerSymbol * markerSymbol() const
Returns the marker symbol to be rendered in the background.
void setRadiiMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape radii.
void setRotation(double rotation)
Sets the rotation for the background shape, in degrees clockwise.
void setStrokeWidthUnit(Qgis::RenderUnit units)
Sets the units used for the shape's stroke width.
void setOffsetUnit(Qgis::RenderUnit units)
Sets the units used for the shape's offset.
void setOffset(QPointF offset)
Sets the offset used for drawing the background shape.
void setSize(QSizeF size)
Sets the size of the background shape.
const QgsPaintEffect * paintEffect() const
Returns the current paint effect for the background shape.
void setSvgFile(const QString &file)
Sets the path to the background SVG file.
QgsMapUnitScale offsetMapUnitScale() const
Returns the map unit scale object for the shape offset.
void setStrokeWidth(double width)
Sets the width of the shape's stroke (stroke).
QPointF offset() const
Returns the offset used for drawing the background shape.
Container for settings relating to a text buffer.
void setFillBufferInterior(bool fill)
Sets whether the interior of the buffer will be filled in.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the buffer.
Qgis::RenderUnit sizeUnit() const
Returns the units for the buffer size.
Qt::PenJoinStyle joinStyle() const
Returns the buffer join style.
double size() const
Returns the size of the buffer.
void setColor(const QColor &color)
Sets the color for the buffer.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the buffer size.
void setOpacity(double opacity)
Sets the buffer opacity.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the buffer size.
bool enabled() const
Returns whether the buffer is enabled.
double opacity() const
Returns the buffer opacity.
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units used for the buffer size.
bool fillBufferInterior() const
Returns whether the interior of the buffer will be filled in.
void setEnabled(bool enabled)
Sets whether the text buffer will be drawn.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the buffer.
const QgsPaintEffect * paintEffect() const
Returns the current paint effect for the buffer.
QColor color() const
Returns the color of the buffer.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the buffer.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the buffer.
void setSize(double size)
Sets the size of the buffer.
QgsTextFormat format() const
Returns the current formatting settings defined by the widget.
QDialogButtonBox * buttonBox() const
Returns a reference to the dialog's button box.
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the widget is shown, e.g., the associated map canvas and expression context...
QgsTextFormatDialog(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags, QgsMapLayer *layer=nullptr)
Constructor for QgsTextFormatDialog.
void setFormat(const QgsTextFormat &format)
Sets the format to show in the widget.
QgsTextFormatPanelWidget(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, QgsMapLayer *layer=nullptr)
Constructor for QgsTextFormatPanelWidget.
void setDockMode(bool dockMode) override
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
QgsTextFormat format() const
Returns the current formatting settings defined by the widget.
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the widget is shown, e.g., the associated map canvas and expression context...
A widget for customizing text formatting settings.
void updatePlacementWidgets()
Updates label placement options to reflect current state of widget.
QButtonGroup * mUpsidedownBtnGrp
Upside down labels button group.
int mMinPixelLimit
Pixel size font limit.
void setDockMode(bool enabled)
Sets whether the widget should be shown in a compact dock mode.
QgsMapCanvas * mMapCanvas
Associated map canvas.
QgsSymbolWidgetContext context() const
Returns the context in which the widget is shown, e.g., the associated map canvas and expression cont...
QgsTextFormatWidget(const QgsTextFormat &format=QgsTextFormat(), QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, QgsMapLayer *layer=nullptr)
Constructor for QgsTextFormatWidget.
~QgsTextFormatWidget() override
void deactivateField(QgsPalLayerSettings::Property key)
Deactivate a field from data defined properties and update the corresponding button.
void setFormat(const QgsTextFormat &format)
Sets the current formatting settings.
Qgis::GeometryType mGeomType
Geometry type for layer, if known.
QButtonGroup * mDirectSymbBtnGrp
Symbol direction button group.
void updateWidgetForFormat(const QgsTextFormat &format)
Updates the widget's state to reflect the settings in a QgsTextFormat.
QList< QgsSymbolLayerReference > mMaskedSymbolLayers
void widgetChanged()
Emitted when the text format defined by the widget changes.
void setPreviewBackground(const QColor &color)
Sets the background color for the text preview widget.
QButtonGroup * mQuadrantBtnGrp
Quadrant button group.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
QgsSymbolWidgetContext mContext
Context in which widget is shown.
void updateLinePlacementOptions()
Updates line placement options to reflect current state of widget.
void populateDataDefinedButtons()
Sets up connections required for data defined buttons, or updates the existing definition of these bu...
virtual void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the widget is shown, e.g., the associated map canvas and expression context...
void updatePreview()
Updates the text preview.
void auxiliaryFieldCreated()
Emitted when an auxiliary field is created in the widget.
virtual void setFormatFromStyle(const QString &name, QgsStyle::StyleEntity type, const QString &stylePath)
Sets the current text settings from a style entry.
Qgis::GeometryType labelGeometryType() const
Returns the geometry type which will be used by the labeling engine when registering labels for the l...
QgsMapLayer * mLayer
Associated vector layer.
QgsStringReplacementCollection mSubstitutions
Text substitution list.
@ Text
Default mode, show text formatting settings only.
@ Labeling
Show labeling settings in addition to text formatting settings.
virtual void saveFormat()
Saves the current text settings to a style entry.
QgsPropertyCollection mDataDefinedProperties
Data defined properties as defined in the widget.
Container for all settings relating to text rendering.
void setColor(const QColor &color)
Sets the color that text will be rendered in.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the text.
void setSize(double size)
Sets the size for rendered text.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the size.
void setCapitalization(Qgis::Capitalization capitalization)
Sets the text capitalization style.
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the format's property collection, used for data defined overrides.
void setOrientation(Qgis::TextOrientation orientation)
Sets the orientation for the text.
void setFont(const QFont &font)
Sets the font used for rendering text.
double lineHeight() const
Returns the line height for text.
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units for the size of rendered text.
int stretchFactor() const
Returns the text's stretch factor.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the format's property collection, used for data defined overrides.
void setStretchFactor(int factor)
Sets the text's stretch factor.
void setShadow(const QgsTextShadowSettings &shadowSettings)
Sets the text's drop shadow settings.
void setMask(const QgsTextMaskSettings &maskSettings)
Sets the text's masking settings.
bool fontFound() const
Returns true if the specified font was found on the system, or false if the font was not found and a ...
void setPreviewBackgroundColor(const QColor &color)
Sets the background color that text will be rendered on for previews.
void setOpacity(double opacity)
Sets the text's opacity.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the text.
void setAllowHtmlFormatting(bool allow)
Sets whether text should be treated as a HTML document and HTML tags should be used for formatting th...
void setLineHeightUnit(Qgis::RenderUnit unit)
Sets the unit for the line height for text.
Qgis::RenderUnit lineHeightUnit() const
Returns the units for the line height for text.
Qgis::Capitalization capitalization() const
Returns the text capitalization style.
QString resolvedFontFamily() const
Returns the family for the resolved font, ie if the specified font was not found on the system this w...
QgsTextMaskSettings & mask()
Returns a reference to the masking settings.
bool isValid() const
Returns true if the format is valid.
void setBuffer(const QgsTextBufferSettings &bufferSettings)
Sets the text's buffer settings.
QgsTextBackgroundSettings & background()
Returns a reference to the text background settings.
Qgis::RenderUnit sizeUnit() const
Returns the units for the size of rendered text.
bool allowHtmlFormatting() const
Returns true if text should be treated as a HTML document and HTML tags should be used for formatting...
double opacity() const
Returns the text's opacity.
Qgis::TextOrientation orientation() const
Returns the orientation of the text.
QString namedStyle() const
Returns the named style for the font used for rendering text (e.g., "bold").
double size() const
Returns the size for rendered text.
QgsTextShadowSettings & shadow()
Returns a reference to the text drop shadow settings.
void setBackground(const QgsTextBackgroundSettings &backgroundSettings)
Sets the text's background settings.q.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the size.
void setNamedStyle(const QString &style)
Sets the named style for the font used for rendering text.
QColor color() const
Returns the color that text will be rendered in.
QFont font() const
Returns the font used for rendering text.
QColor previewBackgroundColor() const
Returns the background color for text previews.
QgsTextBufferSettings & buffer()
Returns a reference to the text buffer settings.
void setLineHeight(double height)
Sets the line height for text.
Container for settings relating to a selective masking around a text.
void setEnabled(bool)
Returns whether the mask is enabled.
void setMaskedSymbolLayers(const QList< QgsSymbolLayerReference > &maskedLayers)
Sets the symbol layers that will be masked by this buffer.
Qgis::RenderUnit sizeUnit() const
Returns the units for the buffer size.
QList< QgsSymbolLayerReference > maskedSymbolLayers() const
Returns a list of references to symbol layers that are masked by this buffer.
void setSize(double size)
Sets the size of the buffer.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the buffer size.
double size() const
Returns the size of the buffer.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the buffer size.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the mask.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the buffer.
double opacity() const
Returns the mask's opacity.
bool enabled() const
Returns whether the mask is enabled.
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units used for the buffer size.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the mask.
Qt::PenJoinStyle joinStyle() const
Returns the buffer join style.
void setOpacity(double opacity)
Sets the mask's opacity.
Container for settings relating to a text shadow.
int offsetAngle() const
Returns the angle for offsetting the position of the shadow from the text.
void setBlurRadiusMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shadow blur radius.
void setBlurRadiusUnit(Qgis::RenderUnit units)
Sets the units used for the shadow's blur radius.
bool enabled() const
Returns whether the shadow is enabled.
void setOffsetUnit(Qgis::RenderUnit units)
Sets the units used for the shadow's offset.
int scale() const
Returns the scaling used for the drop shadow (in percentage of original size).
Qgis::RenderUnit offsetUnit() const
Returns the units used for the shadow's offset.
void setShadowPlacement(QgsTextShadowSettings::ShadowPlacement placement)
Sets the placement for the drop shadow.
double opacity() const
Returns the shadow's opacity.
QgsMapUnitScale blurRadiusMapUnitScale() const
Returns the map unit scale object for the shadow blur radius.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shadow offset distance.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the drop shadow.
void setColor(const QColor &color)
Sets the color for the drop shadow.
QColor color() const
Returns the color of the drop shadow.
void setOffsetGlobal(bool global)
Sets whether the global shadow offset should be used.
ShadowPlacement
Placement positions for text shadow.
@ ShadowBuffer
Draw shadow under buffer.
@ ShadowShape
Draw shadow under background shape.
@ ShadowLowest
Draw shadow below all text components.
@ ShadowText
Draw shadow under text.
void setScale(int scale)
Sets the scaling used for the drop shadow (in percentage of original size).
void setBlurAlphaOnly(bool alphaOnly)
Sets whether only the alpha channel for the shadow should be blurred.
QgsTextShadowSettings::ShadowPlacement shadowPlacement() const
Returns the placement for the drop shadow.
Qgis::RenderUnit blurRadiusUnit() const
Returns the units used for the shadow's blur radius.
double offsetDistance() const
Returns the distance for offsetting the position of the shadow from the text.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the drop shadow.
void setOffsetDistance(double distance)
Sets the distance for offsetting the position of the shadow from the text.
void setOpacity(double opacity)
Sets the shadow's opacity.
QgsMapUnitScale offsetMapUnitScale() const
Returns the map unit scale object for the shadow offset distance.
bool blurAlphaOnly() const
Returns whether only the alpha channel for the shadow will be blurred.
bool offsetGlobal() const
Returns true if the global shadow offset will be used.
void setOffsetAngle(int angle)
Sets the angle for offsetting the position of the shadow from the text.
double blurRadius() const
Returns the blur radius for the shadow.
void setBlurRadius(double blurRadius)
Sets the blur radius for the shadow.
void setEnabled(bool enabled)
Sets whether the text shadow will be drawn.
QList< Qgis::RenderUnit > RenderUnitList
List of render units.
Represents a vector layer which manages a vector based data sets.
QgsAuxiliaryLayer * auxiliaryLayer()
Returns the current auxiliary layer.
Q_INVOKABLE Qgis::GeometryType geometryType() const
Returns point, line or polygon.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.