QGIS API Documentation 3.39.0-Master (d85f3c2a281)
Loading...
Searching...
No Matches
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
39class QImage;
40class QComboBox;
41class QgsColorButton;
43
44/*
45 * Originally ported from https://github.com/Anchakor/MRichTextEditor, courtesy of Hobrasoft.
46 */
47
58class GUI_EXPORT QgsRichTextEditor : public QWidget, protected Ui::QgsRichTextEditorBase
59{
60 Q_OBJECT
61 public:
62
68 enum class Mode
69 {
70 QTextDocument,
72 PlainText,
73 };
74 Q_ENUM( Mode )
75
76
79 QgsRichTextEditor( QWidget *parent = nullptr );
80
88 Mode mode() const { return mMode; }
89
97 void setMode( Mode mode );
98
104 QString toPlainText() const;
105
111 QString toHtml() const;
112
118 QTextEdit *textEdit() { return mTextEdit; }
119
123 QTextDocument *document() { return mTextEdit->document(); }
124
130 QTextCursor textCursor() const { return mTextEdit->textCursor(); }
131
137 void setTextCursor( const QTextCursor &cursor ) { mTextEdit->setTextCursor( cursor ); }
138
139 public slots:
140
146 void setText( const QString &text );
147
151 void clearSource();
152
153 signals:
154
161
162 protected:
163 void focusInEvent( QFocusEvent *event ) override;
164
165 private slots:
166 void setPlainText( const QString &text ) { mTextEdit->setPlainText( text ); }
167 void setHtml( const QString &text ) { mTextEdit->setHtml( text ); }
168 void textRemoveFormat();
169 void textRemoveAllFormat();
170 void textBold();
171 void textUnderline();
172 void textStrikeout();
173 void textItalic();
174 void textSize( const QString &p );
175 void textLink( bool checked );
176 void textStyle( int index );
177 void textFgColor();
178 void textBgColor();
179 void listBullet( bool checked );
180 void listOrdered( bool checked );
181 void slotCurrentCharFormatChanged( const QTextCharFormat &format );
182 void slotCursorPositionChanged();
183 void slotClipboardDataChanged();
184 void increaseIndentation();
185 void decreaseIndentation();
186 void insertImage();
187 void editSource( bool enabled );
188
189 private:
190 void mergeFormatOnWordOrSelection( const QTextCharFormat &format );
191 void fontChanged( const QFont &f );
192 void fgColorChanged( const QColor &c );
193 void bgColorChanged( const QColor &c );
194 void list( bool checked, QTextListFormat::Style style );
195 void indent( int delta );
196
197 Mode mMode = Mode::QTextDocument;
198
199 int mFontSizeH1 = 18;
200 int mFontSizeH2 = 16;
201 int mFontSizeH3 = 14;
202 int mFontSizeH4 = 12;
203
204 enum ParagraphItems
205 {
206 ParagraphStandard = 0,
207 ParagraphHeading1,
208 ParagraphHeading2,
209 ParagraphHeading3,
210 ParagraphHeading4,
211 ParagraphMonospace
212 };
213
214 QComboBox *mParagraphStyleCombo = nullptr;
215 QComboBox *mFontSizeCombo = nullptr;
216
217 QgsColorButton *mForeColorButton = nullptr;
218 QgsColorButton *mBackColorButton = nullptr;
219 QgsCodeEditorHTML *mSourceEdit = nullptr;
220
221 QPointer<QTextList> mLastBlockList;
222 QString mMonospaceFontFamily;
223};
224
225
226
227#endif // QGSRICHTEXTEDITOR_H
A HTML editor based on QScintilla2.
A cross platform button subclass for selecting colors.
A widget for editing rich text documents, with support for user controlled formatting of text and ins...
QTextCursor textCursor() const
Returns a reference to the text cursor.
Mode mode() const
Returns the widget's mode, which defines which formatting options are exposed in the widget.
void setTextCursor(const QTextCursor &cursor)
Sets the current text cursor.
void textChanged()
Emitted when the text contents are changed.
QTextEdit * textEdit()
Returns the widget's QTextEditor control.
QTextDocument * document()
Returns a reference to the QTextDocument shown in the widget.
Handles rendering text using rich formatting options, including drop shadows, buffers and background ...
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