QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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
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
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
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.
void setTextCursor(const QTextCursor &cursor)
Sets the current text cursor.
void textChanged()
Emitted when the text contents are changed.
QTextDocument * document()
Returns a reference to the QTextDocument shown in the widget.
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