umbrello  2.37.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-2021 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 <ktextedit.h>
15 
16 #include <QList>
17 #include <QString>
18 
19 class CodeViewerDialog;
20 class CodeComment;
21 class CodeDocument;
23 class CodeMethodBlock;
26 class KMenu;
27 class QLabel;
28 class TextBlock;
29 class UMLObject;
30 
31 class ParaInfo
32 {
33 public:
34  int start; // this is a relative offset from the beginning of the tblock
35  int size;
36  int end;
37  QColor fgcolor;
38  QColor bgcolor;
39  bool isEditable;
40 
42  : start(0),
43  size(0),
44  end(0),
45  isEditable(false) { }
46 };
47 
48 
50 {
51 public:
52  QList<ParaInfo*> m_paraList;
54  QString m_displayName;
57 
59  void setParent(UMLObject *p = 0) { m_parent = p; }
60  UMLObject * parent() { return m_parent; }
61  void setDisplayName(const QString& name) { m_displayName = name; }
62  QString displayName() const { return m_displayName; }
63 };
64 
65 
66 class CodeEditor : public KTextEdit
67 {
68  Q_OBJECT
69 public:
70  explicit CodeEditor(const QString & text, CodeViewerDialog * parent = 0, CodeDocument * doc = 0);
71  explicit CodeEditor(CodeViewerDialog * parent = 0, CodeDocument * doc = 0);
72  ~CodeEditor();
73 
75 
76 protected:
77  bool close ();
78 
79  void appendText(TextBlock * tblock);
80  void appendText(HierarchicalCodeBlock * hblock);
82  void appendText(TextBlockList * items);
83  void appendText(CodeMethodBlock * mb);
84  void appendText(CodeComment * comment, TextBlock * parent, UMLObject * umlObj = 0, const QString & compName = QString());
86 
87  void rebuildView(int startCursorPos);
88 
89  void contextMenuEvent(QContextMenuEvent * event);
90  void contentsMouseMoveEvent(QMouseEvent * e);
91  void keyPressEvent(QKeyEvent * e);
92  void mouseDoubleClickEvent(QMouseEvent * e);
93 
94  void loadFromDocument();
95 
96 #if QT_VERSION >= 0x050000
97  QMenu * createPopup();
98 #else
99  KMenu * createPopup();
100 #endif
101 
102 private:
106 
109 
114 
118 
119  QMap<TextBlock*, TextBlockInfo*> m_tbInfoMap;
121 
122  void insertText(const QString & text, TextBlock * parent, bool isEditable = false,
123  const QColor & fgcolor = QColor("black"), const QColor & bgcolor = QColor("white"),
124  UMLObject * umlobj = 0, const QString & displayName = QString(), int startLine = -1);
125 
126  void editTextBlock(TextBlock * tBlock, int para);
127  void clearText();
128  QLabel * componentLabel();
129  bool paraIsNotSingleLine(int para);
130  void expandSelectedParagraph(int where);
131  void contractSelectedParagraph(int where);
132  void updateTextBlockFromText(TextBlock * block);
133 
134  void initText(CodeDocument * doc);
135  void init(CodeViewerDialog * parentDialog, CodeDocument * parentDoc);
136 
137  void changeTextBlockHighlighting(TextBlock * tb, bool selected);
138  void setParagraphBackgroundColor(int position, const QColor& color);
139  bool isParaEditable(int para);
140  bool textBlockIsClickable(UMLObject * obj);
141 
142  TextBlock* findTextBlockAt(int characterPos);
143 
144  void clicked(int para, int pos);
145 
146  static bool isNonBlank(const QString &str);
147 
148 public slots:
149  void insertParagraph(const QString & text, int para);
150  void removeParagraph(int para);
151  void changeHighlighting(int signal);
152  void changeShowHidden(int signal);
153  void slotRedrawText();
154 
155 protected slots:
157  void slotCopyTextBlock();
158  void slotCutTextBlock();
159  void slotPasteTextBlock();
164 
165 signals:
166  // void sigNewLinePressed();
167  // void sigBackspacePressed();
168 
169 };
170 
171 #endif // CODEEDITOR_H
Definition: codeblockwithcomments.h:20
Definition: codeclassfielddeclarationblock.h:26
Definition: codecomment.h:20
Definition: codedocument.h:30
Definition: codeeditor.h:67
void updateTextBlockFromText(TextBlock *block)
Definition: codeeditor.cpp:1003
void editTextBlock(TextBlock *tBlock, int para)
Definition: codeeditor.cpp:158
void expandSelectedParagraph(int where)
Definition: codeeditor.cpp:1427
bool isParaEditable(int para)
Definition: codeeditor.cpp:1252
void slotCutTextBlock()
Definition: codeeditor.cpp:905
void insertText(const QString &text, TextBlock *parent, bool isEditable=false, const QColor &fgcolor=QColor("black"), const QColor &bgcolor=QColor("white"), UMLObject *umlobj=0, const QString &displayName=QString(), int startLine=-1)
Definition: codeeditor.cpp:252
void slotInsertCodeBlockBeforeSelected()
Definition: codeeditor.cpp:689
bool close()
Definition: codeeditor.cpp:144
void clearText()
Definition: codeeditor.cpp:84
void loadFromDocument()
Definition: codeeditor.cpp:214
static bool isNonBlank(const QString &str)
Definition: codeeditor.cpp:184
bool m_newLinePressed
Definition: codeeditor.h:110
int m_lastPara
Definition: codeeditor.h:107
~CodeEditor()
Definition: codeeditor.cpp:77
void changeShowHidden(int signal)
Definition: codeeditor.cpp:1353
void removeParagraph(int para)
Definition: codeeditor.cpp:631
void rebuildView(int startCursorPos)
Definition: codeeditor.cpp:1526
bool paraIsNotSingleLine(int para)
Definition: codeeditor.cpp:1204
QMap< TextBlock *, TextBlockInfo * > m_tbInfoMap
Definition: codeeditor.h:119
KMenu * createPopup()
Definition: codeeditor.cpp:751
void slotCopyTextBlock()
Definition: codeeditor.cpp:883
void contextMenuEvent(QContextMenuEvent *event)
Definition: codeeditor.cpp:733
QLabel * componentLabel()
Definition: codeeditor.cpp:111
void changeHighlighting(int signal)
Definition: codeeditor.cpp:1366
void mouseDoubleClickEvent(QMouseEvent *e)
Definition: codeeditor.cpp:1456
bool m_isHighlighted
Definition: codeeditor.h:112
bool textBlockIsClickable(UMLObject *obj)
Definition: codeeditor.cpp:642
TextBlock * m_selectedTextBlock
Definition: codeeditor.h:116
void contentsMouseMoveEvent(QMouseEvent *e)
Definition: codeeditor.cpp:1481
CodeDocument * m_parentDoc
Definition: codeeditor.h:104
CodeEditor(const QString &text, CodeViewerDialog *parent=0, CodeDocument *doc=0)
Definition: codeeditor.cpp:59
void contractSelectedParagraph(int where)
Definition: codeeditor.cpp:1395
Settings::CodeViewerState state()
Definition: codeeditor.cpp:102
bool m_backspacePressed
Definition: codeeditor.h:111
void appendText(TextBlock *tblock)
Definition: codeeditor.cpp:553
void slotRedrawText()
Definition: codeeditor.cpp:942
void slotChangeSelectedBlockView()
Definition: codeeditor.cpp:660
void keyPressEvent(QKeyEvent *e)
Definition: codeeditor.cpp:196
bool m_showHiddenBlocks
Definition: codeeditor.h:113
void clicked(int para, int pos)
Definition: codeeditor.cpp:121
void init(CodeViewerDialog *parentDialog, CodeDocument *parentDoc)
Definition: codeeditor.cpp:952
int m_lastPos
Definition: codeeditor.h:108
TextBlock * m_textBlockToPaste
Definition: codeeditor.h:115
TextBlock * findTextBlockAt(int characterPos)
Definition: codeeditor.cpp:1225
void slotInsertCodeBlockAfterSelected()
Definition: codeeditor.cpp:709
QString m_parentDocName
Definition: codeeditor.h:103
TextBlockList m_textBlockList
Definition: codeeditor.h:120
void slotPasteTextBlock()
Definition: codeeditor.cpp:930
void slotChangeSelectedBlockCommentView()
Definition: codeeditor.cpp:673
void initText(CodeDocument *doc)
void changeTextBlockHighlighting(TextBlock *tb, bool selected)
Definition: codeeditor.cpp:1306
TextBlock * m_lastTextBlockToBeEdited
Definition: codeeditor.h:117
CodeViewerDialog * m_parentDialog
Definition: codeeditor.h:105
void insertParagraph(const QString &text, int para)
Definition: codeeditor.cpp:621
void slotCursorPositionChanged()
Definition: codeeditor.cpp:1063
void setParagraphBackgroundColor(int position, const QColor &color)
Definition: codeeditor.cpp:1342
Definition: codemethodblock.h:26
Definition: codeviewerdialog.h:23
Definition: hierarchicalcodeblock.h:21
Definition: codeeditor.h:32
QColor bgcolor
Definition: codeeditor.h:38
ParaInfo()
Definition: codeeditor.h:41
int size
number of characters
Definition: codeeditor.h:35
int end
end line number
Definition: codeeditor.h:36
bool isEditable
Definition: codeeditor.h:39
QColor fgcolor
Definition: codeeditor.h:37
int start
Definition: codeeditor.h:34
configurable params for the code viewer tool
Definition: codeviewerstate.h:15
Definition: codeeditor.h:50
QString m_displayName
Definition: codeeditor.h:54
UMLObject * parent()
Definition: codeeditor.h:60
TextBlockInfo()
Definition: codeeditor.h:58
bool isClickable
Definition: codeeditor.h:55
QString displayName() const
Definition: codeeditor.h:62
bool isCodeAccessorMethod
Definition: codeeditor.h:56
QList< ParaInfo * > m_paraList
Definition: codeeditor.h:52
void setParent(UMLObject *p=0)
Definition: codeeditor.h:59
void setDisplayName(const QString &name)
Definition: codeeditor.h:61
UMLObject * m_parent
Definition: codeeditor.h:53
Definition: textblock.h:23
The base class for UML objects.
Definition: umlobject.h:70
QList< TextBlock * > TextBlockList
Definition: textblocklist.h:12