blob: 2ebfe2031e40fc5febcc202488ece9b6f30ca3ac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include <theme.h>
#include <QWidget>
#include <QToolBar>
#include <QList>
#include <QTextCharFormat>
#include <QTextList>
#include <QFontComboBox>
#include <QWidgetAction>
#include <QPointer>
namespace QmlDesigner {
namespace Ui {
class RichTextEditor;
}
template <class>
class FontWidgetActions;
class HyperlinkDialog;
class RichTextEditor : public QWidget
{
Q_OBJECT
public:
explicit RichTextEditor(QWidget *parent = nullptr);
~RichTextEditor();
void setPlainText(const QString &text);
QString plainText() const;
void setRichText(const QString &text);
QString richText() const;
void setTabChangesFocus(bool change);
void setImageActionVisible(bool change);
void setDocumentBaseUrl(const QUrl &url);
signals:
void insertingImage(QString &filePath);
void textChanged(QString text);
private slots:
void currentCharFormatChanged(const QTextCharFormat &format);
void cursorPositionChanged();
void onTextChanged();
private:
QIcon getIcon(Theme::Icon icon);
void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
void fontChanged(const QFont &f);
void colorChanged(const QColor &c);
void alignmentChanged(Qt::Alignment a);
void styleChanged(const QTextCursor &cursor);
void tableChanged(const QTextCursor &cursor);
void setupEditActions();
void setupTextActions();
void setupImageActions();
void setupHyperlinkActions();
void setupAlignActions();
void setupListActions();
void setupFontActions();
void setupTableActions();
void textStyle(QTextListFormat::Style style);
void setTableActionsActive(bool active); //switches between "has table/has no table" ui setup
private:
QScopedPointer<Ui::RichTextEditor> ui;
QPointer<HyperlinkDialog> m_linkDialog;
QAction *m_actionTextBold;
QAction *m_actionTextItalic;
QAction *m_actionTextUnderline;
QAction *m_actionImage;
QAction *m_actionHyperlink;
QAction *m_actionAlignLeft;
QAction *m_actionAlignCenter;
QAction *m_actionAlignRight;
QAction *m_actionAlignJustify;
QAction *m_actionTextColor;
QAction *m_actionBulletList;
QAction *m_actionNumberedList;
QAction *m_actionTableSettings;
QAction *m_actionCreateTable;
QAction *m_actionRemoveTable;
QAction *m_actionAddRow;
QAction *m_actionAddColumn;
QAction *m_actionRemoveRow;
QAction *m_actionRemoveColumn;
QAction *m_actionMergeCells;
QAction *m_actionSplitRow;
QAction *m_actionSplitColumn;
QPointer<FontWidgetActions<QFontComboBox>> m_fontNameAction;
QPointer<FontWidgetActions<QComboBox>> m_fontSizeAction;
};
} //namespace QmlDesigner
|