QGIS API Documentation  3.24.2-Tisler (13c1a02865)
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 
161  Q_DECL_DEPRECATED void enableDataDefinedAlignment( bool enable ) SIP_DEPRECATED { Q_UNUSED( enable ) }
162 
164 
171  QgsWkbTypes::GeometryType labelGeometryType() const;
172 
176  QButtonGroup *mQuadrantBtnGrp = nullptr;
178  QButtonGroup *mDirectSymbBtnGrp = nullptr;
180  QButtonGroup *mUpsidedownBtnGrp = nullptr;
182  int mMinPixelLimit = 0;
183 
185  QgsMapCanvas *mMapCanvas = nullptr;
186 
189 
192 
194  QgsVectorLayer *mLayer = nullptr;
195 
196  QList<QgsSymbolLayerReference> mMaskedSymbolLayers;
197 
200 
201  protected slots:
202 
204  void updateLinePlacementOptions();
205 
207  void updatePlacementWidgets();
208 
213  virtual void setFormatFromStyle( const QString &name, QgsStyle::StyleEntity type );
214 
218  virtual void saveFormat();
219 
224  void updatePreview();
225 
226 #ifndef SIP_RUN
227 
234  void populateDataDefinedButtons();
235 #endif
236 
237  private:
238  Mode mWidgetMode = Text;
239 
240  QgsCharacterSelectorDialog *mCharDlg = nullptr;
241  std::unique_ptr< QgsPaintEffect > mBufferEffect;
242  std::unique_ptr< QgsPaintEffect > mMaskEffect;
243  std::unique_ptr< QgsPaintEffect > mBackgroundEffect;
244  QColor mPreviewBackgroundColor;
245 
246  QFontDatabase mFontDB;
247 
248  // background reference font
249  QFont mRefFont;
250  bool mDockMode = false;
251 
252  bool mLoadSvgParams = false;
253  QgsExpressionContext mPreviewExpressionContext;
254 
255  QMap<QgsPalLayerSettings::Property, QgsPropertyOverrideButton *> mButtons;
256 
257  void initWidget();
258  void setWidgetMode( Mode mode );
259  void toggleDDButtons( bool visible );
260  void blockFontChangeSignals( bool blk );
261  void populateFontCapitalsComboBox();
262  void populateFontStyleComboBox();
263  void updateFont( const QFont &font );
264  void connectValueChanged( const QList<QWidget *> &widgets, const char *slot );
265 
266  void registerDataDefinedButton( QgsPropertyOverrideButton *button, QgsPalLayerSettings::Property key );
267 
268  private slots:
269  void optionsStackedWidget_CurrentChanged( int indx );
270  void showBackgroundRadius( 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 mCoordXDDBtn_activated( bool isActive );
289  void mCoordYDDBtn_changed();
290  void mCoordYDDBtn_activated( bool isActive );
291  void mCoordPointDDBtn_changed();
292  void mCoordPointDDBtn_activated( bool isActive );
293  void mShapeTypeCmbBx_currentIndexChanged( int index );
294  void mShapeRotationCmbBx_currentIndexChanged( int index );
295  void mShapeSVGParamsBtn_clicked();
296  void mShapeSVGSelectorBtn_clicked();
297  void mPreviewTextEdit_textChanged( const QString &text );
298  void mPreviewTextBtn_clicked();
299  void mPreviewBackgroundBtn_colorChanged( const QColor &color );
300  void mDirectSymbLeftToolBtn_clicked();
301  void mDirectSymbRightToolBtn_clicked();
302  void chkLineOrientationDependent_toggled( bool active );
303  void mToolButtonConfigureSubstitutes_clicked();
304  void collapseSample( bool collapse );
305  void changeTextColor( const QColor &color );
306  void changeBufferColor( const QColor &color );
307  void scrollPreview();
308  void updateSvgWidgets( const QString &svgPath );
309  void updateAvailableShadowPositions();
310  void updateProperty();
311  void createAuxiliaryField();
312  void updateShapeFrameStatus();
313  void updateBufferFrameStatus();
314  void updateShadowFrameStatus();
315  void updateCalloutFrameStatus();
316  void updateDataDefinedAlignment();
317 };
318 
319 
332 class GUI_EXPORT QgsTextFormatDialog : public QDialog
333 {
334  Q_OBJECT
335 
336  public:
337 
346  QgsTextFormatDialog( const QgsTextFormat &format, QgsMapCanvas *mapCanvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, QgsVectorLayer *layer = nullptr );
347 
351  QgsTextFormat format() const;
352 
357  void setContext( const QgsSymbolWidgetContext &context );
358 
363  QDialogButtonBox *buttonBox() const;
364 
365  private:
366 
367  QgsTextFormatWidget *mFormatWidget = nullptr;
368  QDialogButtonBox *mButtonBox = nullptr;
369 
370  private slots:
371  void showHelp();
372 
373 };
374 
388 {
389  Q_OBJECT
390 
391  public:
392 
400  QgsTextFormatPanelWidget( const QgsTextFormat &format, QgsMapCanvas *mapCanvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsVectorLayer *layer = nullptr );
401 
405  QgsTextFormat format() const;
406 
412  void setFormat( const QgsTextFormat &format );
413 
418  void setContext( const QgsSymbolWidgetContext &context );
419 
420  void setDockMode( bool dockMode ) override;
421 
422  private:
423 
424  QgsTextFormatWidget *mFormatWidget = nullptr;
425  bool mBlockSignals = false;
426 };
427 
428 #endif //QGSTEXTFORMATWIDGET_H
429 
430 
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:90
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.
QList< QgsSymbolLayerReference > mMaskedSymbolLayers
void widgetChanged()
Emitted when the text format defined by the widget changes.
Q_DECL_DEPRECATED void enableDataDefinedAlignment(bool enable)
Update the enabled state of the data defined alignment buttons.
QgsSymbolWidgetContext mContext
Context in which widget is shown.
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_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53