QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
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 
A dialog for selecting a single character from a single font.
Abstract interface for generating an expression context.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:86
Property
Data definable properties.
Wrapper widget for existing widgets which can't have the inheritance tree changed,...
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
A button for controlling property overrides which may apply to a widget.
A collection of string replacements (specified using QgsStringReplacement objects).
StyleEntity
Enum for Entities involved in a style.
Definition: qgsstyle.h:179
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
A simple dialog for customizing text formatting settings.
A panel widget for customizing text formatting settings.
A widget for customizing text formatting settings.
void widgetChanged()
Emitted when the text format defined by the widget changes.
QgsSymbolWidgetContext mContext
Context in which widget is shown.
QgsSymbolLayerReferenceList mMaskedSymbolLayers
void auxiliaryFieldCreated()
Emitted when an auxiliary field is created in the widget.
QgsStringReplacementCollection mSubstitutions
Text substitution list.
@ Labeling
Show labeling settings in addition to text formatting settings.
QgsPropertyCollection mDataDefinedProperties
Data defined properties as defined in the widget.
Container for all settings relating to text rendering.
Definition: qgstextformat.h:41
Represents a vector layer which manages a vector based data sets.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList