32 #include <QButtonGroup> 36 , mMapCanvas( mapCanvas )
39 setWidgetMode(
Text );
46 , mMapCanvas( mapCanvas )
49 setWidgetMode( mode );
52 void QgsTextFormatWidget::initWidget()
55 connect( mShapeSVGPathLineEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged );
56 connect( mFontSizeSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontSizeSpinBox_valueChanged );
57 connect( mFontCapitalsComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mFontCapitalsComboBox_currentIndexChanged );
58 connect( mFontFamilyCmbBx, &QFontComboBox::currentFontChanged,
this, &QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged );
59 connect( mFontStyleComboBox,
static_cast<void ( QComboBox::* )(
const QString & )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged );
60 connect( mFontUnderlineBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontUnderlineBtn_toggled );
61 connect( mFontStrikethroughBtn, &QToolButton::toggled,
this, &QgsTextFormatWidget::mFontStrikethroughBtn_toggled );
62 connect( mFontWordSpacingSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged );
63 connect( mFontLetterSpacingSpinBox, static_cast <
void ( QDoubleSpinBox::* )(
double ) > ( &QDoubleSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged );
65 connect( mFontMinPixelSpinBox, static_cast <
void ( QSpinBox::* )(
int ) > ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged );
66 connect( mFontMaxPixelSpinBox, static_cast <
void ( QSpinBox::* )(
int ) > ( &QSpinBox::valueChanged ),
this, &QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged );
70 connect( mShapeTypeCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged );
71 connect( mShapeRotationCmbBx,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged );
72 connect( mShapeSVGParamsBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGParamsBtn_clicked );
73 connect( mShapeSVGSelectorBtn, &QPushButton::clicked,
this, &QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked );
74 connect( mPreviewTextEdit, &QLineEdit::textChanged,
this, &QgsTextFormatWidget::mPreviewTextEdit_textChanged );
75 connect( mPreviewTextBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mPreviewTextBtn_clicked );
77 connect( mDirectSymbLeftToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked );
78 connect( mDirectSymbRightToolBtn, &QToolButton::clicked,
this, &QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked );
79 connect( mChkNoObstacle, &QCheckBox::toggled,
this, &QgsTextFormatWidget::mChkNoObstacle_toggled );
80 connect( chkLineOrientationDependent, &QCheckBox::toggled,
this, &QgsTextFormatWidget::chkLineOrientationDependent_toggled );
81 connect( mToolButtonConfigureSubstitutes, &QToolButton::clicked,
this, &QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked );
83 mPreviewScaleComboBox->setMapCanvas( mMapCanvas );
84 mPreviewScaleComboBox->setShowCurrentScaleButton(
true );
115 mFontLineHeightSpinBox->setClearValue( 1.0 );
116 mShapeRotationDblSpnBx->setClearValue( 0.0 );
117 mShapeOffsetXSpnBx->setClearValue( 0.0 );
118 mShapeOffsetYSpnBx->setClearValue( 0.0 );
119 mPointOffsetXSpinBox->setClearValue( 0.0 );
120 mPointOffsetYSpinBox->setClearValue( 0.0 );
121 mPointAngleSpinBox->setClearValue( 0.0 );
122 mFontLetterSpacingSpinBox->setClearValue( 0.0 );
123 mFontWordSpacingSpinBox->setClearValue( 0.0 );
124 mZIndexSpinBox->setClearValue( 0.0 );
134 mRefFont = lblFontPreview->font();
137 connect( mShadowOffsetAngleDial, &QAbstractSlider::valueChanged, mShadowOffsetAngleSpnBx, &QSpinBox::setValue );
138 connect( mShadowOffsetAngleSpnBx, static_cast <
void ( QSpinBox::* )(
int ) > ( &QSpinBox::valueChanged ), mShadowOffsetAngleDial, &QAbstractSlider::setValue );
139 connect( mLimitLabelChkBox, &QAbstractButton::toggled, mLimitLabelSpinBox, &QWidget::setEnabled );
140 connect( mCheckBoxSubstituteText, &QAbstractButton::toggled, mToolButtonConfigureSubstitutes, &QWidget::setEnabled );
147 populateFontCapitalsComboBox();
150 mPreviewBackgroundBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
151 mPreviewBackgroundBtn->setContext( QStringLiteral(
"labeling" ) );
152 mPreviewBackgroundBtn->setColor( QColor( 255, 255, 255 ) );
153 btnTextColor->setColorDialogTitle( tr(
"Select Text Color" ) );
154 btnTextColor->setContext( QStringLiteral(
"labeling" ) );
155 btnTextColor->setDefaultColor( Qt::black );
156 btnBufferColor->setColorDialogTitle( tr(
"Select Buffer Color" ) );
157 btnBufferColor->setContext( QStringLiteral(
"labeling" ) );
158 btnBufferColor->setDefaultColor( Qt::white );
159 mShapeStrokeColorBtn->setColorDialogTitle( tr(
"Select Stroke Color" ) );
160 mShapeStrokeColorBtn->setContext( QStringLiteral(
"labeling" ) );
161 mShapeFillColorBtn->setColorDialogTitle( tr(
"Select Fill Color" ) );
162 mShapeFillColorBtn->setContext( QStringLiteral(
"labeling" ) );
163 mShadowColorBtn->setColorDialogTitle( tr(
"Select Shadow Color" ) );
164 mShadowColorBtn->setContext( QStringLiteral(
"labeling" ) );
165 mShadowColorBtn->setDefaultColor( Qt::black );
219 mPlacePolygonBtnGrp->addButton( radAroundCentroid, (
int )QgsPalLayerSettings::AroundPoint );
220 mPlacePolygonBtnGrp->addButton( radPolygonHorizontal, (
int )QgsPalLayerSettings::Horizontal );
234 connect( groupBox_mPreview,
237 &QgsTextFormatWidget::collapseSample );
240 mLabelingOptionsListWidget->setAttribute( Qt::WA_MacShowFocusRect,
false );
245 QSizePolicy policy( mLabelingOptionsListFrame->sizePolicy() );
246 policy.setHorizontalStretch( 0 );
247 mLabelingOptionsListFrame->setSizePolicy( policy );
248 if ( !settings.
contains( QStringLiteral(
"/Windows/Labeling/OptionsSplitState" ) ) )
251 QList<int> splitsizes;
253 mLabelingOptionsSplitter->setSizes( splitsizes );
257 connect( mLabelStackedWidget, &QStackedWidget::currentChanged,
this, &QgsTextFormatWidget::optionsStackedWidget_CurrentChanged );
260 mFontPreviewSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ) ).toByteArray() );
261 mLabelingOptionsSplitter->restoreState( settings.
value( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ) ).toByteArray() );
263 mLabelingOptionsListWidget->setCurrentRow( settings.
value( QStringLiteral(
"Windows/Labeling/Tab" ), 0 ).toInt() );
267 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
270 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
275 QList<QWidget *> widgets;
276 widgets << btnBufferColor
278 << chkLabelPerFeaturePart
282 << chkLineOrientationDependent
284 << chkPreserveRotation
286 << comboBufferBlendMode
288 << mBufferBlendModeDDBtn
292 << mBufferJoinStyleComboBox
293 << mBufferJoinStyleDDBtn
295 << mBufferOpacityDDBtn
296 << mBufferTranspFillChbx
297 << mBufferOpacityWidget
300 << mCentroidInsideCheckBox
302 << mCoordAlignmentHDDBtn
303 << mCoordAlignmentVDDBtn
304 << mCoordRotationDDBtn
309 << mDirectSymbLeftDDBtn
310 << mDirectSymbLeftLineEdit
311 << mDirectSymbPlacementDDBtn
312 << mDirectSymbRevChkBx
313 << mDirectSymbRevDDBtn
314 << mDirectSymbRightDDBtn
315 << mDirectSymbRightLineEdit
316 << mFitInsidePolygonCheckBox
317 << mFontBlendModeDDBtn
319 << mFontCapitalsComboBox
324 << mFontLetterSpacingDDBtn
325 << mFontLetterSpacingSpinBox
326 << mFontLimitPixelChkBox
327 << mFontLimitPixelDDBtn
328 << mFontLineHeightDDBtn
329 << mFontLineHeightSpinBox
330 << mFontMaxPixelDDBtn
331 << mFontMaxPixelSpinBox
332 << mFontMinPixelDDBtn
333 << mFontMinPixelSpinBox
334 << mFontMultiLineAlignComboBox
335 << mFontMultiLineAlignDDBtn
338 << mFontStrikeoutDDBtn
339 << mFontStyleComboBox
342 << mTextOpacityWidget
343 << mFontUnderlineDDBtn
345 << mFontWordSpacingDDBtn
346 << mFontWordSpacingSpinBox
349 << mFormatNumDecimalsDDBtn
350 << mFormatNumDecimalsSpnBx
351 << mFormatNumPlusSignChkBx
352 << mFormatNumPlusSignDDBtn
355 << mLimitLabelSpinBox
356 << mLineDistanceDDBtn
357 << mLineDistanceSpnBx
358 << mLineDistanceUnitDDBtn
359 << mLineDistanceUnitWidget
360 << mMaxCharAngleDDBtn
361 << mMaxCharAngleInDSpinBox
362 << mMaxCharAngleOutDSpinBox
364 << mObstacleFactorDDBtn
365 << mObstacleFactorSlider
366 << mObstacleTypeComboBox
367 << mOffsetTypeComboBox
368 << mPalShowAllLabelsForLayerChkBx
369 << mPointAngleSpinBox
371 << mPointOffsetUnitsDDBtn
372 << mPointOffsetUnitWidget
373 << mPointOffsetXSpinBox
374 << mPointOffsetYSpinBox
375 << mPointPositionOrderDDBtn
376 << mPointQuadOffsetDDBtn
377 << mPreviewBackgroundBtn
381 << mRepeatDistanceDDBtn
382 << mRepeatDistanceSpinBox
383 << mRepeatDistanceUnitDDBtn
384 << mRepeatDistanceUnitWidget
385 << mScaleBasedVisibilityChkBx
386 << mScaleBasedVisibilityDDBtn
387 << mScaleBasedVisibilityMaxDDBtn
389 << mScaleBasedVisibilityMinDDBtn
397 << mShadowOffsetAngleDDBtn
398 << mShadowOffsetAngleSpnBx
399 << mShadowOffsetDDBtn
400 << mShadowOffsetGlobalChkBx
401 << mShadowOffsetSpnBx
402 << mShadowOffsetUnitsDDBtn
403 << mShadowOffsetUnitWidget
404 << mShadowRadiusAlphaChkBx
405 << mShadowRadiusDDBtn
406 << mShadowRadiusDblSpnBx
407 << mShadowRadiusUnitsDDBtn
408 << mShadowRadiusUnitWidget
411 << mShadowOpacityDDBtn
412 << mShadowOpacityWidget
416 << mShapeBlendModeDDBtn
417 << mShapeStrokeColorBtn
418 << mShapeStrokeColorDDBtn
419 << mShapeStrokeUnitsDDBtn
420 << mShapeStrokeWidthDDBtn
421 << mShapeStrokeWidthSpnBx
422 << mShapeStrokeWidthUnitWidget
425 << mShapeFillColorBtn
426 << mShapeFillColorDDBtn
428 << mShapeOffsetUnitsDDBtn
429 << mShapeOffsetXSpnBx
430 << mShapeOffsetYSpnBx
431 << mShapeOffsetUnitWidget
432 << mShapePenStyleCmbBx
433 << mShapePenStyleDDBtn
435 << mShapeRadiusUnitsDDBtn
436 << mShapeRadiusXDbSpnBx
437 << mShapeRadiusYDbSpnBx
438 << mShapeRotationCmbBx
439 << mShapeRotationDDBtn
440 << mShapeRotationDblSpnBx
441 << mShapeRotationTypeDDBtn
442 << mShapeRadiusUnitWidget
443 << mShapeSVGPathDDBtn
444 << mShapeSVGPathLineEdit
446 << mShapeSizeTypeDDBtn
447 << mShapeSizeUnitsDDBtn
448 << mShapeSizeUnitWidget
453 << mShapeOpacityDDBtn
454 << mBackgroundOpacityWidget
463 << mCentroidRadioVisible
464 << mCentroidRadioWhole
465 << mDirectSymbRadioBtnAbove
466 << mDirectSymbRadioBtnBelow
467 << mDirectSymbRadioBtnLR
468 << mUpsidedownRadioAll
469 << mUpsidedownRadioDefined
470 << mUpsidedownRadioOff
479 << radPolygonHorizontal
480 << radPolygonPerimeter
481 << radPolygonPerimeterCurved
482 << radPredefinedOrder
483 << mFieldExpressionWidget
484 << mCheckBoxSubstituteText;
485 connectValueChanged( widgets, SLOT( updatePreview() ) );
487 connect(
mQuadrantBtnGrp,
static_cast<void ( QButtonGroup::* )(
int )
>( &QButtonGroup::buttonClicked ),
this, &QgsTextFormatWidget::updatePreview );
490 whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() );
505 toggleDDButtons(
true );
509 toggleDDButtons(
false );
510 delete mLabelingOptionsListWidget->takeItem( 6 );
511 delete mLabelingOptionsListWidget->takeItem( 5 );
512 mOptionsTab->removeTab( 6 );
513 mOptionsTab->removeTab( 5 );
515 frameLabelWith->hide();
516 mDirectSymbolsFrame->hide();
517 mFormatNumFrame->hide();
518 mFormatNumChkBx->hide();
519 mFormatNumDDBtn->hide();
520 mSubstitutionsFrame->hide();
521 mFontBoldBtn->hide();
522 mFontItalicBtn->hide();
528 void QgsTextFormatWidget::toggleDDButtons(
bool visible )
532 button->setVisible( visible );
538 mOptionsTab->setVisible( enabled );
539 mOptionsTab->setTabToolTip( 0, tr(
"Text" ) );
540 mOptionsTab->setTabToolTip( 1, tr(
"Formatting" ) );
541 mOptionsTab->setTabToolTip( 2, tr(
"Buffer" ) );
542 mOptionsTab->setTabToolTip( 3, tr(
"Background" ) );
543 mOptionsTab->setTabToolTip( 4, tr(
"Shadow" ) );
544 mOptionsTab->setTabToolTip( 5, tr(
"Placement" ) );
545 mOptionsTab->setTabToolTip( 6, tr(
"Rendering" ) );
547 mLabelingOptionsListFrame->setVisible( !enabled );
548 groupBox_mPreview->setVisible( !enabled );
552 void QgsTextFormatWidget::connectValueChanged(
const QList<QWidget *> &widgets,
const char *slot )
554 Q_FOREACH ( QWidget *widget, widgets )
558 connect( w, SIGNAL( changed() ),
this, slot );
562 connect( w, SIGNAL( fieldChanged( QString ) ),
this, slot );
564 else if (
QgsOpacityWidget *w = qobject_cast< QgsOpacityWidget *>( widget ) )
566 connect( w, SIGNAL( opacityChanged(
double ) ),
this, slot );
568 else if (
QgsScaleWidget *w = qobject_cast< QgsScaleWidget *>( widget ) )
570 connect( w, SIGNAL( scaleChanged(
double ) ),
this, slot );
574 connect( w, SIGNAL( changed() ),
this, slot );
576 else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
578 connect( w, SIGNAL( currentIndexChanged(
int ) ),
this, slot );
580 else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
582 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
584 else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
586 connect( w, SIGNAL( valueChanged(
double ) ),
this, slot );
588 else if (
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
590 connect( w, SIGNAL( colorChanged( QColor ) ),
this, slot );
592 else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
594 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
596 else if ( QRadioButton *w = qobject_cast<QRadioButton *>( widget ) )
598 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
600 else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
602 connect( w, SIGNAL( textEdited( QString ) ),
this, slot );
604 else if ( QSlider *w = qobject_cast<QSlider *>( widget ) )
606 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
610 QgsLogger::warning( QStringLiteral(
"Could not create connection for widget %1" ).arg( widget->objectName() ) );
622 mBufferDrawChkBx->setChecked( buffer.
enabled() );
623 spinBufferSize->setValue( buffer.
size() );
624 mBufferUnitWidget->setUnit( buffer.
sizeUnit() );
627 mBufferOpacityWidget->setOpacity( buffer.
opacity() );
628 mBufferJoinStyleComboBox->setPenJoinStyle( buffer.
joinStyle() );
630 comboBufferBlendMode->setBlendMode( buffer.
blendMode() );
636 mBufferEffect->setEnabled(
false );
638 mBufferEffectWidget->setPaintEffect( mBufferEffect.get() );
640 mFontSizeUnitWidget->setUnit( format.
sizeUnit() );
642 mRefFont = format.
font();
643 mFontSizeSpinBox->setValue( format.
size() );
644 btnTextColor->setColor( format.
color() );
645 mTextOpacityWidget->setOpacity( format.
opacity() );
646 comboBlendMode->setBlendMode( format.
blendMode() );
648 mFontWordSpacingSpinBox->setValue( format.
font().wordSpacing() );
649 mFontLetterSpacingSpinBox->setValue( format.
font().letterSpacing() );
652 updateFont( mRefFont );
655 mFontMissingLabel->setVisible( !format.
fontFound() );
658 QString missingTxt = tr(
"%1 not found. Default substituted." );
659 QString txtPrepend = tr(
"Chosen font" );
664 mFontMissingLabel->setText( missingTxt.arg( txtPrepend ) );
667 mLabelingOptionsListWidget->setCurrentRow( 0 );
669 mFontLineHeightSpinBox->setValue( format.
lineHeight() );
672 mShapeDrawChkBx->setChecked( background.
enabled() );
673 mShapeTypeCmbBx->blockSignals(
true );
674 mShapeTypeCmbBx->setCurrentIndex( background.
type() );
675 mShapeTypeCmbBx->blockSignals(
false );
676 mShapeSVGPathLineEdit->setText( background.
svgFile() );
678 mShapeSizeCmbBx->setCurrentIndex( background.
sizeType() );
679 mShapeSizeXSpnBx->setValue( background.
size().width() );
680 mShapeSizeYSpnBx->setValue( background.
size().height() );
681 mShapeSizeUnitWidget->setUnit( background.
sizeUnit() );
683 mShapeRotationCmbBx->setCurrentIndex( background.
rotationType() );
686 mShapeRotationDblSpnBx->setValue( background.
rotation() );
687 mShapeOffsetXSpnBx->setValue( background.
offset().x() );
688 mShapeOffsetYSpnBx->setValue( background.
offset().y() );
689 mShapeOffsetUnitWidget->setUnit( background.
offsetUnit() );
691 mShapeRadiusXDbSpnBx->setValue( background.
radii().width() );
692 mShapeRadiusYDbSpnBx->setValue( background.
radii().height() );
693 mShapeRadiusUnitWidget->setUnit( background.
radiiUnit() );
696 mShapeFillColorBtn->setColor( background.
fillColor() );
697 mShapeStrokeColorBtn->setColor( background.
strokeColor() );
698 mShapeStrokeWidthSpnBx->setValue( background.
strokeWidth() );
701 mShapePenStyleCmbBx->setPenJoinStyle( background.
joinStyle() );
703 mBackgroundOpacityWidget->setOpacity( background.
opacity() );
704 mShapeBlendCmbBx->setBlendMode( background.
blendMode() );
706 mLoadSvgParams =
false;
707 mShapeTypeCmbBx_currentIndexChanged( background.
type() );
714 mBackgroundEffect->setEnabled(
false );
716 mBackgroundEffectWidget->setPaintEffect( mBackgroundEffect.get() );
719 mShadowDrawChkBx->setChecked( shadow.
enabled() );
721 mShadowOffsetAngleSpnBx->setValue( shadow.
offsetAngle() );
723 mShadowOffsetUnitWidget->setUnit( shadow.
offsetUnit() );
725 mShadowOffsetGlobalChkBx->setChecked( shadow.
offsetGlobal() );
727 mShadowRadiusDblSpnBx->setValue( shadow.
blurRadius() );
730 mShadowRadiusAlphaChkBx->setChecked( shadow.
blurAlphaOnly() );
731 mShadowOpacityWidget->setOpacity( shadow.
opacity() );
732 mShadowScaleSpnBx->setValue( shadow.
scale() );
734 mShadowColorBtn->setColor( shadow.
color() );
735 mShadowBlendCmbBx->setBlendMode( shadow.
blendMode() );
742 settings.
setValue( QStringLiteral(
"Windows/Labeling/FontPreviewSplitState" ), mFontPreviewSplitter->saveState() );
743 settings.
setValue( QStringLiteral(
"Windows/Labeling/OptionsSplitState" ), mLabelingOptionsSplitter->saveState() );
744 settings.
setValue( QStringLiteral(
"Windows/Labeling/Tab" ), mLabelingOptionsListWidget->currentRow() );
750 format.
setColor( btnTextColor->color() );
752 format.
setSize( mFontSizeSpinBox->value() );
754 format.
setOpacity( mTextOpacityWidget->opacity() );
762 buffer.
setEnabled( mBufferDrawChkBx->isChecked() );
763 buffer.
setSize( spinBufferSize->value() );
764 buffer.
setColor( btnBufferColor->color() );
765 buffer.
setOpacity( mBufferOpacityWidget->opacity() );
768 buffer.
setJoinStyle( mBufferJoinStyleComboBox->penJoinStyle() );
770 buffer.
setBlendMode( comboBufferBlendMode->blendMode() );
779 background.
setEnabled( mShapeDrawChkBx->isChecked() );
781 background.
setSvgFile( mShapeSVGPathLineEdit->text() );
783 background.
setSize( QSizeF( mShapeSizeXSpnBx->value(), mShapeSizeYSpnBx->value() ) );
784 background.
setSizeUnit( mShapeSizeUnitWidget->unit() );
787 background.
setRotation( mShapeRotationDblSpnBx->value() );
788 background.
setOffset( QPointF( mShapeOffsetXSpnBx->value(), mShapeOffsetYSpnBx->value() ) );
791 background.
setRadii( QSizeF( mShapeRadiusXDbSpnBx->value(), mShapeRadiusYDbSpnBx->value() ) );
792 background.
setRadiiUnit( mShapeRadiusUnitWidget->unit() );
800 background.
setJoinStyle( mShapePenStyleCmbBx->penJoinStyle() );
801 background.
setOpacity( mBackgroundOpacityWidget->opacity() );
802 background.
setBlendMode( mShapeBlendCmbBx->blendMode() );
811 shadow.
setEnabled( mShadowDrawChkBx->isChecked() );
822 shadow.
setOpacity( mShadowOpacityWidget->opacity() );
823 shadow.
setScale( mShadowScaleSpnBx->value() );
824 shadow.
setColor( mShadowColorBtn->color() );
836 void QgsTextFormatWidget::optionsStackedWidget_CurrentChanged(
int indx )
838 mLabelingOptionsListWidget->blockSignals(
true );
839 mLabelingOptionsListWidget->setCurrentRow( indx );
840 mLabelingOptionsListWidget->blockSignals(
false );
843 void QgsTextFormatWidget::collapseSample(
bool collapse )
847 QList<int> splitSizes = mFontPreviewSplitter->sizes();
848 if ( splitSizes[0] > groupBox_mPreview->height() )
850 int delta = splitSizes[0] - groupBox_mPreview->height();
851 splitSizes[0] -= delta;
852 splitSizes[1] += delta;
853 mFontPreviewSplitter->setSizes( splitSizes );
858 void QgsTextFormatWidget::changeTextColor(
const QColor &color )
864 void QgsTextFormatWidget::updateFont(
const QFont &font )
867 if ( font != mRefFont )
876 mDirectSymbLeftLineEdit->setFont( mRefFont );
877 mDirectSymbRightLineEdit->setFont( mRefFont );
879 blockFontChangeSignals(
true );
880 mFontFamilyCmbBx->setCurrentFont( mRefFont );
881 populateFontStyleComboBox();
882 int idx = mFontCapitalsComboBox->findData( QVariant( (
unsigned int ) mRefFont.capitalization() ) );
883 mFontCapitalsComboBox->setCurrentIndex( idx == -1 ? 0 : idx );
884 mFontUnderlineBtn->setChecked( mRefFont.underline() );
885 mFontStrikethroughBtn->setChecked( mRefFont.strikeOut() );
886 blockFontChangeSignals(
false );
894 void QgsTextFormatWidget::blockFontChangeSignals(
bool blk )
896 mFontFamilyCmbBx->blockSignals( blk );
897 mFontStyleComboBox->blockSignals( blk );
898 mFontCapitalsComboBox->blockSignals( blk );
899 mFontUnderlineBtn->blockSignals( blk );
900 mFontStrikethroughBtn->blockSignals( blk );
901 mFontWordSpacingSpinBox->blockSignals( blk );
902 mFontLetterSpacingSpinBox->blockSignals( blk );
905 void QgsTextFormatWidget::updatePreview()
917 lblFontPreview->setFormat(
format() );
920 void QgsTextFormatWidget::scrollPreview()
922 scrollArea_mPreview->ensureVisible( 0, 0, 0, 0 );
927 scrollArea_mPreview->widget()->setStyleSheet( QStringLiteral(
"background: rgb(%1, %2, %3);" ).arg( QString::number( color.red() ),
928 QString::number( color.green() ),
929 QString::number( color.blue() ) ) );
932 void QgsTextFormatWidget::changeBufferColor(
const QColor &color )
940 QWidget *curWdgt = stackedPlacement->currentWidget();
942 bool showLineFrame =
false;
943 bool showCentroidFrame =
false;
944 bool showQuadrantFrame =
false;
945 bool showFixedQuadrantFrame =
false;
946 bool showPlacementPriorityFrame =
false;
947 bool showOffsetTypeFrame =
false;
948 bool showOffsetFrame =
false;
949 bool showDistanceFrame =
false;
950 bool showRotationFrame =
false;
951 bool showMaxCharAngleFrame =
false;
953 bool enableMultiLinesFrame =
true;
955 if ( ( curWdgt == pagePoint && radAroundPoint->isChecked() )
956 || ( curWdgt == pagePolygon && radAroundCentroid->isChecked() ) )
958 showCentroidFrame = ( curWdgt == pagePolygon && radAroundCentroid->isChecked() );
959 showDistanceFrame =
true;
961 if ( curWdgt == pagePoint )
963 showQuadrantFrame =
true;
966 else if ( ( curWdgt == pagePoint && radOverPoint->isChecked() )
967 || ( curWdgt == pagePolygon && radOverCentroid->isChecked() ) )
969 showCentroidFrame = ( curWdgt == pagePolygon && radOverCentroid->isChecked() );
970 showQuadrantFrame =
true;
971 showFixedQuadrantFrame =
true;
972 showOffsetFrame =
true;
973 showRotationFrame =
true;
975 else if ( curWdgt == pagePoint && radPredefinedOrder->isChecked() )
977 showDistanceFrame =
true;
978 showPlacementPriorityFrame =
true;
979 showOffsetTypeFrame =
true;
981 else if ( ( curWdgt == pageLine && radLineParallel->isChecked() )
982 || ( curWdgt == pagePolygon && radPolygonPerimeter->isChecked() )
983 || ( curWdgt == pageLine && radLineCurved->isChecked() )
984 || ( curWdgt == pagePolygon && radPolygonPerimeterCurved->isChecked() ) )
986 showLineFrame =
true;
987 showDistanceFrame =
true;
990 bool offline = chkLineAbove->isChecked() || chkLineBelow->isChecked();
991 chkLineOrientationDependent->setEnabled( offline );
992 mPlacementDistanceFrame->setEnabled( offline );
994 bool isCurved = ( curWdgt == pageLine && radLineCurved->isChecked() )
995 || ( curWdgt == pagePolygon && radPolygonPerimeterCurved->isChecked() );
996 showMaxCharAngleFrame = isCurved;
998 enableMultiLinesFrame = !isCurved;
1001 mPlacementLineFrame->setVisible( showLineFrame );
1002 mPlacementCentroidFrame->setVisible( showCentroidFrame );
1003 mPlacementQuadrantFrame->setVisible( showQuadrantFrame );
1004 mPlacementFixedQuadrantFrame->setVisible( showFixedQuadrantFrame );
1005 mPlacementCartographicFrame->setVisible( showPlacementPriorityFrame );
1006 mPlacementOffsetFrame->setVisible( showOffsetFrame );
1007 mPlacementDistanceFrame->setVisible( showDistanceFrame );
1008 mPlacementOffsetTypeFrame->setVisible( showOffsetTypeFrame );
1009 mPlacementRotationFrame->setVisible( showRotationFrame );
1010 mPlacementRepeatDistanceFrame->setVisible( curWdgt == pageLine || ( curWdgt == pagePolygon &&
1011 ( radPolygonPerimeter->isChecked() || radPolygonPerimeterCurved->isChecked() ) ) );
1012 mPlacementMaxCharAngleFrame->setVisible( showMaxCharAngleFrame );
1014 mMultiLinesFrame->setEnabled( enableMultiLinesFrame );
1017 void QgsTextFormatWidget::populateFontCapitalsComboBox()
1019 mFontCapitalsComboBox->addItem( tr(
"No change" ), QVariant( 0 ) );
1020 mFontCapitalsComboBox->addItem( tr(
"All uppercase" ), QVariant( 1 ) );
1021 mFontCapitalsComboBox->addItem( tr(
"All lowercase" ), QVariant( 2 ) );
1025 mFontCapitalsComboBox->addItem( tr(
"Capitalize first letter" ), QVariant( 4 ) );
1028 void QgsTextFormatWidget::populateFontStyleComboBox()
1030 mFontStyleComboBox->clear();
1031 QStringList styles = mFontDB.styles( mRefFont.family() );
1032 Q_FOREACH (
const QString &style, styles )
1034 mFontStyleComboBox->addItem( style );
1037 QString targetStyle = mFontDB.styleString( mRefFont );
1038 if ( !styles.contains( targetStyle ) )
1040 QFont f = QFont( mRefFont.family() );
1041 targetStyle = QFontInfo( f ).styleName();
1042 mRefFont.setStyleName( targetStyle );
1045 int stylIndx = mFontStyleComboBox->findText( targetStyle );
1046 if ( stylIndx > -1 )
1051 mFontStyleComboBox->setCurrentIndex( curIndx );
1054 void QgsTextFormatWidget::mFontSizeSpinBox_valueChanged(
double d )
1056 mRefFont.setPointSizeF( d );
1057 updateFont( mRefFont );
1060 void QgsTextFormatWidget::mFontCapitalsComboBox_currentIndexChanged(
int index )
1062 int capitalsindex = mFontCapitalsComboBox->itemData( index ).toUInt();
1063 mRefFont.setCapitalization( ( QFont::Capitalization ) capitalsindex );
1064 updateFont( mRefFont );
1067 void QgsTextFormatWidget::mFontFamilyCmbBx_currentFontChanged(
const QFont &f )
1069 mRefFont.setFamily( f.family() );
1070 updateFont( mRefFont );
1073 void QgsTextFormatWidget::mFontStyleComboBox_currentIndexChanged(
const QString &text )
1076 updateFont( mRefFont );
1079 void QgsTextFormatWidget::mFontUnderlineBtn_toggled(
bool ckd )
1081 mRefFont.setUnderline( ckd );
1082 updateFont( mRefFont );
1085 void QgsTextFormatWidget::mFontStrikethroughBtn_toggled(
bool ckd )
1087 mRefFont.setStrikeOut( ckd );
1088 updateFont( mRefFont );
1091 void QgsTextFormatWidget::mFontWordSpacingSpinBox_valueChanged(
double spacing )
1093 mRefFont.setWordSpacing( spacing );
1094 updateFont( mRefFont );
1097 void QgsTextFormatWidget::mFontLetterSpacingSpinBox_valueChanged(
double spacing )
1099 mRefFont.setLetterSpacing( QFont::AbsoluteSpacing, spacing );
1100 updateFont( mRefFont );
1103 void QgsTextFormatWidget::mFontSizeUnitWidget_changed()
1108 mFontLimitPixelChkBox->setChecked(
false );
1114 mFontLimitPixelChkBox->setChecked(
true );
1116 updateFont( mRefFont );
1119 void QgsTextFormatWidget::mFontMinPixelSpinBox_valueChanged(
int px )
1122 mFontMaxPixelSpinBox->setMinimum( px );
1123 mFontMaxPixelSpinBox->update();
1126 void QgsTextFormatWidget::mFontMaxPixelSpinBox_valueChanged(
int px )
1129 if ( px < mFontMinPixelSpinBox->value() )
1131 mFontMaxPixelSpinBox->blockSignals(
true );
1132 mFontMaxPixelSpinBox->setValue( mFontMinPixelSpinBox->value() );
1133 mFontMaxPixelSpinBox->blockSignals(
false );
1135 mFontMaxPixelSpinBox->setMinimum( mFontMinPixelSpinBox->value() );
1138 void QgsTextFormatWidget::mBufferUnitWidget_changed()
1140 updateFont( mRefFont );
1143 void QgsTextFormatWidget::mCoordXDDBtn_activated(
bool active )
1149 else if ( mCoordYDDBtn->isActive() )
1155 void QgsTextFormatWidget::mCoordYDDBtn_activated(
bool active )
1161 else if ( mCoordXDDBtn->isActive() )
1167 void QgsTextFormatWidget::mShapeTypeCmbBx_currentIndexChanged(
int index )
1174 showBackgroundPenStyle( isRect );
1175 showBackgroundRadius( isRect );
1177 mShapeSVGPathFrame->setVisible( isSVG );
1179 mShapeSizeYLabel->setVisible( !isSVG );
1180 mShapeSizeYSpnBx->setVisible( !isSVG );
1181 mShapeSizeYDDBtn->setVisible( !isSVG && mWidgetMode ==
Labeling );
1182 mShapeSizeXLabel->setText( tr(
"Size%1" ).arg( !isSVG ? tr(
" X" ) : QLatin1String(
"" ) ) );
1185 mShapeFillColorBtn->setAllowOpacity( !isSVG );
1186 mShapeFillColorBtn->setButtonBackground();
1187 mShapeStrokeColorBtn->setAllowOpacity( !isSVG );
1188 mShapeStrokeColorBtn->setButtonBackground();
1191 mShapeSVGParamsBtn->setVisible( isSVG );
1194 updateSvgWidgets( mShapeSVGPathLineEdit->text() );
1198 mShapeFillColorLabel->setEnabled(
true );
1199 mShapeFillColorBtn->setEnabled(
true );
1200 mShapeFillColorDDBtn->setEnabled(
true );
1201 mShapeStrokeColorLabel->setEnabled(
true );
1202 mShapeStrokeColorBtn->setEnabled(
true );
1203 mShapeStrokeColorDDBtn->setEnabled(
true );
1204 mShapeStrokeWidthLabel->setEnabled(
true );
1205 mShapeStrokeWidthSpnBx->setEnabled(
true );
1206 mShapeStrokeWidthDDBtn->setEnabled(
true );
1210 mShapeStrokeWidthUnitWidget->setVisible( !isSVG );
1211 mShapeSVGUnitsLabel->setVisible( isSVG );
1212 mShapeStrokeUnitsDDBtn->setEnabled( !isSVG );
1215 void QgsTextFormatWidget::mShapeSVGPathLineEdit_textChanged(
const QString &text )
1217 updateSvgWidgets( text );
1222 int numOptionsChecked = ( chkLineAbove->isChecked() ? 1 : 0 ) +
1223 ( chkLineBelow->isChecked() ? 1 : 0 ) +
1224 ( chkLineOn->isChecked() ? 1 : 0 );
1226 if ( numOptionsChecked == 1 )
1229 chkLineAbove->setEnabled( !chkLineAbove->isChecked() );
1230 chkLineBelow->setEnabled( !chkLineBelow->isChecked() );
1231 chkLineOn->setEnabled( !chkLineOn->isChecked() );
1235 chkLineAbove->setEnabled(
true );
1236 chkLineBelow->setEnabled(
true );
1237 chkLineOn->setEnabled(
true );
1247 void QgsTextFormatWidget::previewScaleChanged(
double scale )
1249 lblFontPreview->setScale( scale );
1252 void QgsTextFormatWidget::updateSvgWidgets(
const QString &svgPath )
1254 if ( mShapeSVGPathLineEdit->text() != svgPath )
1256 mShapeSVGPathLineEdit->setText( svgPath );
1260 bool validSVG = QFileInfo::exists( resolvedPath );
1263 mShapeSVGPathLineEdit->setStyleSheet( QString( !validSVG ?
"QLineEdit{ color: rgb(225, 0, 0); }" :
"" ) );
1264 mShapeSVGPathLineEdit->setToolTip( !validSVG ? tr(
"File not found" ) : resolvedPath );
1266 QColor fill, stroke;
1267 double strokeWidth = 0.0;
1268 bool fillParam =
false, strokeParam =
false, strokeWidthParam =
false;
1274 mShapeSVGParamsBtn->setEnabled( validSVG && ( fillParam || strokeParam || strokeWidthParam ) );
1276 mShapeFillColorLabel->setEnabled( validSVG && fillParam );
1277 mShapeFillColorBtn->setEnabled( validSVG && fillParam );
1278 mShapeFillColorDDBtn->setEnabled( validSVG && fillParam );
1279 if ( mLoadSvgParams && validSVG && fillParam )
1280 mShapeFillColorBtn->setColor( fill );
1282 mShapeStrokeColorLabel->setEnabled( validSVG && strokeParam );
1283 mShapeStrokeColorBtn->setEnabled( validSVG && strokeParam );
1284 mShapeStrokeColorDDBtn->setEnabled( validSVG && strokeParam );
1285 if ( mLoadSvgParams && validSVG && strokeParam )
1286 mShapeStrokeColorBtn->setColor( stroke );
1288 mShapeStrokeWidthLabel->setEnabled( validSVG && strokeWidthParam );
1289 mShapeStrokeWidthSpnBx->setEnabled( validSVG && strokeWidthParam );
1290 mShapeStrokeWidthDDBtn->setEnabled( validSVG && strokeWidthParam );
1291 if ( mLoadSvgParams && validSVG && strokeWidthParam )
1292 mShapeStrokeWidthSpnBx->setValue( strokeWidth );
1298 mShapeSVGUnitsLabel->setEnabled( validSVG && strokeWidthParam );
1301 void QgsTextFormatWidget::mShapeSVGSelectorBtn_clicked()
1304 svgDlg.setWindowTitle( tr(
"Select SVG file" ) );
1307 if ( svgDlg.exec() == QDialog::Accepted )
1310 if ( !svgPath.isEmpty() )
1312 mShapeSVGPathLineEdit->setText( svgPath );
1317 void QgsTextFormatWidget::mShapeSVGParamsBtn_clicked()
1319 QString svgPath = mShapeSVGPathLineEdit->text();
1320 mLoadSvgParams =
true;
1321 updateSvgWidgets( svgPath );
1322 mLoadSvgParams =
false;
1325 void QgsTextFormatWidget::mShapeRotationCmbBx_currentIndexChanged(
int index )
1331 void QgsTextFormatWidget::mPreviewTextEdit_textChanged(
const QString &text )
1333 lblFontPreview->setText( text );
1337 void QgsTextFormatWidget::mPreviewTextBtn_clicked()
1339 mPreviewTextEdit->setText( QStringLiteral(
"Lorem Ipsum" ) );
1343 void QgsTextFormatWidget::mPreviewBackgroundBtn_colorChanged(
const QColor &color )
1348 void QgsTextFormatWidget::mDirectSymbLeftToolBtn_clicked()
1350 bool gotChar =
false;
1351 QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ) );
1356 if ( !dirSymb.isNull() )
1357 mDirectSymbLeftLineEdit->setText( QString( dirSymb ) );
1360 void QgsTextFormatWidget::mDirectSymbRightToolBtn_clicked()
1362 bool gotChar =
false;
1363 QChar dirSymb = mCharDlg->
selectCharacter( &gotChar, mRefFont, mFontDB.styleString( mRefFont ) );
1368 if ( !dirSymb.isNull() )
1369 mDirectSymbRightLineEdit->setText( QString( dirSymb ) );
1372 void QgsTextFormatWidget::mChkNoObstacle_toggled(
bool active )
1374 mPolygonObstacleTypeFrame->setEnabled( active );
1375 mObstaclePriorityFrame->setEnabled( active );
1378 void QgsTextFormatWidget::chkLineOrientationDependent_toggled(
bool active )
1382 chkLineAbove->setText( tr(
"Left of line" ) );
1383 chkLineBelow->setText( tr(
"Right of line" ) );
1387 chkLineAbove->setText( tr(
"Above line" ) );
1388 chkLineBelow->setText( tr(
"Below line" ) );
1393 void QgsTextFormatWidget::mToolButtonConfigureSubstitutes_clicked()
1408 if ( dlg.exec() == QDialog::Accepted )
1415 void QgsTextFormatWidget::showBackgroundRadius(
bool show )
1417 mShapeRadiusLabel->setVisible( show );
1418 mShapeRadiusXDbSpnBx->setVisible( show );
1420 mShapeRadiusYDbSpnBx->setVisible( show );
1422 mShapeRadiusUnitWidget->setVisible( show );
1424 mShapeRadiusDDBtn->setVisible( show && mWidgetMode ==
Labeling );
1425 mShapeRadiusUnitsDDBtn->setVisible( show && mWidgetMode ==
Labeling );
1428 void QgsTextFormatWidget::showBackgroundPenStyle(
bool show )
1430 mShapePenStyleLabel->setVisible( show );
1431 mShapePenStyleCmbBx->setVisible( show );
1433 mShapePenStyleDDBtn->setVisible( show && mWidgetMode ==
Labeling );
1438 mCoordAlignmentFrame->setEnabled( enable );
1447 : QDialog( parent, fl )
1449 setWindowTitle( tr(
"Text Settings" ) );
1452 mFormatWidget->layout()->setContentsMargins( 0, 0, 0, 0 );
1454 QVBoxLayout *layout =
new QVBoxLayout(
this );
1455 layout->addWidget( mFormatWidget );
1457 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal,
this );
1458 layout->addWidget( buttonBox );
1460 setLayout( layout );
1463 restoreGeometry( settings.
value( QStringLiteral(
"Windows/TextFormatDialog/geometry" ) ).toByteArray() );
1465 connect( buttonBox->button( QDialogButtonBox::Ok ), &QAbstractButton::clicked,
this, &QDialog::accept );
1466 connect( buttonBox->button( QDialogButtonBox::Cancel ), &QAbstractButton::clicked,
this, &QDialog::reject );
1477 return mFormatWidget->
format();
1489 return mFormatWidget->
format();
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the buffer.
static QgsSvgCache * svgCache()
Returns the application's SVG cache, used for caching SVG images and handling parameter replacement w...
QColor strokeColor() const
Returns the color used for outlining the background shape.
void setScale(int scale)
Sets the scaling used for the drop shadow (in percentage of original size).
Meters value as Map units.
void setLineHeight(double height)
Sets the line height for text.
void setRadiiUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's radii.
void setStrokeWidth(double width)
Sets the width of the shape's stroke (stroke).
RotationType
Methods for determining the rotation of the background shape.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shadow offset distance.
void setOpacity(double opacity)
Sets the text's opacity.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape stroke width.
void setOffsetUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shadow's offset.
QgsTextShadowSettings::ShadowPlacement shadowPlacement() const
Returns the placement for the drop shadow.
QSizeF radii() const
Returns the radii used for rounding the corners of shapes.
QSizeF size() const
Returns the size of the background shape.
double opacity() const
Returns the text's opacity.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used for the shape's size.
bool fontFound() const
Returns true if the specified font was found on the system, or false if the font was not found and a ...
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the drop shadow.
QPointF offset() const
Returns the offset used for drawing the background shape.
QColor fillColor() const
Returns the color used for filing the background shape.
QgsMapUnitScale strokeWidthMapUnitScale() const
Returns the map unit scale object for the shape stroke width.
void setDockMode(bool enabled)
Sets whether the widget should be shown in a compact dock mode.
This class is a composition of two QSettings instances:
A groupbox that collapses/expands when toggled and can save its collapsed and checked states...
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
ShadowPlacement
Placement positions for text shadow.
Place direction symbols on below label.
QgsTextShadowSettings & shadow()
Returns a reference to the text drop shadow settings.
double blurRadius() const
Returns the blur radius for the shadow.
double opacity() const
Returns the background shape's opacity.
static void warning(const QString &msg)
Goes to qWarning.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the size.
void setStrokeColor(const QColor &color)
Sets the color used for outlining the background shape.
void setSize(double size)
Sets the size of the buffer.
double strokeWidth() const
Returns the width of the shape's stroke (stroke).
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used for the buffer size.
double offsetDistance() const
Returns the distance for offsetting the position of the shadow from the text.
QButtonGroup * mUpsidedownBtnGrp
Upside down labels button group.
void setFont(const QFont &font)
Sets the font used for rendering text.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the buffer.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
void collapsedStateChanged(bool collapsed)
Signal emitted when groupbox collapsed/expanded state is changed, and when first shown.
Candidates are placed in predefined positions around a point. Preference is given to positions with g...
void setOffsetUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's offset.
QColor color() const
Returns the color that text will be rendered in.
void setFillBufferInterior(bool fill)
Sets whether the interior of the buffer will be filled in.
void setBlurRadius(double blurRadius)
Sets the blur radius for the shadow.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the buffer.
void setOpacity(double opacity)
Sets the shadow's opacity.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape size.
void setDockMode(bool dockMode) override
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs...
void updateWidgetForFormat(const QgsTextFormat &format)
Updates the widget's state to reflect the settings in a QgsTextFormat.
QgsTextFormat format() const
Returns the current formatting settings defined by the widget.
A dialog for selecting a single character from a single font.
void setBackground(const QgsTextBackgroundSettings &backgroundSettings)
Sets the text's background settings.q.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the background shape.
Container for settings relating to a text background object.
A widget for customizing text formatting settings.
Percentage of another measurement (e.g., canvas size, feature size)
QgsMapUnitScale offsetMapUnitScale() const
Returns the map unit scale object for the shape offset.
void setRadiiMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape radii.
void setBlurRadiusUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shadow's blur radius.
void setBlurRadiusMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shadow blur radius.
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
Map canvas is a class for displaying all GIS data types on a canvas.
Show labeling settings in addition to text formatting settings.
ShapeType type() const
Returns the type of background shape (e.g., square, ellipse, SVG).
void setOffset(QPointF offset)
Sets the offset used for drawing the background shape.
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
Qt::PenJoinStyle joinStyle() const
Returns the buffer join style.
Arranges candidates following the curvature of a line feature. Applies to line layers only...
QgsUnitTypes::DistanceUnit mapUnits() const
Gets units of map's geographical coordinates - used for scale calculation.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the buffer size.
void saveGeometry(QWidget *widget, const QString &keyName)
Save the wigget geometry into settings.
Place direction symbols on left/right of label.
bool restoreGeometry(QWidget *widget, const QString &keyName)
Restore the wigget geometry from settings.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the background shape.
QgsMapUnitScale offsetMapUnitScale() const
Returns the map unit scale object for the shadow offset distance.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the text.
QColor color() const
Returns the color of the drop shadow.
void setSize(double size)
Sets the size for rendered text.
void setOffsetDistance(double distance)
Sets the distance for offsetting the position of the shadow from the text.
void widgetChanged()
Emitted when the text format defined by the widget changes.
static QgsPaintEffect * defaultStack()
Returns a new effect stack consisting of a sensible selection of default effects. ...
QgsMapUnitScale blurRadiusMapUnitScale() const
Returns the map unit scale object for the shadow blur radius.
Offset distance applies from point geometry.
Default mode, show text formatting settings only.
bool fillBufferInterior() const
Returns whether the interior of the buffer will be filled in.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape offset.
void setBlurAlphaOnly(bool alphaOnly)
Sets whether only the alpha channel for the shadow should be blurred.
RotationType rotationType() const
Returns the method used for rotating the background shape.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the buffer size.
double scale() const
Returns the calculated map scale.
Show upside down for all labels, including dynamic ones.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the background shape.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the drop shadow.
void enableDataDefinedAlignment(bool enable)
Controls whether data defined alignment buttons are enabled.
void setColor(const QColor &color)
Sets the color for the drop shadow.
points (e.g., for font sizes)
void setEnabled(bool enabled)
Sets whether the text shadow will be drawn.
void setEnabled(bool enabled)
Sets whether the text buffer will be drawn.
void setFormat(const QgsTextFormat &format)
Sets the current formatting settings.
Arranges candidates in a circle around a point (or centroid of a polygon). Applies to point or polygo...
void setColor(const QColor &color)
Sets the color that text will be rendered in.
QgsMapUnitScale radiiMapUnitScale() const
Returns the map unit scale object for the shape radii.
QString svgFile() const
Returns the absolute path to the background SVG file, if set.
Qt::PenJoinStyle joinStyle() const
Returns the join style used for drawing the background shape.
void setNamedStyle(const QString &style)
Sets the named style for the font used for rendering text.
QgsTextBackgroundSettings & background()
Returns a reference to the text background settings.
QgsTextBufferSettings & buffer()
Returns a reference to the text buffer settings.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the size of rendered text.
Upside-down labels (90 <= angle < 270) are shown upright.
SizeType
Methods for determining the background shape size.
double opacity() const
Returns the buffer opacity.
void updateLinePlacementOptions()
Updates line placement options to reflect current state of widget.
void setSize(QSizeF size)
Sets the size of the background shape.
QgsStringReplacementCollection mSubstitutions
Text substitution list.
void setSettingGroup(const QString &group)
Sets this to a defined string to share save/restore states across different parent dialogs...
void setRadii(QSizeF radii)
Sets the radii used for rounding the corners of shapes.
void setPreviewBackground(const QColor &color)
Sets the background color for the text preview widget.
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the units used for the shape's stroke width.
Offset distance applies from rendered symbol bounds.
void setSizeType(SizeType type)
Sets the method used to determine the size of the background shape (e.g., fixed size or buffer around...
const QChar & selectCharacter(bool *gotChar, const QFont &font, const QString &style)
void setType(ShapeType type)
Sets the type of background shape to draw (e.g., square, ellipse, SVG).
Place direction symbols on above label.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the background shape.
QgsTextFormat format() const
Returns the current formatting settings defined by the widget.
void containsParams(const QString &path, bool &hasFillParam, QColor &defaultFillColor, bool &hasStrokeParam, QColor &defaultStrokeColor, bool &hasStrokeWidthParam, double &defaultStrokeWidth) const
Tests if an svg file contains parameters for fill, stroke color, stroke width.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shape's offset.
double rotation() const
Returns the rotation for the background shape, in degrees clockwise.
double lineHeight() const
Returns the line height for text.
QButtonGroup * mPlaceLineBtnGrp
Line placement button group.
void setEnabled(bool enabled)
Sets whether the text background will be drawn.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
int offsetAngle() const
Returns the angle for offsetting the position of the shadow from the text.
ShapeType
Background shape types.
QgsSvgSelectorWidget * svgSelector()
Returns pointer to the embedded SVG selector widget.
Arranges candidates over a point (or centroid of a polygon), or at a preset offset from the point...
QgsTextFormat format() const
Returns the current formatting settings defined by the widget.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
~QgsTextFormatWidget() override
static bool fontFamilyMatchOnSystem(const QString &family, QString *chosen=nullptr, bool *match=nullptr)
Check whether font family is on system.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the size.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the buffer size.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shadow's offset.
bool enabled() const
Returns whether the shadow is enabled.
QgsTextFormatWidget(const QgsTextFormat &format=QgsTextFormat(), QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr)
Constructor for QgsTextFormatWidget.
QButtonGroup * mPlacePolygonBtnGrp
Polygon placement button group.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
Container for settings relating to a text shadow.
A collection of string replacements (specified using QgsStringReplacement objects).
bool offsetGlobal() const
Returns true if the global shadow offset will be used.
QColor color() const
Returns the color of the buffer.
double size() const
Returns the size of the buffer.
QgsUnitTypes::RenderUnit radiiUnit() const
Returns the units used for the shape's radii.
Container for settings relating to a text buffer.
void setFillColor(const QColor &color)
Sets the color used for filing the background shape.
static bool updateFontViaStyle(QFont &f, const QString &fontstyle, bool fallback=false)
Updates font with named style and retain all font properties.
static QgsProject * instance()
Returns the QgsProject singleton instance.
double size() const
Returns the size for rendered text.
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's stroke width.
bool enabled() const
Returns whether the background is enabled.
int mMinPixelLimit
Pixel size font limit.
~QgsTextFormatDialog() override
SizeType sizeType() const
Returns the method used to determine the size of the background shape (e.g., fixed size or buffer aro...
void setSubstitutions(const QgsStringReplacementCollection &substitutions)
Sets the list of substitutions to show in the dialog.
QgsUnitTypes::RenderUnit blurRadiusUnit() const
Returns the units used for the shadow's blur radius.
bool enabled() const
Returns whether the buffer is enabled.
int scale() const
Returns the scaling used for the drop shadow (in percentage of original size).
Shape rotation is synced with text rotation.
QButtonGroup * mQuadrantBtnGrp
Quadrant button group.
void setShadowPlacement(QgsTextShadowSettings::ShadowPlacement placement)
Sets the placement for the drop shadow.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the text.
void setBuffer(const QgsTextBufferSettings &bufferSettings)
Sets the text's buffer settings.
void setShadow(const QgsTextShadowSettings &shadowSettings)
Sets the text's drop shadow settings.
A dialog which allows users to specify a list of substitutions to apply to a string, with options for exporting and importing substitution lists.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the buffer.
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the shape size.
static QString svgSymbolNameToPath(const QString &name, const QgsPathResolver &pathResolver)
Determines an SVG symbol's path from its name.
Show upside down when rotation is layer- or data-defined.
void updatePlacementWidgets()
Updates label placement options to reflect current state of widget.
Container for all settings relating to text rendering.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the size of rendered text.
bool contains(const QString &key, QgsSettings::Section section=QgsSettings::NoSection) const
Returns true if there exists a setting called key; returns false otherwise.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the buffer.
void setSvgFile(const QString &file)
Sets the path to the background SVG file.
bool blurAlphaOnly() const
Returns whether only the alpha channel for the shadow will be blurred.
void setOffsetGlobal(bool global)
Sets whether the global shadow offset should be used.
QButtonGroup * mPlacePointBtnGrp
Point placement button group.
void setOpacity(double opacity)
Sets the buffer opacity.
Square - buffered sizes only.
QgsStringReplacementCollection substitutions
QgsTextFormatPanelWidget(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr)
Constructor for QgsTextFormatPanelWidget.
QString namedStyle() const
Returns the named style for the font used for rendering text (e.g., "bold").
QFont font() const
Returns the font used for rendering text.
void setRotationType(RotationType type)
Sets the method used for rotating the background shape.
void setColor(const QColor &color)
Sets the color for the buffer.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units used for the shape's size.
QButtonGroup * mDirectSymbBtnGrp
Symbol direction button group.
double opacity() const
Returns the shadow's opacity.
void setOpacity(double opacity)
Sets the background shape's opacity.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the background shape.
QString resolvedFontFamily() const
Returns the family for the resolved font, ie if the specified font was not found on the system this w...
QgsTextFormatDialog(const QgsTextFormat &format, QgsMapCanvas *mapCanvas=nullptr, QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags)
Constructor for QgsTextFormatDialog.
void setOffsetAngle(int angle)
Sets the angle for offsetting the position of the shadow from the text.
Arranges candidates scattered throughout a polygon feature. Candidates are rotated to respect the pol...
void setRotation(double rotation)
Sets the rotation for the background shape, in degrees clockwise.