diff --git a/python/gui/gui.sip b/python/gui/gui.sip index ca8e6a4575f..ef63cb219e2 100644 --- a/python/gui/gui.sip +++ b/python/gui/gui.sip @@ -161,6 +161,7 @@ %Include qgstabwidget.sip %Include qgstablewidgetitem.sip %Include qgstextannotationitem.sip +%Include qgstextpreview.sip %Include qgstrackedvectorlayertools.sip %Include qgstreewidgetitem.sip %Include qgsunitselectionwidget.sip diff --git a/python/gui/qgstextpreview.sip b/python/gui/qgstextpreview.sip new file mode 100644 index 00000000000..a87d984b7f0 --- /dev/null +++ b/python/gui/qgstextpreview.sip @@ -0,0 +1,66 @@ +/** \class QgsTextPreview + * \ingroup gui + * A widget for previewing text formatting settings. + * + * QgsTextPreview provides a widget for previewing the appearance of text rendered + * using QgsTextRenderer. The preview includes all settings contained within + * a QgsTextFormat, including shadow, background and buffer. + * + * In order to preview the exact appearance of text which uses sizes in map units, + * the scale and map units must be set by calling setScale() and setMapUnits(). + * + * @note Added in QGIS 3.0 + */ + +class QgsTextPreview : public QLabel +{ +%TypeHeaderCode + #include +%End + public: + + /** Constructor for QgsTextPreview + * @param parent parent widget + */ + QgsTextPreview( QWidget* parent = nullptr ); + + void paintEvent( QPaintEvent* e ); + + /** Sets the text format for previewing in the widget. + * @param format text format + * @see format() + */ + void setFormat( const QgsTextFormat& format ); + + /** Returns the text format used for previewing text in the widget. + * @see setFormat() + */ + QgsTextFormat format() const; + + /** Sets the scale to use for previewing format sizes in map units. + * @param scale preview map scale + * @see scale() + * @see setMapUnits() + */ + void setScale( double scale ); + + /** Returns the scale used for previewing format sizes in map units. + * @see setScale() + * @see mapUnits() + */ + double scale() const; + + /** Sets the map unit type for previewing format sizes in map units. + * @param unit map units + * @see mapUnits() + * @see setScale() + */ + void setMapUnits( QgsUnitTypes::DistanceUnit unit ); + + /** Returns the map unit type used for previewing format sizes in map units. + * @see setMapUnits() + * @see scale() + */ + QgsUnitTypes::DistanceUnit mapUnits() const; + +}; diff --git a/src/app/qgslabelinggui.cpp b/src/app/qgslabelinggui.cpp index 2514e6e8450..63212e74bbf 100644 --- a/src/app/qgslabelinggui.cpp +++ b/src/app/qgslabelinggui.cpp @@ -78,6 +78,10 @@ QgsLabelingGui::QgsLabelingGui( QgsVectorLayer* layer, QgsMapCanvas* mapCanvas, { setupUi( this ); + mPreviewScaleComboBox->setMapCanvas( mMapCanvas ); + mPreviewScaleComboBox->setShowCurrentScaleButton( true ); + connect( mPreviewScaleComboBox, SIGNAL( scaleChanged( double ) ), this, SLOT( previewScaleChanged( double ) ) ); + mFieldExpressionWidget->registerExpressionContextGenerator( this ); Q_FOREACH ( QgsUnitSelectionWidget* unitWidget, findChildren() ) @@ -485,6 +489,12 @@ QgsLabelingGui::QgsLabelingGui( QgsVectorLayer* layer, QgsMapCanvas* mapCanvas, // set correct initial tab to match displayed setting page whileBlocking( mOptionsTab )->setCurrentIndex( mLabelStackedWidget->currentIndex() ); + + if ( mMapCanvas ) + { + lblFontPreview->setMapUnits( mMapCanvas->mapSettings().mapUnits() ); + mPreviewScaleComboBox->setScale( 1.0 / mMapCanvas->mapSettings().scale() ); + } } void QgsLabelingGui::setDockMode( bool enabled ) @@ -958,7 +968,10 @@ QgsPalLayerSettings QgsLabelingGui::layerSettings() lyr.distInMapUnits = ( mLineDistanceUnitWidget->unit() == QgsUnitTypes::RenderMapUnits ); lyr.distMapUnitScale = mLineDistanceUnitWidget->getMapUnitScale(); lyr.offsetType = static_cast< QgsPalLayerSettings::OffsetType >( mOffsetTypeComboBox->currentData().toInt() ); - lyr.quadOffset = ( QgsPalLayerSettings::QuadrantPosition )mQuadrantBtnGrp->checkedId(); + if ( mQuadrantBtnGrp ) + { + lyr.quadOffset = ( QgsPalLayerSettings::QuadrantPosition )mQuadrantBtnGrp->checkedId(); + } lyr.xOffset = mPointOffsetXSpinBox->value(); lyr.yOffset = mPointOffsetYSpinBox->value(); lyr.labelOffsetInMapUnits = ( mPointOffsetUnitWidget->unit() == QgsUnitTypes::RenderMapUnits ); @@ -1036,6 +1049,7 @@ QgsPalLayerSettings QgsLabelingGui::layerSettings() QgsTextFormat format; format.setColor( btnTextColor->color() ); format.setFont( mRefFont ); + format.setSize( mFontSizeSpinBox->value() ); format.setNamedStyle( mFontStyleComboBox->currentText() ); format.setOpacity( 1.0 - mFontTranspSpinBox->value() / 100.0 ); format.setBlendMode( comboBlendMode->blendMode() ); @@ -1115,9 +1129,14 @@ QgsPalLayerSettings QgsLabelingGui::layerSettings() lyr.leftDirectionSymbol = mDirectSymbLeftLineEdit->text(); lyr.rightDirectionSymbol = mDirectSymbRightLineEdit->text(); lyr.reverseDirectionSymbol = mDirectSymbRevChkBx->isChecked(); - lyr.placeDirectionSymbol = ( QgsPalLayerSettings::DirectionSymbols )mDirectSymbBtnGrp->checkedId(); - - lyr.upsidedownLabels = ( QgsPalLayerSettings::UpsideDownLabels )mUpsidedownBtnGrp->checkedId(); + if ( mDirectSymbBtnGrp ) + { + lyr.placeDirectionSymbol = ( QgsPalLayerSettings::DirectionSymbols )mDirectSymbBtnGrp->checkedId(); + } + if ( mUpsidedownBtnGrp ) + { + lyr.upsidedownLabels = ( QgsPalLayerSettings::UpsideDownLabels )mUpsidedownBtnGrp->checkedId(); + } lyr.maxCurvedCharAngleIn = mMaxCharAngleInDSpinBox->value(); // lyr.maxCurvedCharAngleOut must be negative, but it is shown as positive spinbox in GUI @@ -1590,78 +1609,12 @@ void QgsLabelingGui::updatePreview() return; } + QgsTextFormat format = layerSettings().format(); + scrollPreview(); - lblFontPreview->setFont( mRefFont ); - QFont previewFont = lblFontPreview->font(); - double fontSize = mFontSizeSpinBox->value(); - double previewRatio = mPreviewSize / fontSize; - double bufferSize = 0.0; + lblFontPreview->setFormat( format ); QString grpboxtitle; - QString sampleTxt = tr( "Text/Buffer sample" ); - - if ( mFontSizeUnitWidget->getUnit() == 1 ) // map units - { - // TODO: maybe match current map zoom level instead? - previewFont.setPointSize( mPreviewSize ); - mPreviewSizeSlider->setEnabled( true ); - grpboxtitle = sampleTxt + tr( " @ %1 pts (using map units)" ).arg( mPreviewSize ); - - previewFont.setWordSpacing( previewRatio * mFontWordSpacingSpinBox->value() ); - previewFont.setLetterSpacing( QFont::AbsoluteSpacing, previewRatio * mFontLetterSpacingSpinBox->value() ); - - if ( mBufferDrawChkBx->isChecked() ) - { - if ( mBufferUnitWidget->unit() == QgsUnitTypes::RenderMapUnits ) - { - bufferSize = previewRatio * spinBufferSize->value() / 3.527; - } - else // millimeters - { - grpboxtitle = sampleTxt + tr( " @ %1 pts (using map units, BUFFER IN MILLIMETERS)" ).arg( mPreviewSize ); - bufferSize = spinBufferSize->value(); - } - } - } - else // in points - { - if ( fontSize > 0 ) - previewFont.setPointSize( fontSize ); - mPreviewSizeSlider->setEnabled( false ); - grpboxtitle = sampleTxt; - - if ( mBufferDrawChkBx->isChecked() ) - { - if ( mBufferUnitWidget->unit() == QgsUnitTypes::RenderMillimeters ) - { - bufferSize = spinBufferSize->value(); - } - else // map units - { - grpboxtitle = sampleTxt + tr( " (BUFFER NOT SHOWN, in map units)" ); - } - } - } - - lblFontPreview->setFont( previewFont ); groupBox_mPreview->setTitle( grpboxtitle ); - - QColor prevColor = btnTextColor->color(); - prevColor.setAlphaF(( 100.0 - ( double )( mFontTranspSpinBox->value() ) ) / 100.0 ); - lblFontPreview->setTextColor( prevColor ); - - bool bufferNoFill = false; - if ( mBufferDrawChkBx->isChecked() && bufferSize != 0.0 ) - { - QColor buffColor = btnBufferColor->color(); - buffColor.setAlphaF(( 100.0 - ( double )( mBufferTranspSpinBox->value() ) ) / 100.0 ); - - bufferNoFill = !mBufferTranspFillChbx->isChecked(); - lblFontPreview->setBuffer( bufferSize, buffColor, mBufferJoinStyleComboBox->penJoinStyle(), bufferNoFill ); - } - else - { - lblFontPreview->setBuffer( 0, Qt::white, Qt::BevelJoin, bufferNoFill ); - } } void QgsLabelingGui::scrollPreview() @@ -1813,12 +1766,6 @@ void QgsLabelingGui::populateFontStyleComboBox() mFontStyleComboBox->setCurrentIndex( curIndx ); } -void QgsLabelingGui::on_mPreviewSizeSlider_valueChanged( int i ) -{ - mPreviewSize = i; - updatePreview(); -} - void QgsLabelingGui::on_mFontSizeSpinBox_valueChanged( double d ) { mRefFont.setPointSizeF( d ); @@ -2013,6 +1960,11 @@ void QgsLabelingGui::onSubstitutionsChanged( const QgsStringReplacementCollectio emit widgetChanged(); } +void QgsLabelingGui::previewScaleChanged( double scale ) +{ + lblFontPreview->setScale( scale ); +} + void QgsLabelingGui::updateSvgWidgets( const QString& svgPath ) { if ( mShapeSVGPathLineEdit->text() != svgPath ) diff --git a/src/app/qgslabelinggui.h b/src/app/qgslabelinggui.h index e0a7cba5ae7..ce7e2856ac9 100644 --- a/src/app/qgslabelinggui.h +++ b/src/app/qgslabelinggui.h @@ -22,6 +22,7 @@ #include #include #include "qgsstringutils.h" +#include "qgspallabeling.h" class QgsVectorLayer; class QgsMapCanvas; @@ -67,7 +68,6 @@ class APP_EXPORT QgsLabelingGui : public QWidget, private Ui::QgsLabelingGuiBase void updatePlacementWidgets(); void updateSvgWidgets( const QString& svgPath ); - void on_mPreviewSizeSlider_valueChanged( int i ); void on_mFontSizeSpinBox_valueChanged( double d ); void on_mFontCapitalsComboBox_currentIndexChanged( int index ); void on_mFontFamilyCmbBx_currentFontChanged( const QFont& f ); @@ -150,6 +150,7 @@ class APP_EXPORT QgsLabelingGui : public QWidget, private Ui::QgsLabelingGuiBase void on_mShapeSVGPathLineEdit_textChanged( const QString& text ); void updateLinePlacementOptions(); void onSubstitutionsChanged( const QgsStringReplacementCollection& substitutions ); + void previewScaleChanged( double scale ); }; #endif diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index fb9cc6bc2d6..2f42b62ba2d 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -308,6 +308,7 @@ SET(QGIS_GUI_SRCS qgstabwidget.cpp qgstablewidgetitem.cpp qgstextannotationitem.cpp + qgstextpreview.cpp qgstrackedvectorlayertools.cpp qgstreewidgetitem.cpp qgsunitselectionwidget.cpp @@ -461,6 +462,7 @@ SET(QGIS_GUI_MOC_HDRS qgssublayersdialog.h qgstablewidgetbase.h qgstabwidget.h + qgstextpreview.h qgstreewidgetitem.h qgsunitselectionwidget.h qgsuserinputdockwidget.h diff --git a/src/gui/qgstextpreview.cpp b/src/gui/qgstextpreview.cpp new file mode 100644 index 00000000000..00f8a92864f --- /dev/null +++ b/src/gui/qgstextpreview.cpp @@ -0,0 +1,97 @@ +/*************************************************************************** + qgstextpreview.cpp + ------------------ + begin : October 2016 + copyright : (C) 2016 by Nyall Dawson + email : nyall dot dawson at gmail dot com + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "qgstextpreview.h" +#include +#include + +QgsTextPreview::QgsTextPreview( QWidget* parent ) + : QLabel( parent ) + , mScale( -1 ) + , mMapUnits( QgsUnitTypes::DistanceMeters ) +{ + // initially use a basic transform with no scale + QgsMapToPixel newCoordXForm; + newCoordXForm.setParameters( 1, 0, 0, 0, 0, 0 ); + mContext.setMapToPixel( newCoordXForm ); + + mContext.setScaleFactor( QgsApplication::desktop()->logicalDpiX() / 25.4 ); + mContext.setUseAdvancedEffects( true ); +} + + +void QgsTextPreview::paintEvent( QPaintEvent *e ) +{ + Q_UNUSED( e ); + QPainter p( this ); + + p.setRenderHint( QPainter::Antialiasing ); + + // slightly inset text + double xtrans = 0; + if ( mFormat.buffer().enabled() ) + xtrans = QgsTextRenderer::scaleToPixelContext( mFormat.buffer().size(), mContext, mFormat.buffer().sizeUnit(), false, mFormat.buffer().sizeMapUnitScale() ); + if ( mFormat.background().enabled() && mFormat.background().sizeType() != QgsTextBackgroundSettings::SizeFixed ) + xtrans = qMax( xtrans, QgsTextRenderer::scaleToPixelContext( mFormat.background().size().width(), mContext, mFormat.background().sizeUnit(), false, mFormat.background().sizeMapUnitScale() ) ); + xtrans += 4; + + double ytrans = 0.0; + if ( mFormat.buffer().enabled() ) + ytrans = qMax( ytrans, QgsTextRenderer::scaleToPixelContext( mFormat.buffer().size(), mContext, mFormat.buffer().sizeUnit(), false, mFormat.buffer().sizeMapUnitScale() ) ); + if ( mFormat.background().enabled() ) + ytrans = qMax( ytrans, QgsTextRenderer::scaleToPixelContext( mFormat.background().size().height(), mContext, mFormat.background().sizeUnit(), false, mFormat.background().sizeMapUnitScale() ) ); + ytrans += 4; + + QRectF textRect = rect(); + textRect.setLeft( xtrans ); + textRect.setWidth( textRect.width() - xtrans ); + textRect.setTop( ytrans ); + if ( textRect.height() > 300 ) + textRect.setHeight( 300 ); + if ( textRect.width() > 2000 ) + textRect.setWidth( 2000 ); + + mContext.setPainter( &p ); + QgsTextRenderer::drawText( textRect, 0 , QgsTextRenderer::AlignLeft, QStringList() << text(), + mContext, mFormat ); +} + +void QgsTextPreview::setFormat( const QgsTextFormat& format ) +{ + mFormat = format; + update(); +} + +void QgsTextPreview::updateContext() +{ + if ( mScale >= 0 ) + { + QgsMapToPixel newCoordXForm = QgsMapToPixel::fromScale( mScale, mMapUnits, QgsApplication::desktop()->logicalDpiX() ); + mContext.setMapToPixel( newCoordXForm ); + } + update(); +} + +void QgsTextPreview::setScale( double scale ) +{ + mScale = scale; + updateContext(); +} + +void QgsTextPreview::setMapUnits( QgsUnitTypes::DistanceUnit unit ) +{ + mMapUnits = unit; + updateContext(); +} diff --git a/src/gui/qgstextpreview.h b/src/gui/qgstextpreview.h new file mode 100644 index 00000000000..7f1304c4e11 --- /dev/null +++ b/src/gui/qgstextpreview.h @@ -0,0 +1,98 @@ +/*************************************************************************** + qgstextpreview.h + ---------------- + begin : October 2016 + copyright : (C) 2016 by Nyall Dawson + email : nyall dot dawson at gmail dot com + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef QGSTEXTPREVIEW_H +#define QGSTEXTPREVIEW_H + +#include "qgstextrenderer.h" + +#include + +/** \class QgsTextPreview + * \ingroup gui + * A widget for previewing text formatting settings. + * + * QgsTextPreview provides a widget for previewing the appearance of text rendered + * using QgsTextRenderer. The preview includes all settings contained within + * a QgsTextFormat, including shadow, background and buffer. + * + * In order to preview the exact appearance of text which uses sizes in map units, + * the scale and map units must be set by calling setScale() and setMapUnits(). + * + * @note Added in QGIS 3.0 + */ + +class GUI_EXPORT QgsTextPreview : public QLabel +{ + Q_OBJECT + + Q_PROPERTY( QgsTextFormat format READ format WRITE setFormat ) + Q_PROPERTY( double scale READ scale WRITE setScale ) + Q_PROPERTY( QgsUnitTypes::DistanceUnit mapUnits READ mapUnits WRITE setMapUnits ) + + public: + + /** Constructor for QgsTextPreview + * @param parent parent widget + */ + QgsTextPreview( QWidget* parent = nullptr ); + + void paintEvent( QPaintEvent* e ) override; + + /** Sets the text format for previewing in the widget. + * @param format text format + * @see format() + */ + void setFormat( const QgsTextFormat& format ); + + /** Returns the text format used for previewing text in the widget. + * @see setFormat() + */ + QgsTextFormat format() const { return mFormat; } + + /** Sets the scale to use for previewing format sizes in map units. + * @param scale preview map scale + * @see scale() + * @see setMapUnits() + */ + void setScale( double scale ); + + /** Returns the scale used for previewing format sizes in map units. + * @see setScale() + * @see mapUnits() + */ + double scale() const { return mScale; } + + /** Sets the map unit type for previewing format sizes in map units. + * @param unit map units + * @see mapUnits() + * @see setScale() + */ + void setMapUnits( QgsUnitTypes::DistanceUnit unit ); + + /** Returns the map unit type used for previewing format sizes in map units. + * @see setMapUnits() + * @see scale() + */ + QgsUnitTypes::DistanceUnit mapUnits() const { return mMapUnits; } + + private: + QgsTextFormat mFormat; + QgsRenderContext mContext; + double mScale; + QgsUnitTypes::DistanceUnit mMapUnits; + void updateContext(); +}; + +#endif // QGSTEXTPREVIEW_H diff --git a/src/ui/qgslabelingguibase.ui b/src/ui/qgslabelingguibase.ui index 33971f380e7..32d69cce220 100644 --- a/src/ui/qgslabelingguibase.ui +++ b/src/ui/qgslabelingguibase.ui @@ -78,7 +78,7 @@ - Text/Buffer Sample + Text Sample true @@ -112,7 +112,7 @@ 0 0 - 486 + 482 300 @@ -139,7 +139,7 @@ 0 - + true @@ -243,39 +243,12 @@ - - - - 0 - 0 - - - - - 200 - 0 - + + + Qt::StrongFocus - Size for sample text in map units - - - 8 - - - 320 - - - 4 - - - 24 - - - Qt::Horizontal - - - 4 + Preview text at specific map scale @@ -618,7 +591,7 @@ - 5 + 0 @@ -647,8 +620,8 @@ 0 0 - 452 - 387 + 448 + 442 @@ -691,88 +664,31 @@ 0 - - - - ... - - - - - + + - - 0 - 0 - - - - Style - - - - - - - - - - - 0 - 0 - - - - Text - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - true - - - Transparency - - - - - - - + 0 0 - 120 + 0 0 - 120 + 16777215 16777215 - - - - - - Blend mode + + Available typeface styles - - - - - - ... + + QComboBox::AdjustToContentsOnFirstShow @@ -828,16 +744,166 @@ - - + + + + + 0 + 0 + + + + Text + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + - - + + + + + 0 + 0 + + + + Color + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + ... + + + + + + + 0 + 0 + + + + word + + + + + + + + 0 + 0 + + + + Space in pixels or map units, relative to size unit choice + + + 4 + + + -1000.000000000000000 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + true + + + + + + + ... + + + + + + + + + + 0 + 0 + + + + Size + + + + + + + ... + + + + + + + ... + + + + + + + ... + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + 4 + + + 999999999.000000000000000 + + + false + + + + + + + Spacing + + + @@ -854,20 +920,66 @@ - - + + + + ... + + + + + - + 0 0 - 0 + 120 0 + + + 120 + 16777215 + + + + + + + + + + + If enabled, the label text will automatically be modified using a preset list of substitutes + + + Apply label text substitutes + + + + + + + false + + + + + + + true + + + + 0 + 0 + + 16777215 @@ -875,43 +987,7 @@ - Available typeface styles - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - 0 - 0 - - - - Type case - - - - - - - ... - - - - - - - - 0 - 0 - - - - Size + Capitalization style of text @@ -983,85 +1059,18 @@ - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - color: #990000; -font-style: italic; - - - Font is missing. - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - - 0 - 0 - + + + + true - - - 0 - 0 - - - - 4 - - - 999999999.000000000000000 - - - false - - - - - - Spacing + Transparency - - - - ... - - - - - + + ... @@ -1249,96 +1258,67 @@ font-style: italic; - - + + ... - - - - - - - 0 - 0 - - - - word - - - - - - - - 0 - 0 - - - - Space in pixels or map units, relative to size unit choice - - - 4 - - - -1000.000000000000000 - - - 999999999.000000000000000 - - - 0.100000000000000 - - - true - - - - - - - ... - - - - - - - - - false + + + + Blend mode - - - - true - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Capitalization style of text + + + + ... - - + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + color: #990000; +font-style: italic; + + + Font is missing. + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 @@ -1346,27 +1326,20 @@ font-style: italic; - Color - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Type case - - - - ... - - - - - - - If enabled, the label text will automatically be modified using a preset list of substitutes + + + + + 0 + 0 + - Apply label text substitutes + Style @@ -1439,8 +1412,8 @@ font-style: italic; 0 0 - 342 - 338 + 383 + 389 @@ -2074,8 +2047,8 @@ font-style: italic; 0 0 - 285 - 245 + 301 + 280 @@ -2456,8 +2429,8 @@ font-style: italic; 0 0 - 431 - 628 + 454 + 720 @@ -3276,8 +3249,8 @@ font-style: italic; 0 0 - 305 - 398 + 330 + 447 @@ -3773,8 +3746,8 @@ font-style: italic; 0 0 - 452 - 839 + 430 + 917 @@ -5399,8 +5372,8 @@ font-style: italic; 0 0 - 452 - 731 + 429 + 799 @@ -6430,16 +6403,20 @@ font-style: italic;
qgspenstylecombobox.h
- QgsLabelPreview + QgsTextPreview QLabel -
qgslabelpreview.h
+
qgstextpreview.h
+
+ + QgsScaleWidget + QWidget +
qgsscalewidget.h
scrollArea_mPreview mPreviewTextEdit mPreviewTextBtn - mPreviewSizeSlider mPreviewBackgroundBtn mLabelingOptionsListWidget scrollArea