45#include <QButtonGroup> 
   50  , mMapCanvas( mapCanvas )
 
   54  setWidgetMode( 
Text );
 
   61  , mMapCanvas( mapCanvas )
 
   68  setWidgetMode( mode );
 
   71void QgsTextFormatWidget::initWidget()
 
   75  mGeometryGeneratorGroupBox->setCollapsed( 
true );
 
   77  connect( mShapeSVGPathLineEdit, &QLineEdit::textChanged, 
this, &QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged );
 
   78  connect( mFontSizeSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsTextFormatWidget::mFontSizeSpinBox_valueChanged );
 
   79  connect( mFontFamilyCmbBx, &QFontComboBox::currentFontChanged, 
this, &QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged );
 
   80  connect( mFontStyleComboBox, &QComboBox::currentTextChanged, 
this, &QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged );
 
   81  connect( mFontUnderlineBtn, &QToolButton::toggled, 
this, &QgsTextFormatWidget::mFontUnderlineBtn_toggled );
 
   82  connect( mFontStrikethroughBtn, &QToolButton::toggled, 
this, &QgsTextFormatWidget::mFontStrikethroughBtn_toggled );
 
   83  connect( mFontWordSpacingSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged );
 
   84  connect( mFontLetterSpacingSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged );
 
   86  connect( mFontMinPixelSpinBox, 
static_cast < void ( QSpinBox::* )( 
int ) 
> ( &QSpinBox::valueChanged ), 
this, &QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged );
 
   87  connect( mFontMaxPixelSpinBox, 
static_cast < void ( QSpinBox::* )( 
int ) 
> ( &QSpinBox::valueChanged ), 
this, &QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged );
 
   96  connect( mShapeTypeCmbBx, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged );
 
   97  connect( mShapeRotationCmbBx, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged );
 
   98  connect( mShapeSVGParamsBtn, &QPushButton::clicked, 
this, &QgsTextFormatWidget::mShapeSVGParamsBtn_clicked );
 
   99  connect( mShapeSVGSelectorBtn, &QPushButton::clicked, 
this, &QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked );
 
  100  connect( mPreviewTextEdit, &QLineEdit::textChanged, 
this, &QgsTextFormatWidget::mPreviewTextEdit_textChanged );
 
  101  connect( mPreviewTextBtn, &QToolButton::clicked, 
this, &QgsTextFormatWidget::mPreviewTextBtn_clicked );
 
  103  connect( mDirectSymbLeftToolBtn, &QToolButton::clicked, 
this, &QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked );
 
  104  connect( mDirectSymbRightToolBtn, &QToolButton::clicked, 
this, &QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked );
 
  105  connect( chkLineOrientationDependent, &QCheckBox::toggled, 
this, &QgsTextFormatWidget::chkLineOrientationDependent_toggled );
 
  106  connect( mToolButtonConfigureSubstitutes, &QToolButton::clicked, 
this, &QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked );
 
  107  connect( mKerningCheckBox, &QCheckBox::toggled, 
this, &QgsTextFormatWidget::kerningToggled );
 
  108  connect( mComboOverlapHandling, qOverload< int >( &QComboBox::currentIndexChanged ), 
this, &QgsTextFormatWidget::overlapModeChanged );
 
  118  mPreviewTextBtn->setIconSize( QSize( iconSize16, iconSize16 ) );
 
  119  mPointOffsetAboveLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  120  mPointOffsetAbove->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  121  mPointOffsetAboveRight->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  122  mPointOffsetLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  123  mPointOffsetOver ->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  124  mPointOffsetRight->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  125  mPointOffsetBelowLeft->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  126  mPointOffsetBelow->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  127  mPointOffsetBelowRight->setIconSize( QSize( iconSize32, iconSize18 ) );
 
  128  mLabelMinScale->setPixmap( 
QgsApplication::getThemeIcon( QStringLiteral( 
"/mActionZoomOut.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
 
  129  mLabelMaxScale->setPixmap( 
QgsApplication::getThemeIcon( QStringLiteral( 
"/mActionZoomIn.svg" ) ).pixmap( QSize( iconSize24, iconSize24 ) ) );
 
  132  mFontUnderlineBtn->setMinimumSize( buttonSize, buttonSize );
 
  133  mFontUnderlineBtn->setMaximumSize( buttonSize, buttonSize );
 
  134  mFontStrikethroughBtn->setMinimumSize( buttonSize, buttonSize );
 
  135  mFontStrikethroughBtn->setMaximumSize( buttonSize, buttonSize );
 
  136  mFontBoldBtn->setMinimumSize( buttonSize, buttonSize );
 
  137  mFontBoldBtn->setMaximumSize( buttonSize, buttonSize );
 
  138  mFontItalicBtn->setMinimumSize( buttonSize, buttonSize );
 
  139  mFontItalicBtn->setMaximumSize( buttonSize, buttonSize );
 
  141  mPreviewScaleComboBox->setMapCanvas( 
mMapCanvas );
 
  142  mPreviewScaleComboBox->setShowCurrentScaleButton( 
true );
 
  145  const auto unitWidgets = findChildren<QgsUnitSelectionWidget *>();
 
  150  mFontSizeUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Points << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits
 
  151                                 << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::Pixels << Qgis::RenderUnit::Inches );
 
  152  mBufferUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  153                               << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches << Qgis::RenderUnit::Percentage );
 
  154  mMaskBufferUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  155                                   << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches  << Qgis::RenderUnit::Percentage );
 
  156  mShapeSizeUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  157                                  << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  158  mShapeOffsetUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  159                                    << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  160  mShapeRadiusUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits
 
  161                                    << Qgis::RenderUnit::Pixels << Qgis::RenderUnit::Percentage
 
  162                                    << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  163  mShapeStrokeWidthUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  164                                         << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  165  mShadowOffsetUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  166                                     << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches << Qgis::RenderUnit::Percentage );
 
  167  mShadowRadiusUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  168                                     << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches  << Qgis::RenderUnit::Percentage );
 
  169  mPointOffsetUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  170                                    << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  171  mLineDistanceUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  172                                     << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  173  mRepeatDistanceUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  174                                       << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  175  mOverrunDistanceUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::MetersInMapUnits << Qgis::RenderUnit::MapUnits << Qgis::RenderUnit::Pixels
 
  176                                        << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  177  mLineHeightUnitWidget->setUnits( 
QgsUnitTypes::RenderUnitList() << Qgis::RenderUnit::Percentage << Qgis::RenderUnit::Millimeters << Qgis::RenderUnit::Pixels
 
  178                                   << Qgis::RenderUnit::Points << Qgis::RenderUnit::Inches );
 
  179  mFontLineHeightSpinBox->setClearValue( 100.0 );
 
  180  mShapeRotationDblSpnBx->setClearValue( 0.0 );
 
  181  mShapeOffsetXSpnBx->setClearValue( 0.0 );
 
  182  mShapeOffsetYSpnBx->setClearValue( 0.0 );
 
  183  mPointOffsetXSpinBox->setClearValue( 0.0 );
 
  184  mPointOffsetYSpinBox->setClearValue( 0.0 );
 
  185  mPointAngleSpinBox->setClearValue( 0.0 );
 
  186  mFontLetterSpacingSpinBox->setClearValue( 0.0 );
 
  187  mFontWordSpacingSpinBox->setClearValue( 0.0 );
 
  188  mZIndexSpinBox->setClearValue( 0.0 );
 
  189  mLineDistanceSpnBx->setClearValue( 0.0 );
 
  190  mSpinStretch->setClearValue( 100 );
 
  194    if ( mLineHeightUnitWidget->unit() == Qgis::RenderUnit::Percentage )
 
  195      mFontLineHeightSpinBox->setClearValue( 100.0 );
 
  197      mFontLineHeightSpinBox->setClearValue( 10.0 );
 
  214  updateAvailableShadowPositions();
 
  217  mBackgroundMarkerSymbolButton->setDialogTitle( tr( 
"Background Symbol" ) );
 
  218  mBackgroundMarkerSymbolButton->registerExpressionContextGenerator( 
this );
 
  219  mBackgroundMarkerSymbolButton->setMapCanvas( 
mMapCanvas );
 
  221  mBackgroundFillSymbolButton->setDialogTitle( tr( 
"Background Symbol" ) );
 
  222  mBackgroundFillSymbolButton->registerExpressionContextGenerator( 
this );
 
  223  mBackgroundFillSymbolButton->setMapCanvas( 
mMapCanvas );
 
  227  mRefFont = lblFontPreview->font();
 
  230  connect( mShadowOffsetAngleDial, &QAbstractSlider::valueChanged, mShadowOffsetAngleSpnBx, &QSpinBox::setValue );
 
  231  connect( mShadowOffsetAngleSpnBx, 
static_cast < void ( QSpinBox::* )( 
int ) 
> ( &QSpinBox::valueChanged ), mShadowOffsetAngleDial, &QAbstractSlider::setValue );
 
  232  connect( mLimitLabelChkBox, &QAbstractButton::toggled, mLimitLabelSpinBox, &QWidget::setEnabled );
 
  233  connect( mCheckBoxSubstituteText, &QAbstractButton::toggled, mToolButtonConfigureSubstitutes, &QWidget::setEnabled );
 
  240  mTextOrientationComboBox->addItem( tr( 
"Horizontal" ), 
static_cast< int >( Qgis::TextOrientation::Horizontal ) );
 
  241  mTextOrientationComboBox->addItem( tr( 
"Vertical" ), 
static_cast< int >( Qgis::TextOrientation::Vertical ) );
 
  243  populateFontCapitalsComboBox();
 
  246  mPreviewBackgroundBtn->setColorDialogTitle( tr( 
"Select Fill Color" ) );
 
  247  mPreviewBackgroundBtn->setContext( QStringLiteral( 
"labeling" ) );
 
  248  mPreviewBackgroundBtn->setColor( QColor( 255, 255, 255 ) );
 
  249  btnTextColor->setColorDialogTitle( tr( 
"Select Text Color" ) );
 
  250  btnTextColor->setContext( QStringLiteral( 
"labeling" ) );
 
  251  btnTextColor->setDefaultColor( Qt::black );
 
  252  btnBufferColor->setColorDialogTitle( tr( 
"Select Buffer Color" ) );
 
  253  btnBufferColor->setContext( QStringLiteral( 
"labeling" ) );
 
  254  btnBufferColor->setDefaultColor( Qt::white );
 
  255  mShapeStrokeColorBtn->setColorDialogTitle( tr( 
"Select Stroke Color" ) );
 
  256  mShapeStrokeColorBtn->setContext( QStringLiteral( 
"labeling" ) );
 
  257  mShapeFillColorBtn->setColorDialogTitle( tr( 
"Select Fill Color" ) );
 
  258  mShapeFillColorBtn->setContext( QStringLiteral( 
"labeling" ) );
 
  259  mShadowColorBtn->setColorDialogTitle( tr( 
"Select Shadow Color" ) );
 
  260  mShadowColorBtn->setContext( QStringLiteral( 
"labeling" ) );
 
  261  mShadowColorBtn->setDefaultColor( Qt::black );
 
  263  mFontColorDDBtn->registerLinkedWidget( btnTextColor );
 
  264  mBufferColorDDBtn->registerLinkedWidget( btnBufferColor );
 
  265  mShapeStrokeColorDDBtn->registerLinkedWidget( mShapeStrokeColorBtn );
 
  266  mShapeFillColorDDBtn->registerLinkedWidget( mShapeFillColorBtn );
 
  267  mShadowColorDDBtn->registerLinkedWidget( mShadowColorBtn );
 
  271  mQuadrantBtnGrp->addButton( mPointOffsetAboveLeft, 
static_cast<int>( Qgis::LabelQuadrantPosition::AboveLeft ) );
 
  272  mQuadrantBtnGrp->addButton( mPointOffsetAbove, 
static_cast<int>( Qgis::LabelQuadrantPosition::Above ) );
 
  273  mQuadrantBtnGrp->addButton( mPointOffsetAboveRight, 
static_cast<int>( Qgis::LabelQuadrantPosition::AboveRight ) );
 
  274  mQuadrantBtnGrp->addButton( mPointOffsetLeft, 
static_cast<int>( Qgis::LabelQuadrantPosition::Left ) );
 
  275  mQuadrantBtnGrp->addButton( mPointOffsetOver, 
static_cast<int>( Qgis::LabelQuadrantPosition::Over ) );
 
  276  mQuadrantBtnGrp->addButton( mPointOffsetRight, 
static_cast<int>( Qgis::LabelQuadrantPosition::Right ) );
 
  277  mQuadrantBtnGrp->addButton( mPointOffsetBelowLeft, 
static_cast<int>( Qgis::LabelQuadrantPosition::BelowLeft ) );
 
  278  mQuadrantBtnGrp->addButton( mPointOffsetBelow, 
static_cast<int>( Qgis::LabelQuadrantPosition::Below ) );
 
  279  mQuadrantBtnGrp->addButton( mPointOffsetBelowRight, 
static_cast<int>( Qgis::LabelQuadrantPosition::BelowRight ) );
 
  291  mUpsidedownBtnGrp->addButton( mUpsidedownRadioOff, 
static_cast<int>( Qgis::UpsideDownLabelHandling::FlipUpsideDownLabels ) );
 
  292  mUpsidedownBtnGrp->addButton( mUpsidedownRadioDefined, 
static_cast<int>( Qgis::UpsideDownLabelHandling::AllowUpsideDownWhenRotationIsDefined ) );
 
  293  mUpsidedownBtnGrp->addButton( mUpsidedownRadioAll, 
static_cast<int>( Qgis::UpsideDownLabelHandling::AlwaysAllowUpsideDown ) );
 
  308  const auto groupBoxes = findChildren<QgsCollapsibleGroupBox *>();
 
  311    grpbox->setSettingGroup( QStringLiteral( 
"mAdvLabelingDlg" ) );
 
  317  mLabelingOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect, 
false );
 
  322  QSizePolicy policy( mLabelingOptionsListFrame->sizePolicy() );
 
  323  policy.setHorizontalStretch( 0 );
 
  324  mLabelingOptionsListFrame->setSizePolicy( policy );
 
  325  if ( !settings.
contains( QStringLiteral( 
"/Windows/Labeling/OptionsSplitState" ) ) )
 
  328    QList<int> splitsizes;
 
  330    mLabelingOptionsSplitter->setSizes( splitsizes );
 
  334  connect( mLabelStackedWidget, &QStackedWidget::currentChanged, 
this, &QgsTextFormatWidget::optionsStackedWidget_CurrentChanged );
 
  337  mFontPreviewSplitter->restoreState( settings.
value( QStringLiteral( 
"Windows/Labeling/FontPreviewSplitState" ) ).toByteArray() );
 
  338  mLabelingOptionsSplitter->restoreState( settings.
value( QStringLiteral( 
"Windows/Labeling/OptionsSplitState" ) ).toByteArray() );
 
  340  mLabelingOptionsListWidget->setCurrentRow( settings.
value( QStringLiteral( 
"Windows/Labeling/Tab" ), 0 ).toInt() );
 
  344  mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
 
  348  mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
 
  352  mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
 
  354  overlapModeChanged();
 
  356#ifndef HAS_KDE_QT5_FONT_STRETCH_FIX 
  357  mLabelStretch->hide();
 
  358  mSpinStretch->hide();
 
  359  mFontStretchDDBtn->hide();
 
  364  QList<QWidget *> widgets;
 
  365  widgets << btnBufferColor
 
  367          << chkLabelPerFeaturePart
 
  371          << chkLineOrientationDependent
 
  373          << chkPreserveRotation
 
  375          << comboBufferBlendMode
 
  377          << mBufferJoinStyleComboBox
 
  378          << mBufferTranspFillChbx
 
  379          << mBufferOpacityWidget
 
  380          << mCentroidInsideCheckBox
 
  382          << mCoordRotationUnitComboBox
 
  384          << mDirectSymbLeftLineEdit
 
  385          << mDirectSymbRevChkBx
 
  386          << mDirectSymbRightLineEdit
 
  387          << mFitInsidePolygonCheckBox
 
  388          << mFontCapitalsComboBox
 
  389          << mFontLetterSpacingSpinBox
 
  390          << mFontLimitPixelChkBox
 
  391          << mFontLineHeightSpinBox
 
  392          << mLineHeightUnitWidget
 
  393          << mFontMaxPixelSpinBox
 
  394          << mFontMinPixelSpinBox
 
  395          << mFontMultiLineAlignComboBox
 
  397          << mFontStyleComboBox
 
  398          << mTextOrientationComboBox
 
  399          << mTextOpacityWidget
 
  401          << mFontWordSpacingSpinBox
 
  403          << mFormatNumDecimalsSpnBx
 
  404          << mFormatNumPlusSignChkBx
 
  406          << mLimitLabelSpinBox
 
  407          << mLineDistanceSpnBx
 
  408          << mLineDistanceUnitWidget
 
  409          << mMaxCharAngleInDSpinBox
 
  410          << mMaxCharAngleOutDSpinBox
 
  412          << mOffsetTypeComboBox
 
  413          << mCheckAllowDegradedPlacement
 
  414          << mComboOverlapHandling
 
  415          << mPointAngleSpinBox
 
  416          << mPointOffsetUnitWidget
 
  417          << mPointOffsetXSpinBox
 
  418          << mPointOffsetYSpinBox
 
  419          << mPreviewBackgroundBtn
 
  422          << mRepeatDistanceSpinBox
 
  423          << mRepeatDistanceUnitWidget
 
  424          << mOverrunDistanceSpinBox
 
  425          << mOverrunDistanceUnitWidget
 
  426          << mScaleBasedVisibilityChkBx
 
  432          << mShadowOffsetAngleSpnBx
 
  433          << mShadowOffsetGlobalChkBx
 
  434          << mShadowOffsetSpnBx
 
  435          << mShadowOffsetUnitWidget
 
  436          << mShadowRadiusAlphaChkBx
 
  437          << mShadowRadiusDblSpnBx
 
  438          << mShadowRadiusUnitWidget
 
  440          << mShadowOpacityWidget
 
  443          << mShapeStrokeColorBtn
 
  444          << mShapeStrokeWidthSpnBx
 
  445          << mShapeStrokeWidthUnitWidget
 
  447          << mShapeFillColorBtn
 
  448          << mShapeOffsetXSpnBx
 
  449          << mShapeOffsetYSpnBx
 
  450          << mShapeOffsetUnitWidget
 
  451          << mShapeRadiusXDbSpnBx
 
  452          << mShapeRadiusYDbSpnBx
 
  453          << mShapeRotationCmbBx
 
  454          << mShapeRotationDblSpnBx
 
  455          << mShapeRadiusUnitWidget
 
  456          << mShapeSVGPathLineEdit
 
  458          << mShapeSizeUnitWidget
 
  461          << mBackgroundOpacityWidget
 
  466          << mAutoWrapLengthSpinBox
 
  467          << mAutoWrapTypeComboBox
 
  468          << mCentroidRadioVisible
 
  469          << mCentroidRadioWhole
 
  470          << mDirectSymbRadioBtnAbove
 
  471          << mDirectSymbRadioBtnBelow
 
  472          << mDirectSymbRadioBtnLR
 
  473          << mUpsidedownRadioAll
 
  474          << mUpsidedownRadioDefined
 
  475          << mUpsidedownRadioOff
 
  476          << mPlacementModeComboBox
 
  477          << mFieldExpressionWidget
 
  478          << mCheckBoxSubstituteText
 
  479          << mGeometryGeneratorGroupBox
 
  480          << mGeometryGenerator
 
  481          << mGeometryGeneratorType
 
  482          << mBackgroundMarkerSymbolButton
 
  483          << mBackgroundFillSymbolButton
 
  484          << mCalloutsDrawCheckBox
 
  485          << mCalloutStyleComboBox
 
  488          << mMaskJoinStyleComboBox
 
  489          << mMaskBufferSizeSpinBox
 
  490          << mMaskOpacityWidget
 
  491          << mCheckAllowLabelsOutsidePolygons
 
  492          << mHtmlFormattingCheckBox;
 
  499  connect( mBufferDrawChkBx, &QCheckBox::stateChanged, 
this, [ = ]( 
int )
 
  501    updateBufferFrameStatus();
 
  504  connect( mShapeDrawChkBx, &QCheckBox::stateChanged, 
this, [ = ]( 
int )
 
  506    updateShapeFrameStatus();
 
  509  connect( mShadowDrawChkBx, &QCheckBox::stateChanged, 
this, [ = ]( 
int )
 
  511    updateShadowFrameStatus();
 
  514  connect( mCalloutsDrawCheckBox, &QCheckBox::stateChanged, 
this, [ = ]( 
int )
 
  516    updateCalloutFrameStatus();
 
  524  whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() );
 
  525  mOptionsTab->tabBar()->setUsesScrollButtons( 
true );
 
  546      toggleDDButtons( 
true );
 
  548      mTextOrientationComboBox->addItem( tr( 
"Rotation-based" ), 
static_cast< int >( Qgis::TextOrientation::RotationBased ) );
 
  553      const int prevIndex = mOptionsTab->currentIndex();
 
  554      toggleDDButtons( 
true );
 
  555      delete mLabelingOptionsListWidget->takeItem( 8 ); 
 
  556      delete mLabelingOptionsListWidget->takeItem( 7 ); 
 
  557      delete mLabelingOptionsListWidget->takeItem( 6 ); 
 
  558      delete mLabelingOptionsListWidget->takeItem( 3 ); 
 
  559      mOptionsTab->removeTab( 8 );
 
  560      mOptionsTab->removeTab( 7 );
 
  561      mOptionsTab->removeTab( 6 );
 
  562      mOptionsTab->removeTab( 3 );
 
  563      mLabelStackedWidget->removeWidget( mLabelPage_Rendering );
 
  564      mLabelStackedWidget->removeWidget( mLabelPage_Callouts );
 
  565      mLabelStackedWidget->removeWidget( mLabelPage_Mask );
 
  566      mLabelStackedWidget->removeWidget( mLabelPage_Placement );
 
  576          mLabelStackedWidget->setCurrentIndex( prevIndex - 1 );
 
  577          mOptionsTab->setCurrentIndex( prevIndex - 1 );
 
  584          mLabelStackedWidget->setCurrentIndex( 0 );
 
  585          mOptionsTab->setCurrentIndex( 0 );
 
  589      frameLabelWith->hide();
 
  590      mDirectSymbolsFrame->hide();
 
  591      mFormatNumFrame->hide();
 
  592      mFormatNumChkBx->hide();
 
  593      mFormatNumDDBtn->hide();
 
  594      mCheckBoxSubstituteText->hide();
 
  595      mToolButtonConfigureSubstitutes->hide();
 
  596      mLabelWrapOnCharacter->hide();
 
  597      wrapCharacterEdit->hide();
 
  598      mWrapCharDDBtn->hide();
 
  599      mLabelWrapLinesTo->hide();
 
  600      mAutoWrapLengthSpinBox->hide();
 
  601      mAutoWrapLengthDDBtn->hide();
 
  602      mAutoWrapTypeComboBox->hide();
 
  603      mFontMultiLineLabel->hide();
 
  604      mFontMultiLineAlignComboBox->hide();
 
  605      mFontMultiLineAlignDDBtn->hide();
 
  607      mTextOrientationComboBox->removeItem( mTextOrientationComboBox->findData( 
static_cast< int >( Qgis::TextOrientation::RotationBased ) ) );
 
  613void QgsTextFormatWidget::toggleDDButtons( 
bool visible )
 
  615  const auto buttons = findChildren< QgsPropertyOverrideButton * >();
 
  618#ifndef HAS_KDE_QT5_FONT_STRETCH_FIX 
  619    if ( button == mFontStretchDDBtn )
 
  622    button->setVisible( visible );
 
  628  mOptionsTab->setVisible( enabled );
 
  629  mOptionsTab->setTabToolTip( 0, tr( 
"Text" ) );
 
  630  mOptionsTab->setTabToolTip( 1, tr( 
"Formatting" ) );
 
  631  mOptionsTab->setTabToolTip( 2, tr( 
"Buffer" ) );
 
  632  mOptionsTab->setTabToolTip( 3, tr( 
"Mask" ) );
 
  633  mOptionsTab->setTabToolTip( 4, tr( 
"Background" ) );
 
  634  mOptionsTab->setTabToolTip( 5, tr( 
"Shadow" ) );
 
  635  mOptionsTab->setTabToolTip( 6, tr( 
"Callouts" ) );
 
  636  mOptionsTab->setTabToolTip( 7, tr( 
"Placement" ) );
 
  637  mOptionsTab->setTabToolTip( 8, tr( 
"Rendering" ) );
 
  639  mLabelingOptionsListFrame->setVisible( !enabled );
 
  640  groupBox_mPreview->setVisible( !enabled );
 
  644void QgsTextFormatWidget::connectValueChanged( 
const QList<QWidget *> &widgets, 
const char *slot )
 
  646  const auto constWidgets = widgets;
 
  647  for ( QWidget *widget : constWidgets )
 
  651      connect( w, SIGNAL( changed() ), 
this, slot );
 
  655      connect( w, SIGNAL( fieldChanged( QString ) ), 
this,  slot );
 
  657    else if ( 
QgsOpacityWidget *w = qobject_cast< QgsOpacityWidget *>( widget ) )
 
  659      connect( w, SIGNAL( opacityChanged( 
double ) ), 
this,  slot );
 
  661    else if ( 
QgsScaleWidget *w = qobject_cast< QgsScaleWidget *>( widget ) )
 
  663      connect( w, SIGNAL( scaleChanged( 
double ) ), 
this,  slot );
 
  667      connect( w, SIGNAL( changed() ), 
this,  slot );
 
  669    else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
 
  671      connect( w, SIGNAL( currentIndexChanged( 
int ) ), 
this, slot );
 
  673    else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
 
  675      connect( w, SIGNAL( valueChanged( 
int ) ), 
this, slot );
 
  677    else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
 
  679      connect( w, SIGNAL( valueChanged( 
double ) ), 
this, slot );
 
  681    else if ( 
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
 
  683      connect( w, SIGNAL( colorChanged( QColor ) ), 
this, slot );
 
  685    else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
 
  687      connect( w, SIGNAL( toggled( 
bool ) ), 
this, slot );
 
  689    else if ( QRadioButton *w = qobject_cast<QRadioButton *>( widget ) )
 
  691      connect( w, SIGNAL( toggled( 
bool ) ), 
this, slot );
 
  693    else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
 
  695      connect( w, SIGNAL( textEdited( QString ) ), 
this, slot );
 
  697    else if ( QSlider *w = qobject_cast<QSlider *>( widget ) )
 
  699      connect( w, SIGNAL( valueChanged( 
int ) ), 
this, slot );
 
  701    else if ( QGroupBox *w = qobject_cast<QGroupBox *>( widget ) )
 
  703      connect( w, SIGNAL( toggled( 
bool ) ), 
this, slot );
 
  707      connect( w, SIGNAL( textChanged() ), 
this, slot );
 
  711      QgsLogger::warning( QStringLiteral( 
"Could not create connection for widget %1" ).arg( widget->objectName() ) );
 
  743  mDirectSymbDDBtn->registerCheckedWidget( mDirectSymbChkBx );
 
  751  mFormatNumDDBtn->registerCheckedWidget( mFormatNumChkBx );
 
  766  mEnableMaskDDBtn->registerCheckedWidget( mEnableMaskChkBx );
 
  774  mShapeDrawDDBtn->registerCheckedWidget( mShapeDrawChkBx );
 
  796  mShadowDrawDDBtn->registerCheckedWidget( mShadowDrawChkBx );
 
  838  updateDataDefinedAlignment();
 
  841  const QString ddScaleVisInfo = tr( 
"Value < 0 represents a scale closer than 1:1, e.g. -10 = 10:1<br>" 
  842                                     "Value of 0 disables the specific limit." );
 
  844  mScaleBasedVisibilityDDBtn->registerCheckedWidget( mScaleBasedVisibilityChkBx );
 
  846  mScaleBasedVisibilityMinDDBtn->setUsageInfo( ddScaleVisInfo );
 
  848  mScaleBasedVisibilityMaxDDBtn->setUsageInfo( ddScaleVisInfo );
 
  851  mFontLimitPixelDDBtn->registerCheckedWidget( mFontLimitPixelChkBox );
 
  870  if ( !mButtons.contains( key ) )
 
  875    mButtons[key] = button;
 
  892  mBufferDrawChkBx->setChecked( buffer.
enabled() );
 
  893  mBufferFrame->setEnabled( buffer.
enabled() );
 
  894  spinBufferSize->setValue( buffer.
size() );
 
  895  mBufferUnitWidget->setUnit( buffer.
sizeUnit() );
 
  897  btnBufferColor->setColor( buffer.
color() );
 
  898  mBufferOpacityWidget->setOpacity( buffer.
opacity() );
 
  899  mBufferJoinStyleComboBox->setPenJoinStyle( buffer.
joinStyle() );
 
  901  comboBufferBlendMode->setBlendMode( buffer.
blendMode() );
 
  903    mBufferEffect.reset( lPaintEffect->clone() );
 
  907    mBufferEffect->setEnabled( 
false );
 
  909  mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
 
  913  mEnableMaskChkBx->setChecked( mask.
enabled() );
 
  914  mMaskBufferSizeSpinBox->setValue( mask.
size() );
 
  915  mMaskBufferUnitWidget->setUnit( mask.
sizeUnit() );
 
  917  mMaskOpacityWidget->setOpacity( mask.
opacity() );
 
  918  mMaskJoinStyleComboBox->setPenJoinStyle( mask.
joinStyle() );
 
  920    mMaskEffect.reset( lPaintEffect->clone() );
 
  924    mMaskEffect->setEnabled( 
false );
 
  926  mMaskEffectWidget->setPaintEffect( mMaskEffect.get() );
 
  936  mTextOrientationComboBox->setCurrentIndex( mTextOrientationComboBox->findData( 
static_cast< int >( 
format.
orientation() ) ) );
 
  939  mFontWordSpacingSpinBox->setValue( 
format.
font().wordSpacing() );
 
  940  mFontLetterSpacingSpinBox->setValue( 
format.
font().letterSpacing() );
 
  945  updateFont( mRefFont );
 
  951    const QString missingTxt = tr( 
"%1 not found. Default substituted." );
 
  952    QString txtPrepend = tr( 
"Chosen font" );
 
  957    mFontMissingLabel->setText( missingTxt.arg( txtPrepend ) );
 
  960    mLabelingOptionsListWidget->setCurrentRow( 0 );
 
  967  mShapeDrawChkBx->setChecked( background.
enabled() );
 
  968  mShapeFrame->setEnabled( background.
enabled() );
 
  969  mShapeTypeCmbBx->blockSignals( 
true );
 
  970  mShapeTypeCmbBx->setCurrentIndex( mShapeTypeCmbBx->findData( background.
type() ) );
 
  971  mShapeTypeCmbBx->blockSignals( 
false );
 
  972  updateAvailableShadowPositions();
 
  973  mShapeSVGPathLineEdit->setText( background.
svgFile() );
 
  975  mShapeSizeCmbBx->setCurrentIndex( background.
sizeType() );
 
  976  mShapeSizeXSpnBx->setValue( background.
size().width() );
 
  977  mShapeSizeYSpnBx->setValue( background.
size().height() );
 
  978  mShapeSizeUnitWidget->setUnit( background.
sizeUnit() );
 
  980  mShapeRotationCmbBx->setCurrentIndex( background.
rotationType() );
 
  983  mShapeRotationDblSpnBx->setValue( background.
rotation() );
 
  984  mShapeOffsetXSpnBx->setValue( background.
offset().x() );
 
  985  mShapeOffsetYSpnBx->setValue( background.
offset().y() );
 
  986  mShapeOffsetUnitWidget->setUnit( background.
offsetUnit() );
 
  988  mShapeRadiusXDbSpnBx->setValue( background.
radii().width() );
 
  989  mShapeRadiusYDbSpnBx->setValue( background.
radii().height() );
 
  990  mShapeRadiusUnitWidget->setUnit( background.
radiiUnit() );
 
  993  mShapeFillColorBtn->setColor( background.
fillColor() );
 
  994  mShapeStrokeColorBtn->setColor( background.
strokeColor() );
 
  995  mShapeStrokeWidthSpnBx->setValue( background.
strokeWidth() );
 
  999  mBackgroundOpacityWidget->setOpacity( background.
opacity() );
 
 1000  mShapeBlendCmbBx->setBlendMode( background.
blendMode() );
 
 1002  mLoadSvgParams = 
false;
 
 1003  mShapeTypeCmbBx_currentIndexChanged( background.
type() ); 
 
 1005  if ( 
auto *lPaintEffect = background.
paintEffect() )
 
 1006    mBackgroundEffect.reset( lPaintEffect->clone() );
 
 1010    mBackgroundEffect->setEnabled( 
false );
 
 1012  mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
 
 1018  mShadowDrawChkBx->setChecked( shadow.
enabled() );
 
 1019  mShadowFrame->setEnabled( shadow.
enabled() );
 
 1020  mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( shadow.
shadowPlacement() ) );
 
 1021  mShadowOffsetAngleSpnBx->setValue( shadow.
offsetAngle() );
 
 1023  mShadowOffsetUnitWidget->setUnit( shadow.
offsetUnit() );
 
 1025  mShadowOffsetGlobalChkBx->setChecked( shadow.
offsetGlobal() );
 
 1027  mShadowRadiusDblSpnBx->setValue( shadow.
blurRadius() );
 
 1030  mShadowRadiusAlphaChkBx->setChecked( shadow.
blurAlphaOnly() );
 
 1031  mShadowOpacityWidget->setOpacity( shadow.
opacity() );
 
 1032  mShadowScaleSpnBx->setValue( shadow.
scale() );
 
 1034  mShadowColorBtn->setColor( shadow.
color() );
 
 1035  mShadowBlendCmbBx->setBlendMode( shadow.
blendMode() );
 
 1047  settings.
setValue( QStringLiteral( 
"Windows/Labeling/FontPreviewSplitState" ), mFontPreviewSplitter->saveState() );
 
 1048  settings.
setValue( QStringLiteral( 
"Windows/Labeling/OptionsSplitState" ), mLabelingOptionsSplitter->saveState() );
 
 1050  int prevIndex = mLabelingOptionsListWidget->currentRow();
 
 1051  if ( mWidgetMode == 
Text )
 
 1053    switch ( prevIndex )
 
 1062  settings.
setValue( QStringLiteral( 
"Windows/Labeling/Tab" ), prevIndex );
 
 1077  format.
setLineHeight( mLineHeightUnitWidget->unit() == Qgis::RenderUnit::Percentage ? ( mFontLineHeightSpinBox->value() / 100 ) : mFontLineHeightSpinBox->value() );
 
 1086  buffer.
setEnabled( mBufferDrawChkBx->isChecked() );
 
 1087  buffer.
setSize( spinBufferSize->value() );
 
 1088  buffer.
setColor( btnBufferColor->color() );
 
 1089  buffer.
setOpacity( mBufferOpacityWidget->opacity() );
 
 1092  buffer.
setJoinStyle( mBufferJoinStyleComboBox->penJoinStyle() );
 
 1094  buffer.
setBlendMode( comboBufferBlendMode->blendMode() );
 
 1103  mask.
setEnabled( mEnableMaskChkBx->isChecked() );
 
 1104  mask.
setSize( mMaskBufferSizeSpinBox->value() );
 
 1105  mask.
setOpacity( mMaskOpacityWidget->opacity() );
 
 1106  mask.
setSizeUnit( mMaskBufferUnitWidget->unit() );
 
 1108  mask.
setJoinStyle( mMaskJoinStyleComboBox->penJoinStyle() );
 
 1118  background.
setEnabled( mShapeDrawChkBx->isChecked() );
 
 1120  background.
setSvgFile( mShapeSVGPathLineEdit->text() );
 
 1122  background.
setSize( QSizeF( mShapeSizeXSpnBx->value(), mShapeSizeYSpnBx->value() ) );
 
 1123  background.
setSizeUnit( mShapeSizeUnitWidget->unit() );
 
 1126  background.
setRotation( mShapeRotationDblSpnBx->value() );
 
 1127  background.
setOffset( QPointF( mShapeOffsetXSpnBx->value(), mShapeOffsetYSpnBx->value() ) );
 
 1130  background.
setRadii( QSizeF( mShapeRadiusXDbSpnBx->value(), mShapeRadiusYDbSpnBx->value() ) );
 
 1131  background.
setRadiiUnit( mShapeRadiusUnitWidget->unit() );
 
 1134  background.
setFillColor( mShapeFillColorBtn->color() );
 
 1139  background.
setOpacity( mBackgroundOpacityWidget->opacity() );
 
 1140  background.
setBlendMode( mShapeBlendCmbBx->blendMode() );
 
 1151  shadow.
setEnabled( mShadowDrawChkBx->isChecked() );
 
 1162  shadow.
setOpacity( mShadowOpacityWidget->opacity() );
 
 1163  shadow.
setScale( mShadowScaleSpnBx->value() );
 
 1164  shadow.
setColor( mShadowColorBtn->color() );
 
 1168  if ( includeDataDefinedProperties )
 
 1199  if ( mButtons.contains( key ) )
 
 1208void QgsTextFormatWidget::optionsStackedWidget_CurrentChanged( 
int indx )
 
 1210  mLabelingOptionsListWidget->blockSignals( 
true );
 
 1211  mLabelingOptionsListWidget->setCurrentRow( indx );
 
 1212  mLabelingOptionsListWidget->blockSignals( 
false );
 
 1221    mPreviewExpressionContext = *lExpressionContext;
 
 1226  const auto symbolButtonWidgets = findChildren<QgsSymbolButton *>();
 
 1234void QgsTextFormatWidget::collapseSample( 
bool collapse )
 
 1238    QList<int> splitSizes = mFontPreviewSplitter->sizes();
 
 1239    if ( splitSizes[0] > groupBox_mPreview->height() )
 
 1241      const int delta = splitSizes[0] - groupBox_mPreview->height();
 
 1242      splitSizes[0] -= delta;
 
 1243      splitSizes[1] += delta;
 
 1244      mFontPreviewSplitter->setSizes( splitSizes );
 
 1249void QgsTextFormatWidget::changeTextColor( 
const QColor &color )
 
 1255void QgsTextFormatWidget::updateFont( 
const QFont &font )
 
 1258  if ( font != mRefFont )
 
 1267  mDirectSymbLeftLineEdit->setFont( mRefFont );
 
 1268  mDirectSymbRightLineEdit->setFont( mRefFont );
 
 1270  blockFontChangeSignals( 
true );
 
 1271  mFontFamilyCmbBx->setCurrentFont( mRefFont );
 
 1272  populateFontStyleComboBox();
 
 1273  mFontUnderlineBtn->setChecked( mRefFont.underline() );
 
 1274  mFontStrikethroughBtn->setChecked( mRefFont.strikeOut() );
 
 1275  mKerningCheckBox->setChecked( mRefFont.kerning() );
 
 1276  blockFontChangeSignals( 
false );
 
 1284void QgsTextFormatWidget::blockFontChangeSignals( 
bool blk )
 
 1286  mFontFamilyCmbBx->blockSignals( blk );
 
 1287  mFontStyleComboBox->blockSignals( blk );
 
 1288  mFontCapitalsComboBox->blockSignals( blk );
 
 1289  mFontUnderlineBtn->blockSignals( blk );
 
 1290  mFontStrikethroughBtn->blockSignals( blk );
 
 1291  mFontWordSpacingSpinBox->blockSignals( blk );
 
 1292  mFontLetterSpacingSpinBox->blockSignals( blk );
 
 1293  mKerningCheckBox->blockSignals( blk );
 
 1308  lblFontPreview->setFormat( 
format() );
 
 1311void QgsTextFormatWidget::scrollPreview()
 
 1313  scrollArea_mPreview->ensureVisible( 0, 0, 0, 0 );
 
 1318  mPreviewBackgroundColor = color;
 
 1320  scrollArea_mPreview->widget()->setStyleSheet( QStringLiteral( 
"background: rgb(%1, %2, %3);" ).arg( QString::number( color.red() ),
 
 1321      QString::number( color.green() ),
 
 1322      QString::number( color.blue() ) ) );
 
 1325void QgsTextFormatWidget::changeBufferColor( 
const QColor &color )
 
 1334  bool showLineFrame = 
false;
 
 1335  bool showCentroidFrame = 
false;
 
 1336  bool showQuadrantFrame = 
false;
 
 1337  bool showFixedQuadrantFrame = 
false;
 
 1338  bool showPlacementPriorityFrame = 
false;
 
 1339  bool showOffsetTypeFrame = 
false;
 
 1340  bool showOffsetFrame = 
false;
 
 1341  bool showDistanceFrame = 
false;
 
 1342  bool showRotationFrame = 
false;
 
 1343  bool showMaxCharAngleFrame = 
false;
 
 1348  bool enableMultiLinesFrame = 
true;
 
 1351       && ( currentGeometryType == Qgis::GeometryType::Point || currentGeometryType == Qgis::GeometryType::Polygon ) )
 
 1353    showCentroidFrame = currentGeometryType == Qgis::GeometryType::Polygon;
 
 1354    showDistanceFrame = 
true;
 
 1356    showQuadrantFrame = currentGeometryType == Qgis::GeometryType::Point;
 
 1359            && ( currentGeometryType == Qgis::GeometryType::Point || currentGeometryType == Qgis::GeometryType::Polygon ) )
 
 1361    showCentroidFrame = currentGeometryType == Qgis::GeometryType::Polygon;
 
 1362    showQuadrantFrame = 
true;
 
 1363    showFixedQuadrantFrame = 
true;
 
 1364    showOffsetFrame = 
true;
 
 1365    showRotationFrame = 
true;
 
 1369    showDistanceFrame = 
true;
 
 1370    showPlacementPriorityFrame = 
true;
 
 1371    showOffsetTypeFrame  = 
true;
 
 1378    showLineFrame = 
true;
 
 1379    showDistanceFrame = 
true;
 
 1382    const bool offline = chkLineAbove->isChecked() || chkLineBelow->isChecked();
 
 1383    chkLineOrientationDependent->setEnabled( offline );
 
 1384    mPlacementDistanceFrame->setEnabled( offline );
 
 1388    showMaxCharAngleFrame = isCurved;
 
 1390    enableMultiLinesFrame = !isCurved;
 
 1392  else if ( currentGeometryType == Qgis::GeometryType::Polygon
 
 1395    showDistanceFrame = 
true;
 
 1398  mPlacementLineFrame->setVisible( showLineFrame );
 
 1399  mPlacementPolygonFrame->setVisible( showPolygonPlacementOptions );
 
 1400  mPlacementCentroidFrame->setVisible( showCentroidFrame );
 
 1401  mPlacementQuadrantFrame->setVisible( showQuadrantFrame );
 
 1402  mPlacementFixedQuadrantFrame->setVisible( showFixedQuadrantFrame );
 
 1403  mPlacementCartographicFrame->setVisible( showPlacementPriorityFrame );
 
 1404  mPlacementOffsetFrame->setVisible( showOffsetFrame );
 
 1405  mPlacementDistanceFrame->setVisible( showDistanceFrame );
 
 1406  mPlacementOffsetTypeFrame->setVisible( showOffsetTypeFrame );
 
 1407  mPlacementRotationFrame->setVisible( showRotationFrame );
 
 1408  mPlacementRepeatGroupBox->setVisible( currentGeometryType == Qgis::GeometryType::Line || ( currentGeometryType == Qgis::GeometryType::Polygon &&
 
 1412  mPlacementMaxCharAngleFrame->setVisible( showMaxCharAngleFrame );
 
 1414  mMultiLinesFrame->setEnabled( enableMultiLinesFrame );
 
 1418  switch ( currentPlacement )
 
 1421      if ( currentGeometryType == Qgis::GeometryType::Point )
 
 1422        helperText = tr( 
"Arranges label candidates in a clockwise circle around the feature, preferring placements to the top-right of the feature." );
 
 1423      else if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1424        helperText = tr( 
"Arranges label candidates in a cluster around the feature's centroid, preferring placements directly over the centroid." );
 
 1427      if ( currentGeometryType == Qgis::GeometryType::Point )
 
 1428        helperText = tr( 
"Arranges label candidates directly over the feature or at a preset offset from the feature." );
 
 1429      else if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1430        helperText = tr( 
"Arranges label candidates directly over the feature's centroid, or at a preset offset from the centroid." );
 
 1433      if ( currentGeometryType == Qgis::GeometryType::Line )
 
 1434        helperText = tr( 
"Arranges label candidates parallel to a generalised line representing the feature. Placements which fall over straighter portions of the line are preferred." );
 
 1435      else if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1436        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." );
 
 1439      if ( currentGeometryType == Qgis::GeometryType::Line )
 
 1440        helperText = tr( 
"Arranges candidates following the curvature of a line feature. Placements which fall over straighter portions of the line are preferred." );
 
 1443      if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1444        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." );
 
 1445      else if ( currentGeometryType == Qgis::GeometryType::Line )
 
 1446        helperText = tr( 
"Label candidates are arranged horizontally along the length of the feature." );
 
 1449      if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1450        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." );
 
 1453      if ( currentGeometryType == Qgis::GeometryType::Point )
 
 1454        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." );
 
 1457      if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1458        helperText = tr( 
"Arranges candidates following the curvature of the feature's perimeter. Placements which fall over straighter portions of the perimeter are preferred." );
 
 1461      if ( currentGeometryType == Qgis::GeometryType::Polygon )
 
 1462        helperText = tr( 
"Label candidates are placed outside of the features, preferring placements which give greatest visual association between the label and the feature." );
 
 1465  mPlacementModeDescriptionLabel->setText( QStringLiteral( 
"<i>%1</i>" ).arg( helperText ) );
 
 1468void QgsTextFormatWidget::populateFontCapitalsComboBox()
 
 1473#if defined(HAS_KDE_QT5_SMALL_CAPS_FIX) || QT_VERSION >= QT_VERSION_CHECK(6, 3, 0) 
 1483void QgsTextFormatWidget::populateFontStyleComboBox()
 
 1485  mFontStyleComboBox->clear();
 
 1486  const QStringList styles = mFontDB.styles( mRefFont.family() );
 
 1487  const auto constStyles = styles;
 
 1488  for ( 
const QString &style : constStyles )
 
 1490    mFontStyleComboBox->addItem( style );
 
 1493  QString targetStyle = mFontDB.styleString( mRefFont );
 
 1494  if ( !styles.contains( targetStyle ) )
 
 1496    const QFont f = QFont( mRefFont.family() );
 
 1497    targetStyle = QFontInfo( f ).styleName();
 
 1498    mRefFont.setStyleName( targetStyle );
 
 1501  const int stylIndx = mFontStyleComboBox->findText( targetStyle );
 
 1502  if ( stylIndx > -1 )
 
 1507  mFontStyleComboBox->setCurrentIndex( curIndx );
 
 1510void QgsTextFormatWidget::mFontSizeSpinBox_valueChanged( 
double d )
 
 1512  mRefFont.setPointSizeF( d );
 
 1513  updateFont( mRefFont );
 
 1516void QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged( 
const QFont &f )
 
 1518  mRefFont.setFamily( f.family() );
 
 1519  updateFont( mRefFont );
 
 1522void QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged( 
const QString &text )
 
 1525  updateFont( mRefFont );
 
 1528void QgsTextFormatWidget::mFontUnderlineBtn_toggled( 
bool ckd )
 
 1530  mRefFont.setUnderline( ckd );
 
 1531  updateFont( mRefFont );
 
 1534void QgsTextFormatWidget::mFontStrikethroughBtn_toggled( 
bool ckd )
 
 1536  mRefFont.setStrikeOut( ckd );
 
 1537  updateFont( mRefFont );
 
 1540void QgsTextFormatWidget::kerningToggled( 
bool checked )
 
 1542  mRefFont.setKerning( checked );
 
 1543  updateFont( mRefFont );
 
 1546void QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged( 
double spacing )
 
 1548  mRefFont.setWordSpacing( spacing );
 
 1549  updateFont( mRefFont );
 
 1552void QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged( 
double spacing )
 
 1554  mRefFont.setLetterSpacing( QFont::AbsoluteSpacing, spacing );
 
 1555  updateFont( mRefFont );
 
 1558void QgsTextFormatWidget::mFontSizeUnitWidget_changed()
 
 1561  if ( mFontSizeUnitWidget->unit() != Qgis::RenderUnit::MapUnits )
 
 1563    mFontLimitPixelChkBox->setChecked( 
false );
 
 1569    mFontLimitPixelChkBox->setChecked( 
true );
 
 1571  updateFont( mRefFont );
 
 1574void QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged( 
int px )
 
 1577  mFontMaxPixelSpinBox->setMinimum( px );
 
 1578  mFontMaxPixelSpinBox->update();
 
 1581void QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged( 
int px )
 
 1584  if ( px < mFontMinPixelSpinBox->value() )
 
 1586    mFontMaxPixelSpinBox->blockSignals( 
true );
 
 1587    mFontMaxPixelSpinBox->setValue( mFontMinPixelSpinBox->value() );
 
 1588    mFontMaxPixelSpinBox->blockSignals( 
false );
 
 1590  mFontMaxPixelSpinBox->setMinimum( mFontMinPixelSpinBox->value() );
 
 1593void QgsTextFormatWidget::mBufferUnitWidget_changed()
 
 1595  updateFont( mRefFont );
 
 1598void QgsTextFormatWidget::mMaskBufferUnitWidget_changed()
 
 1600  updateFont( mRefFont );
 
 1603void QgsTextFormatWidget::mCoordXDDBtn_changed()
 
 1605  updateDataDefinedAlignment();
 
 1608void QgsTextFormatWidget::mCoordXDDBtn_activated( 
bool isActive )
 
 1613  mCoordPointDDBtn->setActive( 
false );
 
 1616void QgsTextFormatWidget::mCoordYDDBtn_changed()
 
 1618  updateDataDefinedAlignment();
 
 1621void QgsTextFormatWidget::mCoordYDDBtn_activated( 
bool isActive )
 
 1626  mCoordPointDDBtn->setActive( 
false );
 
 1629void QgsTextFormatWidget::mCoordPointDDBtn_changed()
 
 1631  updateDataDefinedAlignment();
 
 1634void QgsTextFormatWidget::mCoordPointDDBtn_activated( 
bool isActive )
 
 1639  mCoordXDDBtn->setActive( 
false );
 
 1640  mCoordYDDBtn->setActive( 
false );
 
 1643void QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged( 
int )
 
 1651  showBackgroundRadius( isRect );
 
 1653  mShapeSVGPathFrame->setVisible( isSVG );
 
 1654  mBackgroundMarkerSymbolButton->setVisible( isMarker );
 
 1655  mBackgroundFillSymbolButton->setVisible( !isSVG && !isMarker );
 
 1659  mShapeSizeYLabel->setVisible( !isSVG && !isMarker );
 
 1660  mShapeSizeYSpnBx->setVisible( !isSVG && !isMarker );
 
 1661  mShapeSizeYDDBtn->setVisible( !isSVG && !isMarker );
 
 1662  mShapeSizeXLabel->setText( tr( 
"Size%1" ).arg( !isSVG && !isMarker ? tr( 
" X" ) : QString() ) );
 
 1665  mShapeFillColorBtn->setAllowOpacity( !isSVG );
 
 1666  mShapeFillColorBtn->setButtonBackground();
 
 1667  mShapeStrokeColorBtn->setAllowOpacity( !isSVG );
 
 1668  mShapeStrokeColorBtn->setButtonBackground();
 
 1671  mShapeFillColorLabel->setVisible( isSVG );
 
 1672  mShapeFillColorLabel->setEnabled( isSVG );
 
 1673  mShapeFillColorBtn->setVisible( isSVG );
 
 1674  mShapeFillColorBtn->setEnabled( isSVG );
 
 1675  mShapeFillColorDDBtn->setVisible( isSVG );
 
 1676  mShapeFillColorDDBtn->setEnabled( isSVG );
 
 1677  mShapeStrokeColorLabel->setVisible( isSVG );
 
 1678  mShapeStrokeColorLabel->setEnabled( isSVG );
 
 1679  mShapeStrokeColorBtn->setVisible( isSVG );
 
 1680  mShapeStrokeColorBtn->setEnabled( isSVG );
 
 1681  mShapeStrokeColorDDBtn->setVisible( isSVG );
 
 1682  mShapeStrokeColorDDBtn->setEnabled( isSVG );
 
 1683  mShapeStrokeWidthLabel->setVisible( isSVG );
 
 1684  mShapeStrokeWidthLabel->setEnabled( isSVG );
 
 1685  mShapeStrokeWidthSpnBx->setVisible( isSVG );
 
 1686  mShapeStrokeWidthSpnBx->setEnabled( isSVG );
 
 1687  mShapeStrokeWidthDDBtn->setVisible( isSVG );
 
 1688  mShapeStrokeWidthDDBtn->setEnabled( isSVG );
 
 1691  mShapeSVGParamsBtn->setVisible( isSVG );
 
 1694    updateSvgWidgets( mShapeSVGPathLineEdit->text() );
 
 1698  mShapeSVGUnitsLabel->setVisible( isSVG );
 
 1699  mShapeStrokeWidthUnitWidget->setVisible( 
false );
 
 1700  mShapeStrokeUnitsDDBtn->setVisible( 
false );
 
 1701  mShapeStrokeUnitsDDBtn->setEnabled( 
false );
 
 1703  updateAvailableShadowPositions();
 
 1706void QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged( 
const QString &text )
 
 1708  updateSvgWidgets( text );
 
 1713  const int numOptionsChecked = ( chkLineAbove->isChecked() ? 1 : 0 ) +
 
 1714                                ( chkLineBelow->isChecked() ? 1 : 0 ) +
 
 1715                                ( chkLineOn->isChecked() ? 1 : 0 );
 
 1717  if ( numOptionsChecked == 1 )
 
 1720    chkLineAbove->setEnabled( !chkLineAbove->isChecked() );
 
 1721    chkLineBelow->setEnabled( !chkLineBelow->isChecked() );
 
 1722    chkLineOn->setEnabled( !chkLineOn->isChecked() );
 
 1726    chkLineAbove->setEnabled( 
true );
 
 1727    chkLineBelow->setEnabled( 
true );
 
 1728    chkLineOn->setEnabled( 
true );
 
 1738void QgsTextFormatWidget::previewScaleChanged( 
double scale )
 
 1740  lblFontPreview->setScale( scale );
 
 1743void QgsTextFormatWidget::updateSvgWidgets( 
const QString &svgPath )
 
 1745  if ( mShapeSVGPathLineEdit->text() != svgPath )
 
 1747    mShapeSVGPathLineEdit->setText( svgPath );
 
 1750  QString resolvedPath;
 
 1751  bool validSVG = 
true;
 
 1752  if ( ! svgPath.startsWith( QLatin1String( 
"base64:" ), Qt::CaseInsensitive ) )
 
 1755    validSVG = QFileInfo::exists( resolvedPath );
 
 1759    resolvedPath = svgPath;
 
 1764  mShapeSVGPathLineEdit->setStyleSheet( !validSVG ? QStringLiteral( 
"QLineEdit{ color: rgb(225, 0, 0); }" ) : QString() );
 
 1765  mShapeSVGPathLineEdit->setToolTip( !validSVG ? tr( 
"File not found" ) : resolvedPath );
 
 1767  QColor fill, stroke;
 
 1768  double strokeWidth = 0.0;
 
 1769  bool fillParam = 
false, strokeParam = 
false, strokeWidthParam = 
false;
 
 1775  mShapeSVGParamsBtn->setEnabled( validSVG && ( fillParam || strokeParam || strokeWidthParam ) );
 
 1777  mShapeFillColorLabel->setEnabled( validSVG && fillParam );
 
 1778  mShapeFillColorBtn->setEnabled( validSVG && fillParam );
 
 1779  mShapeFillColorDDBtn->setEnabled( validSVG && fillParam );
 
 1780  if ( mLoadSvgParams && validSVG && fillParam )
 
 1781    mShapeFillColorBtn->setColor( fill );
 
 1783  mShapeStrokeColorLabel->setEnabled( validSVG && strokeParam );
 
 1784  mShapeStrokeColorBtn->setEnabled( validSVG && strokeParam );
 
 1785  mShapeStrokeColorDDBtn->setEnabled( validSVG && strokeParam );
 
 1786  if ( mLoadSvgParams && validSVG && strokeParam )
 
 1787    mShapeStrokeColorBtn->setColor( stroke );
 
 1789  mShapeStrokeWidthLabel->setEnabled( validSVG && strokeWidthParam );
 
 1790  mShapeStrokeWidthSpnBx->setEnabled( validSVG && strokeWidthParam );
 
 1791  mShapeStrokeWidthDDBtn->setEnabled( validSVG && strokeWidthParam );
 
 1792  if ( mLoadSvgParams && validSVG && strokeWidthParam )
 
 1793    mShapeStrokeWidthSpnBx->setValue( strokeWidth );
 
 1799  mShapeSVGUnitsLabel->setEnabled( validSVG && strokeWidthParam );
 
 1802void QgsTextFormatWidget::updateAvailableShadowPositions()
 
 1804  if ( mShadowUnderCmbBx->count() == 0
 
 1810    mShadowUnderCmbBx->clear();
 
 1818    mShadowUnderCmbBx->setCurrentIndex( mShadowUnderCmbBx->findData( currentPlacement ) );
 
 1819    if ( mShadowUnderCmbBx->currentIndex() == -1 )
 
 1820      mShadowUnderCmbBx->setCurrentIndex( 0 );
 
 1824void QgsTextFormatWidget::updateProperty()
 
 1832void QgsTextFormatWidget::createAuxiliaryField()
 
 1859  property.setActive( 
true );
 
 1868void QgsTextFormatWidget::updateShapeFrameStatus()
 
 1870  mShapeFrame->setEnabled( mShapeDrawDDBtn->isActive() || mShapeDrawChkBx->isChecked() );
 
 1873void QgsTextFormatWidget::updateBufferFrameStatus()
 
 1875  mBufferFrame->setEnabled( mBufferDrawDDBtn->isActive() || mBufferDrawChkBx->isChecked() );
 
 1878void QgsTextFormatWidget::updateShadowFrameStatus()
 
 1880  mShadowFrame->setEnabled( mShadowDrawDDBtn->isActive() || mShadowDrawChkBx->isChecked() );
 
 1883void QgsTextFormatWidget::updateCalloutFrameStatus()
 
 1885  mCalloutFrame->setEnabled( mCalloutDrawDDBtn->isActive() || mCalloutsDrawCheckBox->isChecked() );
 
 1888void QgsTextFormatWidget::updateDataDefinedAlignment()
 
 1891  mCoordAlignmentFrame->setEnabled( ( mCoordXDDBtn->isActive() && mCoordYDDBtn->isActive() )
 
 1892                                    || mCoordPointDDBtn->isActive() );
 
 1895void QgsTextFormatWidget::overlapModeChanged()
 
 1897  QString description;
 
 1901      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.)" );
 
 1904      description = tr( 
"If a label cannot otherwise be placed for a feature then an overlapping label is permitted." );
 
 1907      description = tr( 
"Labels from this layer may freely overlap other labels or label obstacles without penalty." );
 
 1911  mOverlapModeDescriptionLabel->setText( QStringLiteral( 
"<i>%1</i>" ).arg( description ) );
 
 1916  if ( name.isEmpty() )
 
 1959  saveDlg.
setDefaultTags( mTextFormatsListWidget->currentTagFilter() );
 
 1960  if ( !saveDlg.exec() )
 
 1963  if ( saveDlg.
name().isEmpty() )
 
 1973    const int res = QMessageBox::warning( 
this, tr( 
"Save Text Format" ),
 
 1974                                          tr( 
"Format with name '%1' already exists. Overwrite?" )
 
 1975                                          .arg( saveDlg.
name() ),
 
 1976                                          QMessageBox::Yes | QMessageBox::No );
 
 1977    if ( res != QMessageBox::Yes )
 
 1984  const QStringList symbolTags = saveDlg.
tags().split( 
',' );
 
 1991void QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked()
 
 1994  svgDlg.setWindowTitle( tr( 
"Select SVG file" ) );
 
 1995  svgDlg.svgSelector()->setSvgPath( mShapeSVGPathLineEdit->text().trimmed() );
 
 1997  if ( svgDlg.exec() == QDialog::Accepted )
 
 1999    const QString svgPath = svgDlg.svgSelector()->currentSvgPath();
 
 2000    if ( !svgPath.isEmpty() )
 
 2002      mShapeSVGPathLineEdit->setText( svgPath );
 
 2008void QgsTextFormatWidget::mShapeSVGParamsBtn_clicked()
 
 2010  const QString svgPath = mShapeSVGPathLineEdit->text();
 
 2011  mLoadSvgParams = 
true;
 
 2012  updateSvgWidgets( svgPath );
 
 2013  mLoadSvgParams = 
false;
 
 2016void QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged( 
int index )
 
 2022void QgsTextFormatWidget::mPreviewTextEdit_textChanged( 
const QString &text )
 
 2024  lblFontPreview->setText( text );
 
 2028void QgsTextFormatWidget::mPreviewTextBtn_clicked()
 
 2030  mPreviewTextEdit->setText( QStringLiteral( 
"Lorem Ipsum" ) );
 
 2034void QgsTextFormatWidget::mPreviewBackgroundBtn_colorChanged( 
const QColor &color )
 
 2039void QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked()
 
 2041  bool gotChar = 
false;
 
 2043  const QChar initial = !mDirectSymbLeftLineEdit->text().isEmpty() ? mDirectSymbLeftLineEdit->text().at( 0 ) : QChar();
 
 2044  const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
 
 2049  if ( !dirSymb.isNull() )
 
 2050    mDirectSymbLeftLineEdit->setText( QString( dirSymb ) );
 
 2053void QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked()
 
 2055  bool gotChar = 
false;
 
 2056  const QChar initial = !mDirectSymbRightLineEdit->text().isEmpty() ? mDirectSymbRightLineEdit->text().at( 0 ) : QChar();
 
 2057  const QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ), initial );
 
 2062  if ( !dirSymb.isNull() )
 
 2063    mDirectSymbRightLineEdit->setText( QString( dirSymb ) );
 
 2066void QgsTextFormatWidget::chkLineOrientationDependent_toggled( 
bool active )
 
 2070    chkLineAbove->setText( tr( 
"Left of line" ) );
 
 2071    chkLineBelow->setText( tr( 
"Right of line" ) );
 
 2075    chkLineAbove->setText( tr( 
"Above line" ) );
 
 2076    chkLineBelow->setText( tr( 
"Below line" ) );
 
 2081void QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked()
 
 2096  if ( dlg.exec() == QDialog::Accepted )
 
 2103void QgsTextFormatWidget::showBackgroundRadius( 
bool show )
 
 2105  mShapeRadiusLabel->setVisible( show );
 
 2106  mShapeRadiusXDbSpnBx->setVisible( show );
 
 2108  mShapeRadiusYDbSpnBx->setVisible( show );
 
 2110  mShapeRadiusUnitWidget->setVisible( show );
 
 2112  mShapeRadiusDDBtn->setVisible( show );
 
 2113  mShapeRadiusUnitsDDBtn->setVisible( show );
 
 2119    return *lExpressionContext;
 
 2140  if ( mGeometryGeneratorGroupBox->isChecked() )
 
 2154  : QDialog( parent, fl )
 
 2156  setWindowTitle( tr( 
"Text Settings" ) );
 
 2159  mFormatWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
 
 2161  QVBoxLayout *layout = 
new QVBoxLayout( 
this );
 
 2162  layout->addWidget( mFormatWidget );
 
 2164  mButtonBox = 
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Help, Qt::Horizontal, 
this );
 
 2165  layout->addWidget( mButtonBox );
 
 2167  setLayout( layout );
 
 2170  connect( mButtonBox->button( QDialogButtonBox::Ok ), &QAbstractButton::clicked, 
this, &QDialog::accept );
 
 2171  connect( mButtonBox->button( QDialogButtonBox::Cancel ), &QAbstractButton::clicked, 
this, &QDialog::reject );
 
 2172  connect( mButtonBox->button( QDialogButtonBox::Help ), &QAbstractButton::clicked, 
this, &QgsTextFormatDialog::showHelp );
 
 2177  return mFormatWidget->
format();
 
 2180void QgsTextFormatDialog::showHelp()
 
 2182  QgsHelp::openHelp( QStringLiteral( 
"style_library/label_settings.html#formatting-the-label-text" ) );
 
 2198  mFormatWidget = qobject_cast< QgsTextFormatWidget * >( 
widget() );
 
 2201    if ( !mBlockSignals )
 
 2208  return mFormatWidget->
format();
 
 2213  mBlockSignals = 
true;
 
 2215  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.
 
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
 
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.
 
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 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 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.
 
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.
 
@ MaskEnabled
Whether the mask is enabled.
 
@ LabelRotation
Label rotation.
 
@ PositionY
Y-coordinate data defined label position.
 
@ OverlapHandling
Overlap handling technique (since QGIS 3.26)
 
@ 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.
 
@ PositionPoint
Point-coordinate data defined label position.
 
@ Hali
Horizontal alignment for data defined label position (Left, Center, Right)
 
@ FontStretchFactor
Font stretch factor, since QGIS 3.24.
 
@ MaskBufferUnit
Mask buffer size unit.
 
@ LabelAllParts
Whether all parts of multi-part features should be labeled.
 
@ AllowDegradedPlacement
Allow degraded label placements (since QGIS 3.26)
 
@ 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.
 
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.
 
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.
 
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()
Returns 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.
 
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.
 
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.
 
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...
 
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 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.
 
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.