QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgstextformatwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgstextformatwidget.h
3  ---------------------
4  begin : June 2009
5  copyright : (C) Martin Dobias
6  email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 
17 #ifndef QGSTEXTFORMATWIDGET_H
18 #define QGSTEXTFORMATWIDGET_H
19 
20 #include "ui_qgstextformatwidgetbase.h"
21 #include "qgis_sip.h"
22 #include "qgstextformat.h"
23 #include "qgsstringutils.h"
24 #include "qgsguiutils.h"
25 #include "qgssymbolwidgetcontext.h"
26 #include <QFontDatabase>
27 #include "qgis_gui.h"
28 
29 class QgsMapCanvas;
31 
32 
50 class GUI_EXPORT QgsTextFormatWidget : public QWidget, public QgsExpressionContextGenerator, protected Ui::QgsTextFormatWidgetBase
51 {
52  Q_OBJECT
53  Q_PROPERTY( QgsTextFormat format READ format )
54 
55  public:
56 
64  QgsTextFormatWidget( const QgsTextFormat &format = QgsTextFormat(), QgsMapCanvas *mapCanvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr,
65  QgsVectorLayer *layer = nullptr );
66 
67  ~QgsTextFormatWidget() override;
68 
75  QgsTextFormat format( bool includeDataDefinedProperties = true ) const;
76 
81  void setFormat( const QgsTextFormat &format );
82 
88  virtual void setContext( const QgsSymbolWidgetContext &context );
89 
95  QgsSymbolWidgetContext context() const;
96 
105  void deactivateField( QgsPalLayerSettings::Property key );
106 
107  public slots:
108 
113  void setDockMode( bool enabled );
114 
115  signals:
116 
119 
125 
126  protected:
127 
129  enum Mode
130  {
131  Text = 0,
133  };
134 
142  QgsTextFormatWidget( QgsMapCanvas *mapCanvas, QWidget *parent SIP_TRANSFERTHIS, Mode mode, QgsVectorLayer *layer = nullptr );
143 
148  void updateWidgetForFormat( const QgsTextFormat &format );
149 
154  void setPreviewBackground( const QColor &color );
155 
160  void enableDataDefinedAlignment( bool enable );
161 
163 
170  QgsWkbTypes::GeometryType labelGeometryType() const;
171 
175  QButtonGroup *mQuadrantBtnGrp = nullptr;
177  QButtonGroup *mDirectSymbBtnGrp = nullptr;
179  QButtonGroup *mUpsidedownBtnGrp = nullptr;
181  int mMinPixelLimit = 0;
182 
184  QgsMapCanvas *mMapCanvas = nullptr;
185 
188 
191 
193  QgsVectorLayer *mLayer = nullptr;
194 
196 
199 
200  protected slots:
201 
203  void updateLinePlacementOptions();
204 
206  void updatePlacementWidgets();
207 
212  virtual void setFormatFromStyle( const QString &name, QgsStyle::StyleEntity type );
213 
217  virtual void saveFormat();
218 
223  void updatePreview();
224 
225 #ifndef SIP_RUN
226 
233  void populateDataDefinedButtons();
234 #endif
235 
236  private:
237  Mode mWidgetMode = Text;
238 
239  QgsCharacterSelectorDialog *mCharDlg = nullptr;
240  std::unique_ptr< QgsPaintEffect > mBufferEffect;
241  std::unique_ptr< QgsPaintEffect > mMaskEffect;
242  std::unique_ptr< QgsPaintEffect > mBackgroundEffect;
243  QColor mPreviewBackgroundColor;
244 
245  QFontDatabase mFontDB;
246 
247  // background reference font
248  QFont mRefFont;
249  bool mDockMode = false;
250 
251  bool mLoadSvgParams = false;
252  QgsExpressionContext mPreviewExpressionContext;
253 
254  QMap<QgsPalLayerSettings::Property, QgsPropertyOverrideButton *> mButtons;
255 
256  void initWidget();
257  void setWidgetMode( Mode mode );
258  void toggleDDButtons( bool visible );
259  void blockFontChangeSignals( bool blk );
260  void populateFontCapitalsComboBox();
261  void populateFontStyleComboBox();
262  void updateFont( const QFont &font );
263  void connectValueChanged( const QList<QWidget *> &widgets, const char *slot );
264 
265  void registerDataDefinedButton( QgsPropertyOverrideButton *button, QgsPalLayerSettings::Property key );
266 
267  private slots:
268  void optionsStackedWidget_CurrentChanged( int indx );
269  void showBackgroundRadius( bool show );
270  void showBackgroundPenStyle( bool show );
271  void mShapeSVGPathLineEdit_textChanged( const QString &text );
272  void onSubstitutionsChanged( const QgsStringReplacementCollection &substitutions );
273  void previewScaleChanged( double scale );
274  void mFontSizeSpinBox_valueChanged( double d );
275  void mFontFamilyCmbBx_currentFontChanged( const QFont &f );
276  void mFontStyleComboBox_currentIndexChanged( const QString &text );
277  void mFontUnderlineBtn_toggled( bool ckd );
278  void mFontStrikethroughBtn_toggled( bool ckd );
279  void kerningToggled( bool checked );
280  void mFontWordSpacingSpinBox_valueChanged( double spacing );
281  void mFontLetterSpacingSpinBox_valueChanged( double spacing );
282  void mFontSizeUnitWidget_changed();
283  void mFontMinPixelSpinBox_valueChanged( int px );
284  void mFontMaxPixelSpinBox_valueChanged( int px );
285  void mBufferUnitWidget_changed();
286  void mMaskBufferUnitWidget_changed();
287  void mCoordXDDBtn_changed( );
288  void mCoordYDDBtn_changed( );
289  void mShapeTypeCmbBx_currentIndexChanged( int index );
290  void mShapeRotationCmbBx_currentIndexChanged( int index );
291  void mShapeSVGParamsBtn_clicked();
292  void mShapeSVGSelectorBtn_clicked();
293  void mPreviewTextEdit_textChanged( const QString &text );
294  void mPreviewTextBtn_clicked();
295  void mPreviewBackgroundBtn_colorChanged( const QColor &color );
296  void mDirectSymbLeftToolBtn_clicked();
297  void mDirectSymbRightToolBtn_clicked();
298  void chkLineOrientationDependent_toggled( bool active );
299  void mToolButtonConfigureSubstitutes_clicked();
300  void collapseSample( bool collapse );
301  void changeTextColor( const QColor &color );
302  void changeBufferColor( const QColor &color );
303  void scrollPreview();
304  void updateSvgWidgets( const QString &svgPath );
305  void updateAvailableShadowPositions();
306  void updateProperty();
307  void createAuxiliaryField();
308  void updateShapeFrameStatus();
309  void updateBufferFrameStatus();
310  void updateShadowFrameStatus();
311  void updateCalloutFrameStatus();
312 };
313 
314 
327 class GUI_EXPORT QgsTextFormatDialog : public QDialog
328 {
329  Q_OBJECT
330 
331  public:
332 
341  QgsTextFormatDialog( const QgsTextFormat &format, QgsMapCanvas *mapCanvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, QgsVectorLayer *layer = nullptr );
342 
346  QgsTextFormat format() const;
347 
352  void setContext( const QgsSymbolWidgetContext &context );
353 
358  QDialogButtonBox *buttonBox() const;
359 
360  private:
361 
362  QgsTextFormatWidget *mFormatWidget = nullptr;
363  QDialogButtonBox *mButtonBox = nullptr;
364 
365  private slots:
366  void showHelp();
367 
368 };
369 
383 {
384  Q_OBJECT
385 
386  public:
387 
395  QgsTextFormatPanelWidget( const QgsTextFormat &format, QgsMapCanvas *mapCanvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsVectorLayer *layer = nullptr );
396 
400  QgsTextFormat format() const;
401 
407  void setFormat( const QgsTextFormat &format );
408 
413  void setContext( const QgsSymbolWidgetContext &context );
414 
415  void setDockMode( bool dockMode ) override;
416 
417  private:
418 
419  QgsTextFormatWidget *mFormatWidget = nullptr;
420  bool mBlockSignals = false;
421 };
422 
423 #endif //QGSTEXTFORMATWIDGET_H
424 
425 
QgsExpressionContext
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Definition: qgsexpressioncontext.h:370
QgsPanelWidget::setDockMode
virtual void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
Definition: qgspanelwidget.cpp:44
qgsstringutils.h
QgsSymbolWidgetContext
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Definition: qgssymbolwidgetcontext.h:36
QgsMapCanvas
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:85
QgsTextFormatDialog
A simple dialog for customizing text formatting settings.
Definition: qgstextformatwidget.h:328
qgssymbolwidgetcontext.h
QgsPropertyOverrideButton
A button for controlling property overrides which may apply to a widget.
Definition: qgspropertyoverridebutton.h:51
QgsTextFormatWidget::mContext
QgsSymbolWidgetContext mContext
Context in which widget is shown.
Definition: qgstextformatwidget.h:187
QgsTextFormat
Container for all settings relating to text rendering.
Definition: qgstextformat.h:40
qgis_sip.h
QgsTextFormatWidget::mMaskedSymbolLayers
QgsSymbolLayerReferenceList mMaskedSymbolLayers
Definition: qgstextformatwidget.h:195
QgsExpressionContextGenerator::createExpressionContext
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
QgsTextFormatWidget
A widget for customizing text formatting settings.
Definition: qgstextformatwidget.h:51
QgsStringReplacementCollection
A collection of string replacements (specified using QgsStringReplacement objects).
Definition: qgsstringutils.h:116
QgsTextFormatPanelWidget
A panel widget for customizing text formatting settings.
Definition: qgstextformatwidget.h:383
QgsPropertyCollection
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
Definition: qgspropertycollection.h:319
QgsTextFormatWidget::mSubstitutions
QgsStringReplacementCollection mSubstitutions
Text substitution list.
Definition: qgstextformatwidget.h:173
QgsCharacterSelectorDialog
A dialog for selecting a single character from a single font.
Definition: qgscharacterselectordialog.h:35
QgsWkbTypes::GeometryType
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
QgsSymbolLayerReferenceList
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList
Definition: qgssymbollayerreference.h:160
QgsTextFormatWidget::widgetChanged
void widgetChanged()
Emitted when the text format defined by the widget changes.
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:387
QgsWkbTypes::UnknownGeometry
@ UnknownGeometry
Definition: qgswkbtypes.h:145
QgsPalLayerSettings::Property
Property
Data definable properties.
Definition: qgspallabeling.h:345
qgstextformat.h
QgsPanelWidgetWrapper
Wrapper widget for existing widgets which can't have the inheritance tree changed,...
Definition: qgspanelwidget.h:201
qgsguiutils.h
QgsTextFormatWidget::auxiliaryFieldCreated
void auxiliaryFieldCreated()
Emitted when an auxiliary field is created in the widget.
QgsExpressionContextGenerator
Abstract interface for generating an expression context.
Definition: qgsexpressioncontextgenerator.h:37
SIP_TRANSFERTHIS
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
QgsTextFormatWidget::mDataDefinedProperties
QgsPropertyCollection mDataDefinedProperties
Data defined properties as defined in the widget.
Definition: qgstextformatwidget.h:190
QgsTextFormatWidget::Labeling
@ Labeling
Show labeling settings in addition to text formatting settings.
Definition: qgstextformatwidget.h:132
QgsTextFormatWidget::Mode
Mode
Widget mode.
Definition: qgstextformatwidget.h:130
QgsStyle::StyleEntity
StyleEntity
Enum for Entities involved in a style.
Definition: qgsstyle.h:179