umbrello 2.39.0
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
codeeditor.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3
4 SPDX-FileCopyrightText: 2003 Brian Thomas <brian.thomas@gsfc.nasa.gov>
5 SPDX-FileCopyrightText: 2004-2022 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6*/
7
8#ifndef CODEEDITOR_H
9#define CODEEDITOR_H
10
11#include "codeviewerstate.h"
12#include "textblocklist.h"
13
14#include <QTextEdit>
15#include <KTextEditor/Document>
16#include <KTextEditor/Editor>
17#include <KTextEditor/View>
18
19#include <QList>
20#include <QString>
21
23class CodeComment;
24class CodeDocument;
26class CodeMethodBlock;
29class QMenu;
30class QLabel;
31class TextBlock;
32class UMLObject;
33
35{
36 int start = 0; // this is a relative offset from the beginning of the tblock
37 int size = 0;
38 int end = 0;
39 QColor fgcolor;
40 QColor bgcolor;
41 bool isEditable = false;
42};
43
44
46{
47public:
48 QList<ParaInfo*> m_paraList;
53
54 TextBlockInfo () { m_parent = nullptr; isClickable = false; isCodeAccessorMethod = false; }
55 void setParent(UMLObject *p = nullptr) { m_parent = p; }
56 UMLObject * parent() { return m_parent; }
57 void setDisplayName(const QString& name) { m_displayName = name; }
58 QString displayName() const { return m_displayName; }
59};
60
61
62class CodeEditor : public QTextEdit
63{
64 Q_OBJECT
65public:
66 explicit CodeEditor(const QString & text, CodeViewerDialog *parent = nullptr, CodeDocument *doc = nullptr);
67 explicit CodeEditor(CodeViewerDialog *parent = nullptr, CodeDocument *doc = nullptr);
69
71
72protected:
73 bool close ();
74
75 void appendText(TextBlock * tblock);
76 void appendText(HierarchicalCodeBlock * hblock);
78 void appendText(TextBlockList * items);
79 void appendText(CodeMethodBlock * mb);
80 void appendText(CodeComment *comment, TextBlock * parent, UMLObject *umlObj = nullptr, const QString & compName = QString());
82
83 void rebuildView(int startCursorPos);
84
85 void contextMenuEvent(QContextMenuEvent * event);
86 void contentsMouseMoveEvent(QMouseEvent * e);
87 void keyPressEvent(QKeyEvent * e);
88 void mouseDoubleClickEvent(QMouseEvent * e);
89
90 void loadFromDocument();
91
92 QMenu * createPopup();
93
94private:
98
101
106
110
111 QMap<TextBlock*, TextBlockInfo*> m_tbInfoMap;
113
114 void insertText(const QString & text, TextBlock * parent, bool isEditable = false,
115 const QColor & fgcolor = QColor("black"), const QColor & bgcolor = QColor("white"),
116 UMLObject *umlobj = nullptr, const QString & displayName = QString(), int startLine = -1);
117
118 void editTextBlock(TextBlock * tBlock, int para);
119 void clearText();
120 QLabel * componentLabel();
121 bool paraIsNotSingleLine(int para);
122 void expandSelectedParagraph(int where);
123 void contractSelectedParagraph(int where);
125
127 void init(CodeViewerDialog * parentDialog, CodeDocument * parentDoc);
128
129 void changeTextBlockHighlighting(TextBlock * tb, bool selected);
130 void setParagraphBackgroundColor(int position, const QColor& color);
131 bool isParaEditable(int para);
133
134 TextBlock* findTextBlockAt(int characterPos);
135
136 void clicked(int para, int pos);
137
138 static bool isNonBlank(const QString &str);
139
140public Q_SLOTS:
141 void insertParagraph(const QString & text, int para);
142 void removeParagraph(int para);
143 void changeHighlighting(int signal);
144 void changeShowHidden(int signal);
145 void slotRedrawText();
146
147protected Q_SLOTS:
149 void slotCopyTextBlock();
150 void slotCutTextBlock();
151 void slotPasteTextBlock();
156
157Q_SIGNALS:
158 // void sigNewLinePressed();
159 // void sigBackspacePressed();
160
161};
162
163#endif // CODEEDITOR_H
Definition codeblockwithcomments.h:20
Definition codeclassfielddeclarationblock.h:26
Definition codecomment.h:20
Definition codedocument.h:30
Definition codeeditor.h:63
void updateTextBlockFromText(TextBlock *block)
Definition codeeditor.cpp:952
void editTextBlock(TextBlock *tBlock, int para)
Definition codeeditor.cpp:155
void expandSelectedParagraph(int where)
Definition codeeditor.cpp:1376
bool isParaEditable(int para)
Definition codeeditor.cpp:1201
void slotCutTextBlock()
Definition codeeditor.cpp:854
void slotInsertCodeBlockBeforeSelected()
Definition codeeditor.cpp:686
bool close()
Definition codeeditor.cpp:141
void clearText()
Definition codeeditor.cpp:81
void loadFromDocument()
Definition codeeditor.cpp:211
static bool isNonBlank(const QString &str)
Definition codeeditor.cpp:181
bool m_newLinePressed
Definition codeeditor.h:102
int m_lastPara
Definition codeeditor.h:99
~CodeEditor()
Definition codeeditor.cpp:74
void changeShowHidden(int signal)
Definition codeeditor.cpp:1302
void removeParagraph(int para)
Definition codeeditor.cpp:628
void rebuildView(int startCursorPos)
Definition codeeditor.cpp:1475
bool paraIsNotSingleLine(int para)
Definition codeeditor.cpp:1153
QMap< TextBlock *, TextBlockInfo * > m_tbInfoMap
Definition codeeditor.h:111
void slotCopyTextBlock()
Definition codeeditor.cpp:832
void contextMenuEvent(QContextMenuEvent *event)
Definition codeeditor.cpp:730
QLabel * componentLabel()
Definition codeeditor.cpp:108
void changeHighlighting(int signal)
Definition codeeditor.cpp:1315
CodeEditor(const QString &text, CodeViewerDialog *parent=nullptr, CodeDocument *doc=nullptr)
Definition codeeditor.cpp:56
void insertText(const QString &text, TextBlock *parent, bool isEditable=false, const QColor &fgcolor=QColor("black"), const QColor &bgcolor=QColor("white"), UMLObject *umlobj=nullptr, const QString &displayName=QString(), int startLine=-1)
Definition codeeditor.cpp:249
void mouseDoubleClickEvent(QMouseEvent *e)
Definition codeeditor.cpp:1405
bool m_isHighlighted
Definition codeeditor.h:104
bool textBlockIsClickable(UMLObject *obj)
Definition codeeditor.cpp:639
TextBlock * m_selectedTextBlock
Definition codeeditor.h:108
void contentsMouseMoveEvent(QMouseEvent *e)
Definition codeeditor.cpp:1430
CodeDocument * m_parentDoc
Definition codeeditor.h:96
void contractSelectedParagraph(int where)
Definition codeeditor.cpp:1344
QMenu * createPopup()
Definition codeeditor.cpp:741
Settings::CodeViewerState state()
Definition codeeditor.cpp:99
bool m_backspacePressed
Definition codeeditor.h:103
void appendText(TextBlock *tblock)
Definition codeeditor.cpp:550
void slotRedrawText()
Definition codeeditor.cpp:891
void slotChangeSelectedBlockView()
Definition codeeditor.cpp:657
void keyPressEvent(QKeyEvent *e)
Definition codeeditor.cpp:193
bool m_showHiddenBlocks
Definition codeeditor.h:105
void clicked(int para, int pos)
Definition codeeditor.cpp:118
void init(CodeViewerDialog *parentDialog, CodeDocument *parentDoc)
Definition codeeditor.cpp:901
int m_lastPos
Definition codeeditor.h:100
TextBlock * m_textBlockToPaste
Definition codeeditor.h:107
TextBlock * findTextBlockAt(int characterPos)
Definition codeeditor.cpp:1174
void slotInsertCodeBlockAfterSelected()
Definition codeeditor.cpp:706
QString m_parentDocName
Definition codeeditor.h:95
TextBlockList m_textBlockList
Definition codeeditor.h:112
void slotPasteTextBlock()
Definition codeeditor.cpp:879
void slotChangeSelectedBlockCommentView()
Definition codeeditor.cpp:670
void initText(CodeDocument *doc)
void changeTextBlockHighlighting(TextBlock *tb, bool selected)
Definition codeeditor.cpp:1255
TextBlock * m_lastTextBlockToBeEdited
Definition codeeditor.h:109
CodeViewerDialog * m_parentDialog
Definition codeeditor.h:97
void insertParagraph(const QString &text, int para)
Definition codeeditor.cpp:618
void slotCursorPositionChanged()
Definition codeeditor.cpp:1012
void setParagraphBackgroundColor(int position, const QColor &color)
Definition codeeditor.cpp:1291
Definition codemethodblock.h:26
Definition codeviewerdialog.h:23
Definition hierarchicalcodeblock.h:21
configurable params for the code viewer tool
Definition codeviewerstate.h:15
Definition codeeditor.h:46
QString m_displayName
Definition codeeditor.h:50
UMLObject * parent()
Definition codeeditor.h:56
TextBlockInfo()
Definition codeeditor.h:54
bool isClickable
Definition codeeditor.h:51
QString displayName() const
Definition codeeditor.h:58
bool isCodeAccessorMethod
Definition codeeditor.h:52
QList< ParaInfo * > m_paraList
Definition codeeditor.h:48
void setParent(UMLObject *p=nullptr)
Definition codeeditor.h:55
void setDisplayName(const QString &name)
Definition codeeditor.h:57
UMLObject * m_parent
Definition codeeditor.h:49
Definition textblock.h:23
The base class for UML objects.
Definition umlobject.h:70
Definition codeeditor.h:35
QColor bgcolor
Definition codeeditor.h:40
int size
number of characters
Definition codeeditor.h:37
int end
end line number
Definition codeeditor.h:38
bool isEditable
Definition codeeditor.h:41
QColor fgcolor
Definition codeeditor.h:39
int start
Definition codeeditor.h:36
QList< TextBlock * > TextBlockList
Definition textblocklist.h:14