QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsrichtexteditor.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Jiří Procházka (Hobrasoft)
4 ** Contact: http://www.hobrasoft.cz/
5 **
6 ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
7 ** Contact: http://www.qt-project.org/legal
8 **
9 ** This library is free software; you can redistribute it and/or
10 ** modify it under the terms of the GNU Lesser General Public
11 ** License as published by the Free Software Foundation; either
12 ** version 2.1 of the License, or (at your option) any later version.
13 **
14 ** $QT_BEGIN_LICENSE:LGPL$
15 ** GNU Lesser General Public License Usage
16 ** This file is under the terms of the GNU Lesser General Public License
17 ** version 2.1 as published by the Free Software Foundation and appearing
18 ** in the file LICENSE.LGPL included in the packaging of this file.
19 ** Please review the following information to ensure the
20 ** GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22 **
23 ** In addition, as a special exception, Digia gives you certain additional
24 ** rights. These rights are described in the Digia Qt LGPL Exception
25 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
26 **
27 ** $QT_END_LICENSE$
28 **
29 ****************************************************************************/
30 
31 #ifndef QGSRICHTEXTEDITOR_H
32 #define QGSRICHTEXTEDITOR_H
33 
34 #include "qgis_gui.h"
35 #include "qgis_sip.h"
36 #include "ui_qgsrichtexteditorbase.h"
37 #include <QPointer>
38 
39 class QImage;
40 class QComboBox;
41 class QgsColorButton;
42 class QgsCodeEditorHTML;
43 
44 /*
45  * Originally ported from https://github.com/Anchakor/MRichTextEditor, courtesy of Hobrasoft.
46  */
47 
58 class GUI_EXPORT QgsRichTextEditor : public QWidget, protected Ui::QgsRichTextEditorBase
59 {
60  Q_OBJECT
61  public:
62 
66  QgsRichTextEditor( QWidget *parent = nullptr );
67 
73  QString toPlainText() const;
74 
80  QString toHtml() const;
81 
85  QTextDocument *document() { return mTextEdit->document(); }
86 
92  QTextCursor textCursor() const { return mTextEdit->textCursor(); }
93 
99  void setTextCursor( const QTextCursor &cursor ) { mTextEdit->setTextCursor( cursor ); }
100 
101  public slots:
102 
108  void setText( const QString &text );
109 
113  void clearSource();
114 
115  signals:
116 
122  void textChanged();
123 
124  protected:
125  void focusInEvent( QFocusEvent *event ) override;
126 
127  private slots:
128  void setPlainText( const QString &text ) { mTextEdit->setPlainText( text ); }
129  void setHtml( const QString &text ) { mTextEdit->setHtml( text ); }
130  void textRemoveFormat();
131  void textRemoveAllFormat();
132  void textBold();
133  void textUnderline();
134  void textStrikeout();
135  void textItalic();
136  void textSize( const QString &p );
137  void textLink( bool checked );
138  void textStyle( int index );
139  void textFgColor();
140  void textBgColor();
141  void listBullet( bool checked );
142  void listOrdered( bool checked );
143  void slotCurrentCharFormatChanged( const QTextCharFormat &format );
144  void slotCursorPositionChanged();
145  void slotClipboardDataChanged();
146  void increaseIndentation();
147  void decreaseIndentation();
148  void insertImage();
149  void editSource( bool enabled );
150 
151  private:
152  void mergeFormatOnWordOrSelection( const QTextCharFormat &format );
153  void fontChanged( const QFont &f );
154  void fgColorChanged( const QColor &c );
155  void bgColorChanged( const QColor &c );
156  void list( bool checked, QTextListFormat::Style style );
157  void indent( int delta );
158 
159  int mFontSizeH1 = 18;
160  int mFontSizeH2 = 16;
161  int mFontSizeH3 = 14;
162  int mFontSizeH4 = 12;
163 
164  enum ParagraphItems
165  {
166  ParagraphStandard = 0,
167  ParagraphHeading1,
168  ParagraphHeading2,
169  ParagraphHeading3,
170  ParagraphHeading4,
171  ParagraphMonospace
172  };
173 
174  QComboBox *mParagraphStyleCombo = nullptr;
175  QComboBox *mFontSizeCombo = nullptr;
176 
177  QgsColorButton *mForeColorButton = nullptr;
178  QgsColorButton *mBackColorButton = nullptr;
179  QgsCodeEditorHTML *mSourceEdit = nullptr;
180 
181  QPointer<QTextList> mLastBlockList;
182  QString mMonospaceFontFamily;
183 };
184 
185 
186 
187 #endif // QGSRICHTEXTEDITOR_H
QgsRichTextEditor::textCursor
QTextCursor textCursor() const
Returns a reference to the text cursor.
Definition: qgsrichtexteditor.h:92
qgis_sip.h
QgsRichTextEditor
A widget for editing rich text documents, with support for user controlled formatting of text and ins...
Definition: qgsrichtexteditor.h:58
c
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
Definition: porting_processing.dox:1
QgsCodeEditorHTML
A HTML editor based on QScintilla2. Adds syntax highlighting and code autocompletion.
Definition: qgscodeeditorhtml.h:32
QgsColorButton
A cross platform button subclass for selecting colors. Will open a color chooser dialog when clicked....
Definition: qgscolorbutton.h:35
QgsRichTextEditor::setTextCursor
void setTextCursor(const QTextCursor &cursor)
Sets the current text cursor.
Definition: qgsrichtexteditor.h:99
QgsRichTextEditor::document
QTextDocument * document()
Returns a reference to the QTextDocument shown in the widget.
Definition: qgsrichtexteditor.h:85