43 #include <QButtonGroup>
44 #include <QMessageBox>
48 , mMapCanvas( mapCanvas )
52 setWidgetMode(
Text );
59 , mMapCanvas( mapCanvas )
66 setWidgetMode( mode );
69 void QgsTextFormatWidget::initWidget()
73 mGeometryGeneratorGroupBox->setCollapsed(
true );
75 connect( mShapeSVGPathLineEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged );
76 connect( mFontSizeSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontSizeSpinBox_valueChanged );
77 connect( mFontFamilyCmbBx, &QFontComboBox::currentFontChanged,
this, &QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged );
78 connect( mFontStyleComboBox, &QComboBox::currentTextChanged,
this, &QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged );
79 connect( mFontUnderlineBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontUnderlineBtn_toggled );
80 connect( mFontStrikethroughBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontStrikethroughBtn_toggled );
81 connect( mFontWordSpacingSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged );
82 connect( mFontLetterSpacingSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged );
84 connect( mFontMinPixelSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged );
85 connect( mFontMaxPixelSpinBox,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged );
90 connect( mShapeTypeCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged );
91 connect( mShapeRotationCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged );
92 connect( mShapeSVGParamsBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGParamsBtn_clicked );
93 connect( mShapeSVGSelectorBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked );
94 connect( mPreviewTextEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mPreviewTextEdit_textChanged );
95 connect( mPreviewTextBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mPreviewTextBtn_clicked );
97 connect( mDirectSymbLeftToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked );
98 connect( mDirectSymbRightToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked );
99 connect( chkLineOrientationDependent, &QCheckBox::toggled,
this, &QgsTextFormatWidget::chkLineOrientationDependent_toggled );
100 connect( mToolButtonConfigureSubstitutes, &QToolButton::clicked,
this, &QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked );
101 connect( mKerningCheckBox, &QCheckBox::toggled,
this, &QgsTextFormatWidget::kerningToggled );
111 mPreviewTextBtn->setIconSize( QSize( iconSize16, iconSize16 ) );
112 mPointOffsetAboveLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
113 mPointOffsetAbove->setIconSize( QSize( iconSize32, iconSize18 ) );
114 mPointOffsetAboveRight->setIconSize( QSize( iconSize32, iconSize18 ) );
115 mPointOffsetLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
116 mPointOffsetOver ->setIconSize( QSize( iconSize32, iconSize18 ) );
117 mPointOffsetRight->setIconSize( QSize( iconSize32, iconSize18 ) );
118 mPointOffsetBelowLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
119 mPointOffsetBelow->setIconSize( QSize( iconSize32, iconSize18 ) );
120 mPointOffsetBelowRight->setIconSize( QSize( iconSize32, iconSize18 ) );
121 mLabelMinScale->setPixmap(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionZoomOut.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
122 mLabelMaxScale->setPixmap(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionZoomIn.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
125 mFontUnderlineBtn->setMinimumSize( buttonSize, buttonSize );
126 mFontUnderlineBtn->setMaximumSize( buttonSize, buttonSize );
127 mFontStrikethroughBtn->setMinimumSize( buttonSize, buttonSize );
128 mFontStrikethroughBtn->setMaximumSize( buttonSize, buttonSize );
129 mFontBoldBtn->setMinimumSize( buttonSize, buttonSize );
130 mFontBoldBtn->setMaximumSize( buttonSize, buttonSize );
131 mFontItalicBtn->setMinimumSize( buttonSize, buttonSize );
132 mFontItalicBtn->setMaximumSize( buttonSize, buttonSize );
134 mPreviewScaleComboBox->setMapCanvas(
mMapCanvas );
135 mPreviewScaleComboBox->setShowCurrentScaleButton(
true );
138 const auto unitWidgets = findChildren<QgsUnitSelectionWidget *>();
169 mFontLineHeightSpinBox->setClearValue( 1.0 );
170 mShapeRotationDblSpnBx->setClearValue( 0.0 );
171 mShapeOffsetXSpnBx->setClearValue( 0.0 );
172 mShapeOffsetYSpnBx->setClearValue( 0.0 );
173 mPointOffsetXSpinBox->setClearValue( 0.0 );
174 mPointOffsetYSpinBox->setClearValue( 0.0 );
175 mPointAngleSpinBox->setClearValue( 0.0 );
176 mFontLetterSpacingSpinBox->setClearValue( 0.0 );
177 mFontWordSpacingSpinBox->setClearValue( 0.0 );
178 mZIndexSpinBox->setClearValue( 0.0 );
179 mLineDistanceSpnBx->setClearValue( 0.0 );
191 updateAvailableShadowPositions();
194 mBackgroundMarkerSymbolButton->setDialogTitle( tr(
"Background Symbol" ) );
195 mBackgroundMarkerSymbolButton->registerExpressionContextGenerator(
this );
196 mBackgroundMarkerSymbolButton->setMapCanvas(
mMapCanvas );
198 mBackgroundFillSymbolButton->setDialogTitle( tr(
"Background Symbol" ) );
199 mBackgroundFillSymbolButton->registerExpressionContextGenerator(
this );
200 mBackgroundFillSymbolButton->setMapCanvas(
mMapCanvas );
204 mRefFont = lblFontPreview->font();
207 connect( mShadowOffsetAngleDial, &QAbstractSlider::valueChanged, mShadowOffsetAngleSpnBx, &QSpinBox::setValue );
208 connect( mShadowOffsetAngleSpnBx,
static_cast < void ( QSpinBox::* )(
int )
> ( &QSpinBox::valueChanged ), mShadowOffsetAngleDial, &QAbstractSlider::setValue );
209 connect( mLimitLabelChkBox, &QAbstractButton::toggled, mLimitLabelSpinBox, &QWidget::setEnabled );
210 connect( mCheckBoxSubstituteText, &QAbstractButton::toggled, mToolButtonConfigureSubstitutes, &QWidget::setEnabled );
220 populateFontCapitalsComboBox();
223 mPreviewBackgroundBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
224 mPreviewBackgroundBtn->setContext( QStringLiteral(
"labeling" ) );
225 mPreviewBackgroundBtn->setColor( QColor( 255, 255, 255 ) );
226 btnTextColor->setColorDialogTitle( tr(
"Select Text Color" ) );
227 btnTextColor->setContext( QStringLiteral(
"labeling" ) );
228 btnTextColor->setDefaultColor( Qt::black );
229 btnBufferColor->setColorDialogTitle( tr(
"Select Buffer Color" ) );
230 btnBufferColor->setContext( QStringLiteral(
"labeling" ) );
231 btnBufferColor->setDefaultColor( Qt::white );
232 mShapeStrokeColorBtn->setColorDialogTitle( tr(
"Select Stroke Color" ) );
233 mShapeStrokeColorBtn->setContext( QStringLiteral(
"labeling" ) );
234 mShapeFillColorBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
235 mShapeFillColorBtn->setContext( QStringLiteral(
"labeling" ) );
236 mShadowColorBtn->setColorDialogTitle( tr(
"Select Shadow Color" ) );
237 mShadowColorBtn->setContext( QStringLiteral(
"labeling" ) );
238 mShadowColorBtn->setDefaultColor( Qt::black );
240 mFontColorDDBtn->registerLinkedWidget( btnTextColor );
241 mBufferColorDDBtn->registerLinkedWidget( btnBufferColor );
242 mShapeStrokeColorDDBtn->registerLinkedWidget( mShapeStrokeColorBtn );
243 mShapeFillColorDDBtn->registerLinkedWidget( mShapeFillColorBtn );
244 mShadowColorDDBtn->registerLinkedWidget( mShadowColorBtn );
285 const auto groupBoxes = findChildren<QgsCollapsibleGroupBox *>();
288 grpbox->setSettingGroup( QStringLiteral(
"mAdvLabelingDlg" ) );
294 mLabelingOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect,
false );
299 QSizePolicy policy( mLabelingOptionsListFrame->sizePolicy() );
300 policy.setHorizontalStretch( 0 );
301 mLabelingOptionsListFrame->setSizePolicy( policy );
302 if ( !settings.
contains( QStringLiteral(
"/Windows/Labeling/OptionsSplitState" ) ) )
305 QList<int> splitsizes;
307 mLabelingOptionsSplitter->setSizes( splitsizes );
311 connect( mLabelStackedWidget, &QStackedWidget::currentChanged,
this, &QgsTextFormatWidget::optionsStackedWidget_CurrentChanged );
314 mFontPreviewSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ) ).toByteArray() );
315 mLabelingOptionsSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ) ).toByteArray() );
317 mLabelingOptionsListWidget->setCurrentRow( settings.
value( QStringLiteral(
"Windows/Labeling/Tab" ), 0 ).toInt() );
321 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
325 mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
329 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
333 QList<QWidget *> widgets;
334 widgets << btnBufferColor
336 << chkLabelPerFeaturePart
340 << chkLineOrientationDependent
342 << chkPreserveRotation
344 << comboBufferBlendMode
346 << mBufferJoinStyleComboBox
347 << mBufferTranspFillChbx
348 << mBufferOpacityWidget
349 << mCentroidInsideCheckBox
351 << mCoordRotationUnitComboBox
353 << mDirectSymbLeftLineEdit
354 << mDirectSymbRevChkBx
355 << mDirectSymbRightLineEdit
356 << mFitInsidePolygonCheckBox
357 << mFontCapitalsComboBox
358 << mFontLetterSpacingSpinBox
359 << mFontLimitPixelChkBox
360 << mFontLineHeightSpinBox
361 << mFontMaxPixelSpinBox
362 << mFontMinPixelSpinBox
363 << mFontMultiLineAlignComboBox
365 << mFontStyleComboBox
366 << mTextOrientationComboBox
367 << mTextOpacityWidget
368 << mFontWordSpacingSpinBox
370 << mFormatNumDecimalsSpnBx
371 << mFormatNumPlusSignChkBx
373 << mLimitLabelSpinBox
374 << mLineDistanceSpnBx
375 << mLineDistanceUnitWidget
376 << mMaxCharAngleInDSpinBox
377 << mMaxCharAngleOutDSpinBox
379 << mOffsetTypeComboBox
380 << mPalShowAllLabelsForLayerChkBx
381 << mPointAngleSpinBox
382 << mPointOffsetUnitWidget
383 << mPointOffsetXSpinBox
384 << mPointOffsetYSpinBox
385 << mPreviewBackgroundBtn
388 << mRepeatDistanceSpinBox
389 << mRepeatDistanceUnitWidget
390 << mOverrunDistanceSpinBox
391 << mOverrunDistanceUnitWidget
392 << mScaleBasedVisibilityChkBx
398 << mShadowOffsetAngleSpnBx
399 << mShadowOffsetGlobalChkBx
400 << mShadowOffsetSpnBx
401 << mShadowOffsetUnitWidget
402 << mShadowRadiusAlphaChkBx
403 << mShadowRadiusDblSpnBx
404 << mShadowRadiusUnitWidget
406 << mShadowOpacityWidget
409 << mShapeStrokeColorBtn
410 << mShapeStrokeWidthSpnBx
411 << mShapeStrokeWidthUnitWidget
413 << mShapeFillColorBtn
414 << mShapeOffsetXSpnBx
415 << mShapeOffsetYSpnBx
416 << mShapeOffsetUnitWidget
417 << mShapeRadiusXDbSpnBx
418 << mShapeRadiusYDbSpnBx
419 << mShapeRotationCmbBx
420 << mShapeRotationDblSpnBx
421 << mShapeRadiusUnitWidget
422 << mShapeSVGPathLineEdit
424 << mShapeSizeUnitWidget
427 << mBackgroundOpacityWidget
432 << mAutoWrapLengthSpinBox
433 << mAutoWrapTypeComboBox
434 << mCentroidRadioVisible
435 << mCentroidRadioWhole
436 << mDirectSymbRadioBtnAbove
437 << mDirectSymbRadioBtnBelow
438 << mDirectSymbRadioBtnLR
439 << mUpsidedownRadioAll
440 << mUpsidedownRadioDefined
441 << mUpsidedownRadioOff
442 << mPlacementModeComboBox
443 << mFieldExpressionWidget
444 << mCheckBoxSubstituteText
445 << mGeometryGeneratorGroupBox
446 << mGeometryGenerator
447 << mGeometryGeneratorType
448 << mBackgroundMarkerSymbolButton
449 << mBackgroundFillSymbolButton
450 << mCalloutsDrawCheckBox
451 << mCalloutStyleComboBox
454 << mMaskJoinStyleComboBox
455 << mMaskBufferSizeSpinBox
456 << mMaskOpacityWidget
457 << mCheckAllowLabelsOutsidePolygons
458 << mHtmlFormattingCheckBox;
465 connect( mBufferDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
467 updateBufferFrameStatus();
470 connect( mShapeDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
472 updateShapeFrameStatus();
475 connect( mShadowDrawChkBx, &QCheckBox::stateChanged,
this, [ = ](
int )
477 updateShadowFrameStatus();
480 connect( mCalloutsDrawCheckBox, &QCheckBox::stateChanged,
this, [ = ](
int )
482 updateCalloutFrameStatus();
490 whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() );
491 mOptionsTab->tabBar()->setUsesScrollButtons(
true );
512 toggleDDButtons(
true );
519 const int prevIndex = mOptionsTab->currentIndex();
520 toggleDDButtons(
true );
521 delete mLabelingOptionsListWidget->takeItem( 8 );
522 delete mLabelingOptionsListWidget->takeItem( 7 );
523 delete mLabelingOptionsListWidget->takeItem( 6 );
524 delete mLabelingOptionsListWidget->takeItem( 3 );
525 mOptionsTab->removeTab( 8 );
526 mOptionsTab->removeTab( 7 );
527 mOptionsTab->removeTab( 6 );
528 mOptionsTab->removeTab( 3 );
529 mLabelStackedWidget->removeWidget( mLabelPage_Rendering );
530 mLabelStackedWidget->removeWidget( mLabelPage_Callouts );
531 mLabelStackedWidget->removeWidget( mLabelPage_Mask );
532 mLabelStackedWidget->removeWidget( mLabelPage_Placement );
542 mLabelStackedWidget->setCurrentIndex( prevIndex - 1 );
543 mOptionsTab->setCurrentIndex( prevIndex - 1 );
550 mLabelStackedWidget->setCurrentIndex( 0 );
551 mOptionsTab->setCurrentIndex( 0 );
555 frameLabelWith->hide();
556 mDirectSymbolsFrame->hide();
557 mFormatNumFrame->hide();
558 mFormatNumChkBx->hide();
559 mFormatNumDDBtn->hide();
560 mCheckBoxSubstituteText->hide();
561 mToolButtonConfigureSubstitutes->hide();
562 mLabelWrapOnCharacter->hide();
563 wrapCharacterEdit->hide();
564 mWrapCharDDBtn->hide();
565 mLabelWrapLinesTo->hide();
566 mAutoWrapLengthSpinBox->hide();
567 mAutoWrapLengthDDBtn->hide();
568 mAutoWrapTypeComboBox->hide();
569 mFontMultiLineLabel->hide();
570 mFontMultiLineAlignComboBox->hide();
571 mFontMultiLineAlignDDBtn->hide();
579 void QgsTextFormatWidget::toggleDDButtons(
bool visible )
581 const auto buttons = findChildren< QgsPropertyOverrideButton * >();
584 button->setVisible( visible );
590 mOptionsTab->setVisible( enabled );
591 mOptionsTab->setTabToolTip( 0, tr(
"Text" ) );
592 mOptionsTab->setTabToolTip( 1, tr(
"Formatting" ) );
593 mOptionsTab->setTabToolTip( 2, tr(
"Buffer" ) );
594 mOptionsTab->setTabToolTip( 3, tr(
"Mask" ) );
595 mOptionsTab->setTabToolTip( 4, tr(
"Background" ) );
596 mOptionsTab->setTabToolTip( 5, tr(
"Shadow" ) );
597 mOptionsTab->setTabToolTip( 6, tr(
"Callouts" ) );
598 mOptionsTab->setTabToolTip( 7, tr(
"Placement" ) );
599 mOptionsTab->setTabToolTip( 8, tr(
"Rendering" ) );
601 mLabelingOptionsListFrame->setVisible( !enabled );
602 groupBox_mPreview->setVisible( !enabled );
606 void QgsTextFormatWidget::connectValueChanged(
const QList<QWidget *> &widgets,
const char *slot )
608 const auto constWidgets = widgets;
609 for ( QWidget *widget : constWidgets )
613 connect( w, SIGNAL( changed() ),
this, slot );
617 connect( w, SIGNAL( fieldChanged( QString ) ),
this, slot );
619 else if (
QgsOpacityWidget *w = qobject_cast< QgsOpacityWidget *>( widget ) )
621 connect( w, SIGNAL( opacityChanged(
double ) ),
this, slot );
623 else if (
QgsScaleWidget *w = qobject_cast< QgsScaleWidget *>( widget ) )
625 connect( w, SIGNAL( scaleChanged(
double ) ),
this, slot );
629 connect( w, SIGNAL( changed() ),
this, slot );
631 else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
633 connect( w, SIGNAL( currentIndexChanged(
int ) ),
this, slot );
635 else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
637 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
639 else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
641 connect( w, SIGNAL( valueChanged(
double ) ),
this, slot );
643 else if (
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
645 connect( w, SIGNAL( colorChanged( QColor ) ),
this, slot );
647 else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
649 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
651 else if ( QRadioButton *w = qobject_cast<QRadioButton *>( widget ) )
653 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
655 else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
657 connect( w, SIGNAL( textEdited( QString ) ),
this, slot );
659 else if ( QSlider *w = qobject_cast<QSlider *>( widget ) )
661 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
663 else if ( QGroupBox *w = qobject_cast<QGroupBox *>( widget ) )
665 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
669 connect( w, SIGNAL( textChanged() ),
this, slot );
673 QgsLogger::warning( QStringLiteral(
"Could not create connection for widget %1" ).arg( widget->objectName() ) );
704 mDirectSymbDDBtn->registerCheckedWidget( mDirectSymbChkBx );
712 mFormatNumDDBtn->registerCheckedWidget( mFormatNumChkBx );
727 mEnableMaskDDBtn->registerCheckedWidget( mEnableMaskChkBx );
735 mShapeDrawDDBtn->registerCheckedWidget( mShapeDrawChkBx );
757 mShadowDrawDDBtn->registerCheckedWidget( mShadowDrawChkBx );
797 const QString ddScaleVisInfo = tr(
"Value < 0 represents a scale closer than 1:1, e.g. -10 = 10:1<br>"
798 "Value of 0 disables the specific limit." );
800 mScaleBasedVisibilityDDBtn->registerCheckedWidget( mScaleBasedVisibilityChkBx );
802 mScaleBasedVisibilityMinDDBtn->setUsageInfo( ddScaleVisInfo );
804 mScaleBasedVisibilityMaxDDBtn->setUsageInfo( ddScaleVisInfo );
807 mFontLimitPixelDDBtn->registerCheckedWidget( mFontLimitPixelChkBox );
826 if ( !mButtons.contains( key ) )
831 mButtons[key] = button;
848 mBufferDrawChkBx->setChecked( buffer.
enabled() );
849 mBufferFrame->setEnabled( buffer.
enabled() );
850 spinBufferSize->setValue( buffer.
size() );
851 mBufferUnitWidget->setUnit( buffer.
sizeUnit() );
853 btnBufferColor->setColor( buffer.
color() );
854 mBufferOpacityWidget->setOpacity( buffer.
opacity() );
855 mBufferJoinStyleComboBox->setPenJoinStyle( buffer.
joinStyle() );
857 comboBufferBlendMode->setBlendMode( buffer.
blendMode() );
859 mBufferEffect.reset( lPaintEffect->clone() );
863 mBufferEffect->setEnabled(
false );
865 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
869 mEnableMaskChkBx->setChecked( mask.
enabled() );
870 mMaskBufferSizeSpinBox->setValue( mask.
size() );
871 mMaskBufferUnitWidget->setUnit( mask.
sizeUnit() );
873 mMaskOpacityWidget->setOpacity( mask.
opacity() );
874 mMaskJoinStyleComboBox->setPenJoinStyle( mask.
joinStyle() );
876 mMaskEffect.reset( lPaintEffect->clone() );
880 mMaskEffect->setEnabled(
false );
882 mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
891 mTextOrientationComboBox->setCurrentIndex( mTextOrientationComboBox->findData(
format.
orientation() ) );
894 mFontWordSpacingSpinBox->setValue(
format.
font().wordSpacing() );
895 mFontLetterSpacingSpinBox->setValue(
format.
font().letterSpacing() );
900 updateFont( mRefFont );
906 const QString missingTxt = tr(
"%1 not found. Default substituted." );
907 QString txtPrepend = tr(
"Chosen font" );
912 mFontMissingLabel->setText( missingTxt.arg( txtPrepend ) );
915 mLabelingOptionsListWidget->setCurrentRow( 0 );
921 mShapeDrawChkBx->setChecked( background.
enabled() );
922 mShapeFrame->setEnabled( background.
enabled() );
923 mShapeTypeCmbBx->blockSignals(
true );
924 mShapeTypeCmbBx->setCurrentIndex( mShapeTypeCmbBx->findData( background.
type() ) );
925 mShapeTypeCmbBx->blockSignals(
false );
926 updateAvailableShadowPositions();
927 mShapeSVGPathLineEdit->setText( background.
svgFile() );
929 mShapeSizeCmbBx->setCurrentIndex( background.
sizeType() );
930 mShapeSizeXSpnBx->setValue( background.
size().width() );
931 mShapeSizeYSpnBx->setValue( background.
size().height() );
932 mShapeSizeUnitWidget->setUnit( background.
sizeUnit() );
934 mShapeRotationCmbBx->setCurrentIndex( background.
rotationType() );
937 mShapeRotationDblSpnBx->setValue( background.
rotation() );
938 mShapeOffsetXSpnBx->setValue( background.
offset().x() );
939 mShapeOffsetYSpnBx->setValue( background.
offset().y() );
940 mShapeOffsetUnitWidget->setUnit( background.
offsetUnit() );
942 mShapeRadiusXDbSpnBx->setValue( background.
radii().width() );
943 mShapeRadiusYDbSpnBx->setValue( background.
radii().height() );
944 mShapeRadiusUnitWidget->setUnit( background.
radiiUnit() );
947 mShapeFillColorBtn->setColor( background.
fillColor() );
948 mShapeStrokeColorBtn->setColor( background.
strokeColor() );
949 mShapeStrokeWidthSpnBx->setValue( background.
strokeWidth() );
953 mBackgroundOpacityWidget->setOpacity( background.
opacity() );
954 mShapeBlendCmbBx->setBlendMode( background.
blendMode() );
956 mLoadSvgParams =
false;
957 mShapeTypeCmbBx_currentIndexChanged( background.
type() );
959 if (
auto *lPaintEffect = background.
paintEffect() )
960 mBackgroundEffect.reset( lPaintEffect->clone() );
964 mBackgroundEffect->setEnabled(
false );
966 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
972 mShadowDrawChkBx->setChecked( shadow.
enabled() );
973 mShadowFrame->setEnabled( shadow.
enabled() );
974 mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( shadow.
shadowPlacement() ) );
975 mShadowOffsetAngleSpnBx->setValue( shadow.
offsetAngle() );
977 mShadowOffsetUnitWidget->setUnit( shadow.
offsetUnit() );
979 mShadowOffsetGlobalChkBx->setChecked( shadow.
offsetGlobal() );
981 mShadowRadiusDblSpnBx->setValue( shadow.
blurRadius() );
984 mShadowRadiusAlphaChkBx->setChecked( shadow.
blurAlphaOnly() );
985 mShadowOpacityWidget->setOpacity( shadow.
opacity() );
986 mShadowScaleSpnBx->setValue( shadow.
scale() );
988 mShadowColorBtn->setColor( shadow.
color() );
989 mShadowBlendCmbBx->setBlendMode( shadow.
blendMode() );
1001 settings.
setValue( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ), mFontPreviewSplitter->saveState() );
1002 settings.
setValue( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ), mLabelingOptionsSplitter->saveState() );
1004 int prevIndex = mLabelingOptionsListWidget->currentRow();
1005 if ( mWidgetMode ==
Text )
1007 switch ( prevIndex )
1016 settings.
setValue( QStringLiteral(
"Windows/Labeling/Tab" ), prevIndex );
1038 buffer.
setEnabled( mBufferDrawChkBx->isChecked() );
1039 buffer.
setSize( spinBufferSize->value() );
1040 buffer.
setColor( btnBufferColor->color() );
1041 buffer.
setOpacity( mBufferOpacityWidget->opacity() );
1044 buffer.
setJoinStyle( mBufferJoinStyleComboBox->penJoinStyle() );
1046 buffer.
setBlendMode( comboBufferBlendMode->blendMode() );
1055 mask.
setEnabled( mEnableMaskChkBx->isChecked() );
1056 mask.
setSize( mMaskBufferSizeSpinBox->value() );
1057 mask.
setOpacity( mMaskOpacityWidget->opacity() );
1058 mask.
setSizeUnit( mMaskBufferUnitWidget->unit() );
1060 mask.
setJoinStyle( mMaskJoinStyleComboBox->penJoinStyle() );
1070 background.
setEnabled( mShapeDrawChkBx->isChecked() );
1072 background.
setSvgFile( mShapeSVGPathLineEdit->text() );
1074 background.
setSize( QSizeF( mShapeSizeXSpnBx->value(), mShapeSizeYSpnBx->value() ) );
1075 background.
setSizeUnit( mShapeSizeUnitWidget->unit() );
1078 background.
setRotation( mShapeRotationDblSpnBx->value() );
1079 background.
setOffset( QPointF( mShapeOffsetXSpnBx->value(), mShapeOffsetYSpnBx->value() ) );
1082 background.
setRadii( QSizeF( mShapeRadiusXDbSpnBx->value(), mShapeRadiusYDbSpnBx->value() ) );
1083 background.
setRadiiUnit( mShapeRadiusUnitWidget->unit() );
1086 background.
setFillColor( mShapeFillColorBtn->color() );
1091 background.
setOpacity( mBackgroundOpacityWidget->opacity() );
1092 background.
setBlendMode( mShapeBlendCmbBx->blendMode() );
1103 shadow.
setEnabled( mShadowDrawChkBx->isChecked() );
1114 shadow.
setOpacity( mShadowOpacityWidget->opacity() );
1115 shadow.
setScale( mShadowScaleSpnBx->value() );
1116 shadow.
setColor( mShadowColorBtn->color() );
1120 if ( includeDataDefinedProperties )
1151 if ( mButtons.contains( key ) )
1163 void QgsTextFormatWidget::optionsStackedWidget_CurrentChanged(
int indx )
1165 mLabelingOptionsListWidget->blockSignals(
true );
1166 mLabelingOptionsListWidget->setCurrentRow( indx );
1167 mLabelingOptionsListWidget->blockSignals(
false );
1176 mPreviewExpressionContext = *lExpressionContext;
1181 const auto symbolButtonWidgets = findChildren<QgsSymbolButton *>();
1189 void QgsTextFormatWidget::collapseSample(
bool collapse )
1193 QList<int> splitSizes = mFontPreviewSplitter->sizes();
1194 if ( splitSizes[0] > groupBox_mPreview->height() )
1196 const int delta = splitSizes[0] - groupBox_mPreview->height();
1197 splitSizes[0] -= delta;
1198 splitSizes[1] += delta;
1199 mFontPreviewSplitter->setSizes( splitSizes );
1204 void QgsTextFormatWidget::changeTextColor(
const QColor &color )
1210 void QgsTextFormatWidget::updateFont(
const QFont &font )
1213 if ( font != mRefFont )
1222 mDirectSymbLeftLineEdit->setFont( mRefFont );
1223 mDirectSymbRightLineEdit->setFont( mRefFont );
1225 blockFontChangeSignals(
true );
1226 mFontFamilyCmbBx->setCurrentFont( mRefFont );
1227 populateFontStyleComboBox();
1228 mFontUnderlineBtn->setChecked( mRefFont.underline() );
1229 mFontStrikethroughBtn->setChecked( mRefFont.strikeOut() );
1230 mKerningCheckBox->setChecked( mRefFont.kerning() );
1231 blockFontChangeSignals(
false );
1239 void QgsTextFormatWidget::blockFontChangeSignals(
bool blk )
1241 mFontFamilyCmbBx->blockSignals( blk );
1242 mFontStyleComboBox->blockSignals( blk );
1243 mFontCapitalsComboBox->blockSignals( blk );
1244 mFontUnderlineBtn->blockSignals( blk );
1245 mFontStrikethroughBtn->blockSignals( blk );
1246 mFontWordSpacingSpinBox->blockSignals( blk );
1247 mFontLetterSpacingSpinBox->blockSignals( blk );
1248 mKerningCheckBox->blockSignals( blk );
1263 lblFontPreview->setFormat(
format() );
1266 void QgsTextFormatWidget::scrollPreview()
1268 scrollArea_mPreview->ensureVisible( 0, 0, 0, 0 );
1273 mPreviewBackgroundColor = color;
1275 scrollArea_mPreview->widget()->setStyleSheet( QStringLiteral(
"background: rgb(%1, %2, %3);" ).arg( QString::number( color.red() ),
1276 QString::number( color.green() ),
1277 QString::number( color.blue() ) ) );
1280 void QgsTextFormatWidget::changeBufferColor(
const QColor &color )
1289 bool showLineFrame =
false;
1290 bool showCentroidFrame =
false;
1291 bool showQuadrantFrame =
false;
1292 bool showFixedQuadrantFrame =
false;
1293 bool showPlacementPriorityFrame =
false;
1294 bool showOffsetTypeFrame =
false;
1295 bool showOffsetFrame =
false;
1296 bool showDistanceFrame =
false;
1297 bool showRotationFrame =
false;
1298 bool showMaxCharAngleFrame =
false;
1303 bool enableMultiLinesFrame =
true;
1309 showDistanceFrame =
true;
1317 showQuadrantFrame =
true;
1318 showFixedQuadrantFrame =
true;
1319 showOffsetFrame =
true;
1320 showRotationFrame =
true;
1324 showDistanceFrame =
true;
1325 showPlacementPriorityFrame =
true;
1326 showOffsetTypeFrame =
true;
1333 showLineFrame =
true;
1334 showDistanceFrame =
true;
1337 const bool offline = chkLineAbove->isChecked() || chkLineBelow->isChecked();
1338 chkLineOrientationDependent->setEnabled( offline );
1339 mPlacementDistanceFrame->setEnabled( offline );
1343 showMaxCharAngleFrame = isCurved;
1345 enableMultiLinesFrame = !isCurved;
1350 showDistanceFrame =
true;
1353 mPlacementLineFrame->setVisible( showLineFrame );
1354 mPlacementPolygonFrame->setVisible( showPolygonPlacementOptions );
1355 mPlacementCentroidFrame->setVisible( showCentroidFrame );
1356 mPlacementQuadrantFrame->setVisible( showQuadrantFrame );
1357 mPlacementFixedQuadrantFrame->setVisible( showFixedQuadrantFrame );
1358 mPlacementCartographicFrame->setVisible( showPlacementPriorityFrame );
1359 mPlacementOffsetFrame->setVisible( showOffsetFrame );
1360 mPlacementDistanceFrame->setVisible( showDistanceFrame );
1361 mPlacementOffsetTypeFrame->setVisible( showOffsetTypeFrame );
1362 mPlacementRotationFrame->setVisible( showRotationFrame );
1367 mPlacementMaxCharAngleFrame->setVisible( showMaxCharAngleFrame );
1369 mMultiLinesFrame->setEnabled( enableMultiLinesFrame );
1373 switch ( currentPlacement )
1377 helperText = tr(
"Arranges label candidates in a clockwise circle around the feature, preferring placements to the top-right of the feature." );
1379 helperText = tr(
"Arranges label candidates in a cluster around the feature's centroid, preferring placements directly over the centroid." );
1383 helperText = tr(
"Arranges label candidates directly over the feature or at a preset offset from the feature." );
1385 helperText = tr(
"Arranges label candidates directly over the feature's centroid, or at a preset offset from the centroid." );
1389 helperText = tr(
"Arranges label candidates parallel to a generalised line representing the feature. Placements which fall over straighter portions of the line are preferred." );
1391 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." );
1395 helperText = tr(
"Arranges candidates following the curvature of a line feature. Placements which fall over straighter portions of the line are preferred." );
1399 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." );
1401 helperText = tr(
"Label candidates are arranged horizontally along the length of the feature." );
1405 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." );
1409 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." );
1413 helperText = tr(
"Arranges candidates following the curvature of the feature's perimeter. Placements which fall over straighter portions of the perimeter are preferred." );
1417 helperText = tr(
"Label candidates are placed outside of the features, preferring placements which give greatest visual association between the label and the feature." );
1420 mPlacementModeDescriptionLabel->setText( QStringLiteral(
"<i>%1</i>" ).arg( helperText ) );
1423 void QgsTextFormatWidget::populateFontCapitalsComboBox()
1435 void QgsTextFormatWidget::populateFontStyleComboBox()
1437 mFontStyleComboBox->clear();
1438 const QStringList styles = mFontDB.styles( mRefFont.family() );
1439 const auto constStyles = styles;
1440 for (
const QString &style : constStyles )
1442 mFontStyleComboBox->addItem( style );
1445 QString targetStyle = mFontDB.styleString( mRefFont );
1446 if ( !styles.contains( targetStyle ) )
1448 const QFont f = QFont( mRefFont.family() );
1449 targetStyle = QFontInfo( f ).styleName();
1450 mRefFont.setStyleName( targetStyle );
1453 const int stylIndx = mFontStyleComboBox->findText( targetStyle );
1454 if ( stylIndx > -1 )
1459 mFontStyleComboBox->setCurrentIndex( curIndx );
1462 void QgsTextFormatWidget::mFontSizeSpinBox_valueChanged(
double d )
1464 mRefFont.setPointSizeF( d );
1465 updateFont( mRefFont );
1468 void QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged(
const QFont &f )
1470 mRefFont.setFamily( f.family() );
1471 updateFont( mRefFont );
1474 void QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged(
const QString &text )
1477 updateFont( mRefFont );
1480 void QgsTextFormatWidget::mFontUnderlineBtn_toggled(
bool ckd )
1482 mRefFont.setUnderline( ckd );
1483 updateFont( mRefFont );
1486 void QgsTextFormatWidget::mFontStrikethroughBtn_toggled(
bool ckd )
1488 mRefFont.setStrikeOut( ckd );
1489 updateFont( mRefFont );
1492 void QgsTextFormatWidget::kerningToggled(
bool checked )
1494 mRefFont.setKerning( checked );
1495 updateFont( mRefFont );
1498 void QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged(
double spacing )
1500 mRefFont.setWordSpacing( spacing );
1501 updateFont( mRefFont );
1504 void QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged(
double spacing )
1506 mRefFont.setLetterSpacing( QFont::AbsoluteSpacing, spacing );
1507 updateFont( mRefFont );
1510 void QgsTextFormatWidget::mFontSizeUnitWidget_changed()
1515 mFontLimitPixelChkBox->setChecked(
false );
1521 mFontLimitPixelChkBox->setChecked(
true );
1523 updateFont( mRefFont );
1526 void QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged(
int px )
1529 mFontMaxPixelSpinBox->setMinimum( px );
1530 mFontMaxPixelSpinBox->update();
1533 void QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged(
int px )
1536 if ( px < mFontMinPixelSpinBox->value() )
1538 mFontMaxPixelSpinBox->blockSignals(
true );
1539 mFontMaxPixelSpinBox->setValue( mFontMinPixelSpinBox->value() );
1540 mFontMaxPixelSpinBox->blockSignals(
false );
1542 mFontMaxPixelSpinBox->setMinimum( mFontMinPixelSpinBox->value() );
1545 void QgsTextFormatWidget::mBufferUnitWidget_changed()
1547 updateFont( mRefFont );
1550 void QgsTextFormatWidget::mMaskBufferUnitWidget_changed()
1552 updateFont( mRefFont );
1555 void QgsTextFormatWidget::mCoordXDDBtn_changed( )
1557 if ( !mCoordXDDBtn->isActive() )
1561 else if ( mCoordYDDBtn->isActive() )
1567 void QgsTextFormatWidget::mCoordYDDBtn_changed( )
1569 if ( !mCoordYDDBtn->isActive() )
1573 else if ( mCoordXDDBtn->isActive() )
1579 void QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged(
int )
1587 showBackgroundRadius( isRect );
1589 mShapeSVGPathFrame->setVisible( isSVG );
1590 mBackgroundMarkerSymbolButton->setVisible( isMarker );
1591 mBackgroundFillSymbolButton->setVisible( !isSVG && !isMarker );
1595 mShapeSizeYLabel->setVisible( !isSVG && !isMarker );
1596 mShapeSizeYSpnBx->setVisible( !isSVG && !isMarker );
1597 mShapeSizeYDDBtn->setVisible( !isSVG && !isMarker );
1598 mShapeSizeXLabel->setText( tr(
"Size%1" ).arg( !isSVG && !isMarker ? tr(
" X" ) : QString() ) );
1601 mShapeFillColorBtn->setAllowOpacity( !isSVG );
1602 mShapeFillColorBtn->setButtonBackground();
1603 mShapeStrokeColorBtn->setAllowOpacity( !isSVG );
1604 mShapeStrokeColorBtn->setButtonBackground();
1607 mShapeFillColorLabel->setVisible( isSVG );
1608 mShapeFillColorLabel->setEnabled( isSVG );
1609 mShapeFillColorBtn->setVisible( isSVG );
1610 mShapeFillColorBtn->setEnabled( isSVG );
1611 mShapeFillColorDDBtn->setVisible( isSVG );
1612 mShapeFillColorDDBtn->setEnabled( isSVG );
1613 mShapeStrokeColorLabel->setVisible( isSVG );
1614 mShapeStrokeColorLabel->setEnabled( isSVG );
1615 mShapeStrokeColorBtn->setVisible( isSVG );
1616 mShapeStrokeColorBtn->setEnabled( isSVG );
1617 mShapeStrokeColorDDBtn->setVisible( isSVG );
1618 mShapeStrokeColorDDBtn->setEnabled( isSVG );
1619 mShapeStrokeWidthLabel->setVisible( isSVG );
1620 mShapeStrokeWidthLabel->setEnabled( isSVG );
1621 mShapeStrokeWidthSpnBx->setVisible( isSVG );
1622 mShapeStrokeWidthSpnBx->setEnabled( isSVG );
1623 mShapeStrokeWidthDDBtn->setVisible( isSVG );
1624 mShapeStrokeWidthDDBtn->setEnabled( isSVG );
1627 mShapeSVGParamsBtn->setVisible( isSVG );
1630 updateSvgWidgets( mShapeSVGPathLineEdit->text() );
1634 mShapeSVGUnitsLabel->setVisible( isSVG );
1635 mShapeStrokeWidthUnitWidget->setVisible(
false );
1636 mShapeStrokeUnitsDDBtn->setVisible(
false );
1637 mShapeStrokeUnitsDDBtn->setEnabled(
false );
1639 updateAvailableShadowPositions();
1642 void QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged(
const QString &text )
1644 updateSvgWidgets( text );
1649 const int numOptionsChecked = ( chkLineAbove->isChecked() ? 1 : 0 ) +
1650 ( chkLineBelow->isChecked() ? 1 : 0 ) +
1651 ( chkLineOn->isChecked() ? 1 : 0 );
1653 if ( numOptionsChecked == 1 )
1656 chkLineAbove->setEnabled( !chkLineAbove->isChecked() );
1657 chkLineBelow->setEnabled( !chkLineBelow->isChecked() );
1658 chkLineOn->setEnabled( !chkLineOn->isChecked() );
1662 chkLineAbove->setEnabled(
true );
1663 chkLineBelow->setEnabled(
true );
1664 chkLineOn->setEnabled(
true );
1674 void QgsTextFormatWidget::previewScaleChanged(
double scale )
1676 lblFontPreview->setScale( scale );
1679 void QgsTextFormatWidget::updateSvgWidgets(
const QString &svgPath )
1681 if ( mShapeSVGPathLineEdit->text() != svgPath )
1683 mShapeSVGPathLineEdit->setText( svgPath );
1686 QString resolvedPath;
1687 bool validSVG =
true;
1688 if ( ! svgPath.startsWith( QLatin1String(
"base64:" ), Qt::CaseInsensitive ) )
1691 validSVG = QFileInfo::exists( resolvedPath );
1695 resolvedPath = svgPath;
1700 mShapeSVGPathLineEdit->setStyleSheet( !validSVG ? QStringLiteral(
"QLineEdit{ color: rgb(225, 0, 0); }" ) : QString() );
1701 mShapeSVGPathLineEdit->setToolTip( !validSVG ? tr(
"File not found" ) : resolvedPath );
1703 QColor fill, stroke;
1704 double strokeWidth = 0.0;
1705 bool fillParam =
false, strokeParam =
false, strokeWidthParam =
false;
1711 mShapeSVGParamsBtn->setEnabled( validSVG && ( fillParam || strokeParam || strokeWidthParam ) );
1713 mShapeFillColorLabel->setEnabled( validSVG && fillParam );
1714 mShapeFillColorBtn->setEnabled( validSVG && fillParam );
1715 mShapeFillColorDDBtn->setEnabled( validSVG && fillParam );
1716 if ( mLoadSvgParams && validSVG && fillParam )
1717 mShapeFillColorBtn->setColor( fill );
1719 mShapeStrokeColorLabel->setEnabled( validSVG && strokeParam );
1720 mShapeStrokeColorBtn->setEnabled( validSVG && strokeParam );
1721 mShapeStrokeColorDDBtn->setEnabled( validSVG && strokeParam );
1722 if ( mLoadSvgParams && validSVG && strokeParam )
1723 mShapeStrokeColorBtn->setColor( stroke );
1725 mShapeStrokeWidthLabel->setEnabled( validSVG && strokeWidthParam );
1726 mShapeStrokeWidthSpnBx->setEnabled( validSVG && strokeWidthParam );
1727 mShapeStrokeWidthDDBtn->setEnabled( validSVG && strokeWidthParam );
1728 if ( mLoadSvgParams && validSVG && strokeWidthParam )
1729 mShapeStrokeWidthSpnBx->setValue( strokeWidth );
1735 mShapeSVGUnitsLabel->setEnabled( validSVG && strokeWidthParam );
1738 void QgsTextFormatWidget::updateAvailableShadowPositions()
1740 if ( mShadowUnderCmbBx->count() == 0
1746 mShadowUnderCmbBx->clear();
1754 mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( currentPlacement ) );
1755 if ( mShadowUnderCmbBx->currentIndex() == -1 )
1756 mShadowUnderCmbBx->setCurrentIndex( 0 );
1760 void QgsTextFormatWidget::updateProperty()
1768 void QgsTextFormatWidget::createAuxiliaryField()
1795 property.setActive(
true );
1804 void QgsTextFormatWidget::updateShapeFrameStatus()
1806 mShapeFrame->setEnabled( mShapeDrawDDBtn->isActive() || mShapeDrawChkBx->isChecked() );
1809 void QgsTextFormatWidget::updateBufferFrameStatus()
1811 mBufferFrame->setEnabled( mBufferDrawDDBtn->isActive() || mBufferDrawChkBx->isChecked() );
1814 void QgsTextFormatWidget::updateShadowFrameStatus()
1816 mShadowFrame->setEnabled( mShadowDrawDDBtn->isActive() || mShadowDrawChkBx->isChecked() );
1819 void QgsTextFormatWidget::updateCalloutFrameStatus()
1821 mCalloutFrame->setEnabled( mCalloutDrawDDBtn->isActive() || mCalloutsDrawCheckBox->isChecked() );
1865 saveDlg.
setDefaultTags( mTextFormatsListWidget->currentTagFilter() );
1866 if ( !saveDlg.exec() )
1869 if ( saveDlg.
name().isEmpty() )
1875 const int res = QMessageBox::warning(
this, tr(
"Save Text Format" ),
1876 tr(
"Format with name '%1' already exists. Overwrite?" )
1877 .arg( saveDlg.
name() ),
1878 QMessageBox::Yes | QMessageBox::No );
1879 if ( res != QMessageBox::Yes )
1886 const QStringList symbolTags = saveDlg.
tags().split(
',' );
1893 void QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked()
1896 svgDlg.setWindowTitle( tr(
"Select SVG file" ) );
1897 svgDlg.svgSelector()->setSvgPath( mShapeSVGPathLineEdit->text().trimmed() );
1899 if ( svgDlg.exec() == QDialog::Accepted )
1901 const QString svgPath = svgDlg.svgSelector()->currentSvgPath();
1902 if ( !svgPath.isEmpty() )
1904 mShapeSVGPathLineEdit->setText( svgPath );
1910 void QgsTextFormatWidget::mShapeSVGParamsBtn_clicked()
1912 const QString svgPath = mShapeSVGPathLineEdit->text();
1913 mLoadSvgParams =
true;
1914 updateSvgWidgets( svgPath );
1915 mLoadSvgParams =
false;
1918 void QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged(
int index )
1924 void QgsTextFormatWidget::mPreviewTextEdit_textChanged(
const QString &text )
1926 lblFontPreview->setText( text );
1930 void QgsTextFormatWidget::mPreviewTextBtn_clicked()
1932 mPreviewTextEdit->setText( QStringLiteral(
"Lorem Ipsum" ) );
1936 void QgsTextFormatWidget::mPreviewBackgroundBtn_colorChanged(
const QColor &color )
1941 void QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked()
1943 bool gotChar =
false;
1945 const QChar initial = !mDirectSymbLeftLineEdit->text().isEmpty() ? mDirectSymbLeftLineEdit->text().at( 0 ) : QChar();
1946 const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
1951 if ( !dirSymb.isNull() )
1952 mDirectSymbLeftLineEdit->setText( QString( dirSymb ) );
1955 void QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked()
1957 bool gotChar =
false;
1958 const QChar initial = !mDirectSymbRightLineEdit->text().isEmpty() ? mDirectSymbRightLineEdit->text().at( 0 ) : QChar();
1959 const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
1964 if ( !dirSymb.isNull() )
1965 mDirectSymbRightLineEdit->setText( QString( dirSymb ) );
1968 void QgsTextFormatWidget::chkLineOrientationDependent_toggled(
bool active )
1972 chkLineAbove->setText( tr(
"Left of line" ) );
1973 chkLineBelow->setText( tr(
"Right of line" ) );
1977 chkLineAbove->setText( tr(
"Above line" ) );
1978 chkLineBelow->setText( tr(
"Below line" ) );
1983 void QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked()
1998 if ( dlg.exec() == QDialog::Accepted )
2005 void QgsTextFormatWidget::showBackgroundRadius(
bool show )
2007 mShapeRadiusLabel->setVisible( show );
2008 mShapeRadiusXDbSpnBx->setVisible( show );
2010 mShapeRadiusYDbSpnBx->setVisible( show );
2012 mShapeRadiusUnitWidget->setVisible( show );
2014 mShapeRadiusDDBtn->setVisible( show );
2015 mShapeRadiusUnitsDDBtn->setVisible( show );
2020 mCoordAlignmentFrame->setEnabled( enable );
2026 return *lExpressionContext;
2047 if ( mGeometryGeneratorGroupBox->isChecked() )
2061 : QDialog( parent, fl )
2063 setWindowTitle( tr(
"Text Settings" ) );
2066 mFormatWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
2068 QVBoxLayout *layout =
new QVBoxLayout(
this );
2069 layout->addWidget( mFormatWidget );
2071 mButtonBox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, Qt::Horizontal,
this );
2072 layout->addWidget( mButtonBox );
2074 setLayout( layout );
2077 connect( mButtonBox->button( QDialogButtonBox::Ok ), &QAbstractButton::clicked,
this, &QDialog::accept );
2078 connect( mButtonBox->button( QDialogButtonBox::Cancel ), &QAbstractButton::clicked,
this, &QDialog::reject );
2079 connect( mButtonBox->button( QDialogButtonBox::Help ), &QAbstractButton::clicked,
this, &QgsTextFormatDialog::showHelp );
2084 return mFormatWidget->
format();
2087 void QgsTextFormatDialog::showHelp()
2089 QgsHelp::openHelp( QStringLiteral(
"style_library/label_settings.html#formatting-the-label-text" ) );
2105 mFormatWidget = qobject_cast< QgsTextFormatWidget * >(
widget() );
2108 if ( !mBlockSignals )
2115 return mFormatWidget->
format();
2120 mBlockSignals =
true;
2122 mBlockSignals =
false;
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...
bool addAuxiliaryField(const QgsPropertyDefinition &definition)
Adds an auxiliary field for the given property.
static QString nameFromProperty(const QgsPropertyDefinition &def, bool joined=false)
Returns the name of the auxiliary field for a property definition.
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 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 QgsGui * instance()
Returns a pointer to the singleton instance.
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(QgsWkbTypes::Type 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.
double scale() const
Returns the calculated map scale.
QgsUnitTypes::DistanceUnit mapUnits() const
Returns the units of the map's geographical coordinates - used for scale calculation.
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.
@ ShowDefined
Show upside down when rotation is layer- or data-defined.
@ Upright
Upside-down labels (90 <= angle < 270) are shown upright.
@ ShowAll
Show upside down for all labels, including dynamic ones.
Placement
Placement modes which determine how label candidates are generated for a feature.
@ PerimeterCurved
Arranges candidates following the curvature of a polygon's boundary. Applies to polygon layers only.
@ Curved
Arranges candidates following the curvature of a line feature. Applies to line layers only.
@ Horizontal
Arranges horizontal candidates scattered throughout a polygon feature. Applies to polygon layers only...
@ Free
Arranges candidates scattered throughout a polygon feature. Candidates are rotated to respect the pol...
@ OverPoint
Arranges candidates over a point (or centroid of a polygon), or at a preset offset from the point....
@ 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'...
@ OrderedPositionsAroundPoint
Candidates are placed in predefined positions around a point. Preference is given to positions with g...
@ OutsidePolygons
Candidates are placed outside of polygon boundaries. Applies to polygon layers only....
Property
Data definable properties.
@ MaskEnabled
Whether the mask is enabled.
@ LabelRotation
Label rotation.
@ PositionY
Y-coordinate data defined label position.
@ OverrunDistance
Distance which labels can extend past either end of linear features.
@ Strikeout
Use strikeout.
@ FontStyle
Font style name.
@ PositionX
X-coordinate data defined label position.
@ CalloutDraw
Show callout.
@ Underline
Use underline.
@ FontLetterSpacing
Letter spacing.
@ MaskJoinStyle
Mask join style.
@ Hali
Horizontal alignment for data defined label position (Left, Center, Right)
@ MaskBufferUnit
Mask buffer size unit.
@ LabelAllParts
Whether all parts of multi-part features should be labeled.
@ ShadowOpacity
Shadow opacity.
@ BufferOpacity
Buffer opacity.
@ ShapeOpacity
Shape opacity.
@ FontSizeUnit
Font size units.
@ Italic
Use italic style.
@ PredefinedPositionOrder
@ FontWordSpacing
Word spacing.
@ MaskBufferSize
Mask buffer size.
@ MinimumScale
Minimum map scale (ie most "zoomed out")
@ FontBlendMode
Text blend mode.
@ MaximumScale
Maximum map scale (ie most "zoomed in")
@ MaskOpacity
Mask opacity.
@ PolygonLabelOutside
Whether labels outside a polygon feature are permitted, or should be forced (since QGIS 3....
@ FontCase
Label text case.
@ LinePlacementOptions
Line placement flags.
@ Vali
Vertical alignment for data defined label position (Bottom, Base, Half, Cap, Top)
@ FontOpacity
Text opacity.
@ FromPoint
Offset distance applies from point geometry.
@ FromSymbolBounds
Offset distance applies from rendered symbol bounds.
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.
static QgsProject * instance()
Returns the QgsProject singleton instance.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
QgsProperty property(int key) const override
Returns a matching property from the collection, if one exists.
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
QSet< int > propertyKeys() const override
Returns a list of property keys contained within the collection.
bool isActive(int key) const override
Returns true if the collection contains an active property with the specified key.
Definition for a property.
A store for object properties.
void setField(const QString &field)
Sets the field name the property references.
void setActive(bool active)
Sets whether the property is currently active.
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).
Capitalization
Capitalization options.
@ 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...
@ AllUppercase
Convert all characters to uppercase.
@ ForceFirstLetterToCapital
Convert just the first letter of each word to uppercase, leave the rest untouched.
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).
QgsTextFormat textFormat(const QString &name) const
Returns the text format with the specified name.
QgsTextFormat defaultTextFormat(QgsStyle::TextFormatContext context=QgsStyle::TextFormatContext::Labeling) const
Returns the default text format to use for new text based objects in the specified context.
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()
Returns default application-wide style.
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(QgsWkbTypes::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 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.
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the units used for the shape's stroke width.
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.
void setRadiiUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's radii.
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.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shape's offset.
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...
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 setStrokeWidthUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's stroke width.
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).
QgsUnitTypes::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.
QgsUnitTypes::RenderUnit radiiUnit() const
Returns the units used for the shape's radii.
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 setOffset(QPointF offset)
Sets the offset used for drawing the background shape.
void setSize(QSizeF size)
Sets the size of the background shape.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used for the shape's size.
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.
void setOffsetUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's offset.
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.
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.
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.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the buffer size.
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 setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used for the buffer size.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the buffer.
void setSize(double size)
Sets the size of the buffer.
QgsTextFormatDialog(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags, QgsVectorLayer *layer=nullptr)
Constructor for QgsTextFormatDialog.
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...
void setFormat(const QgsTextFormat &format)
Sets the format to show in the widget.
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...
QgsTextFormatPanelWidget(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, QgsVectorLayer *layer=nullptr)
Constructor for QgsTextFormatPanelWidget.
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.
QgsTextFormatWidget(const QgsTextFormat &format=QgsTextFormat(), QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, QgsVectorLayer *layer=nullptr)
Constructor for QgsTextFormatWidget.
int mMinPixelLimit
Pixel size font limit.
void setDockMode(bool enabled)
Sets whether the widget should be shown in a compact dock mode.
void enableDataDefinedAlignment(bool enable)
Controls whether data defined alignment buttons are enabled.
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() 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.
virtual void setFormatFromStyle(const QString &name, QgsStyle::StyleEntity type)
Sets the current text settings from a style entry.
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.
QgsWkbTypes::GeometryType labelGeometryType() const
Returns the geometry type which will be used by the labeling engine when registering labels for the l...
QgsWkbTypes::GeometryType mGeomType
Geometry type for layer, if known.
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.
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.
QgsVectorLayer * mLayer
Associated vector layer.
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 setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the format's property collection, used for data defined overrides.
void setFont(const QFont &font)
Sets the font used for rendering text.
double lineHeight() const
Returns the line height for text.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the size of rendered text.
void setOrientation(TextOrientation orientation)
Sets the orientation for the text.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the format's property collection, used for data defined overrides.
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.
TextOrientation orientation() const
Returns the orientation of 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...
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 setCapitalization(QgsStringUtils::Capitalization capitalization)
Sets the text capitalization style.
void setBuffer(const QgsTextBufferSettings &bufferSettings)
Sets the text's buffer settings.
QgsTextBackgroundSettings & background()
Returns a reference to the text background settings.
TextOrientation
Text orientation.
@ HorizontalOrientation
Vertically oriented text.
@ RotationBasedOrientation
Horizontally or vertically oriented text based on rotation (only available for map labeling)
@ VerticalOrientation
Horizontally oriented text.
bool allowHtmlFormatting() const
Returns true if text should be treated as a HTML document and HTML tags should be used for formatting...
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the size of rendered text.
double opacity() const
Returns the text's opacity.
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.
QgsStringUtils::Capitalization capitalization() const
Returns the text capitalization style.
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.
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.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used 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.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the buffer size.
double opacity() const
Returns the mask's opacity.
bool enabled() const
Returns whether the mask is enabled.
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.
bool enabled() const
Returns whether the shadow is enabled.
int scale() const
Returns the scaling used for the drop shadow (in percentage of original size).
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.
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.
QgsUnitTypes::RenderUnit blurRadiusUnit() const
Returns the units used for the shadow's blur radius.
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.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shadow's offset.
void setBlurRadiusUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shadow's blur radius.
double blurRadius() const
Returns the blur radius for the shadow.
void setBlurRadius(double blurRadius)
Sets the blur radius for the shadow.
void setOffsetUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shadow's offset.
void setEnabled(bool enabled)
Sets whether the text shadow will be drawn.
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
@ RenderMetersInMapUnits
Meters value as Map units.
@ RenderPercentage
Percentage of another measurement (e.g., canvas size, feature size)
@ RenderPoints
Points (e.g., for font sizes)
@ RenderMillimeters
Millimeters.
@ RenderMapUnits
Map units.
Represents a vector layer which manages a vector based data sets.
Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const
Returns point, line or polygon.
QgsAuxiliaryLayer * auxiliaryLayer()
Returns the current auxiliary layer.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
QSize iconSize(bool dockableToolbar)
Returns the user-preferred size of a window's toolbar icons.
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.