umbrello  2.32.1
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  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2003 Brian Thomas <brian.thomas@gsfc.nasa.gov> *
8  * copyright (C) 2004-2020 *
9  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
10  ***************************************************************************/
11 
12 #ifndef CODEEDITOR_H
13 #define CODEEDITOR_H
14 
15 #include "codeviewerstate.h"
16 #include "textblocklist.h"
17 
18 #include <ktextedit.h>
19 
20 #include <QList>
21 #include <QString>
22 
23 class CodeViewerDialog;
24 class CodeComment;
25 class CodeDocument;
27 class CodeMethodBlock;
30 class KMenu;
31 class QLabel;
32 class TextBlock;
33 class UMLObject;
34 
35 class ParaInfo
36 {
37 public:
38  int start; // this is a relative offset from the beginning of the tblock
39  int size;
40  int end;
41  QColor fgcolor;
42  QColor bgcolor;
43  bool isEditable;
44 
46  : start(0),
47  size(0),
48  end(0),
49  isEditable(false) { }
50 };
51 
52 
54 {
55 public:
56  QList<ParaInfo*> m_paraList;
58  QString m_displayName;
61 
63  void setParent(UMLObject *p = 0) { m_parent = p; }
64  UMLObject * parent() { return m_parent; }
65  void setDisplayName(const QString& name) { m_displayName = name; }
66  QString displayName() { return m_displayName; }
67 };
68 
69 
70 class CodeEditor : public KTextEdit
71 {
72  Q_OBJECT
73 public:
74  explicit CodeEditor(const QString & text, CodeViewerDialog * parent = 0, CodeDocument * doc = 0);
75  explicit CodeEditor(CodeViewerDialog * parent = 0, CodeDocument * doc = 0);
76  ~CodeEditor();
77 
79 
80 protected:
81  bool close ();
82 
83  void appendText(TextBlock * tblock);
84  void appendText(HierarchicalCodeBlock * hblock);
86  void appendText(TextBlockList * items);
87  void appendText(CodeMethodBlock * mb);
88  void appendText(CodeComment * comment, TextBlock * parent, UMLObject * umlObj = 0, const QString & compName = QString());
90 
91  void rebuildView(int startCursorPos);
92 
93  void contextMenuEvent(QContextMenuEvent * event);
94  void contentsMouseMoveEvent(QMouseEvent * e);
95  void keyPressEvent(QKeyEvent * e);
96  void mouseDoubleClickEvent(QMouseEvent * e);
97 
98  void loadFromDocument();
99 
100 #if QT_VERSION >= 0x050000
101  QMenu * createPopup();
102 #else
103  KMenu * createPopup();
104 #endif
105 
106 private:
110 
113 
118 
122 
123  QMap<TextBlock*, TextBlockInfo*> m_tbInfoMap;
125 
126  void insertText(const QString & text, TextBlock * parent, bool isEditable = false,
127  const QColor & fgcolor = QColor("black"), const QColor & bgcolor = QColor("white"),
128  UMLObject * umlobj = 0, const QString & displayName = QString(), int startLine = -1);
129 
130  void editTextBlock(TextBlock * tBlock, int para);
131  void clearText();
132  QLabel * componentLabel();
133  bool paraIsNotSingleLine(int para);
134  void expandSelectedParagraph(int where);
135  void contractSelectedParagraph(int where);
136  void updateTextBlockFromText(TextBlock * block);
137 
138  void initText(CodeDocument * doc);
139  void init(CodeViewerDialog * parentDialog, CodeDocument * parentDoc);
140 
141  void changeTextBlockHighlighting(TextBlock * tb, bool selected);
142  void setParagraphBackgroundColor(int position, const QColor& color);
143  bool isParaEditable(int para);
144  bool textBlockIsClickable(UMLObject * obj);
145 
146  TextBlock* findTextBlockAt(int characterPos);
147 
148  void clicked(int para, int pos);
149 
150  static bool isNonBlank(const QString &str);
151 
152 public slots:
153  void insertParagraph(const QString & text, int para);
154  void removeParagraph(int para);
155  void changeHighlighting(int signal);
156  void changeShowHidden(int signal);
157  void slotRedrawText();
158 
159 protected slots:
161  void slotCopyTextBlock();
162  void slotCutTextBlock();
163  void slotPasteTextBlock();
168 
169 signals:
170  // void sigNewLinePressed();
171  // void sigBackspacePressed();
172 
173 };
174 
175 #endif // CODEEDITOR_H
Definition: codeblockwithcomments.h:24
Definition: codeclassfielddeclarationblock.h:30
Definition: codecomment.h:24
Definition: codedocument.h:34
Definition: codeeditor.h:71
void updateTextBlockFromText(TextBlock *block)
Definition: codeeditor.cpp:1005
void editTextBlock(TextBlock *tBlock, int para)
Definition: codeeditor.cpp:161
void expandSelectedParagraph(int where)
Definition: codeeditor.cpp:1429
bool isParaEditable(int para)
Definition: codeeditor.cpp:1254
void slotCutTextBlock()
Definition: codeeditor.cpp:907
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:254
void slotInsertCodeBlockBeforeSelected()
Definition: codeeditor.cpp:691
bool close()
Definition: codeeditor.cpp:147
void clearText()
Definition: codeeditor.cpp:87
void loadFromDocument()
Definition: codeeditor.cpp:216
static bool isNonBlank(const QString &str)
Definition: codeeditor.cpp:187
bool m_newLinePressed
Definition: codeeditor.h:114
int m_lastPara
Definition: codeeditor.h:111
~CodeEditor()
Definition: codeeditor.cpp:80
void changeShowHidden(int signal)
Definition: codeeditor.cpp:1355
void removeParagraph(int para)
Definition: codeeditor.cpp:633
void rebuildView(int startCursorPos)
Definition: codeeditor.cpp:1527
bool paraIsNotSingleLine(int para)
Definition: codeeditor.cpp:1206
QMap< TextBlock *, TextBlockInfo * > m_tbInfoMap
Definition: codeeditor.h:123
KMenu * createPopup()
Definition: codeeditor.cpp:753
void slotCopyTextBlock()
Definition: codeeditor.cpp:885
void contextMenuEvent(QContextMenuEvent *event)
Definition: codeeditor.cpp:735
QLabel * componentLabel()
Definition: codeeditor.cpp:114
void changeHighlighting(int signal)
Definition: codeeditor.cpp:1368
void mouseDoubleClickEvent(QMouseEvent *e)
Definition: codeeditor.cpp:1458
bool m_isHighlighted
Definition: codeeditor.h:116
bool textBlockIsClickable(UMLObject *obj)
Definition: codeeditor.cpp:644
TextBlock * m_selectedTextBlock
Definition: codeeditor.h:120
void contentsMouseMoveEvent(QMouseEvent *e)
Definition: codeeditor.cpp:1482
CodeDocument * m_parentDoc
Definition: codeeditor.h:108
CodeEditor(const QString &text, CodeViewerDialog *parent=0, CodeDocument *doc=0)
Definition: codeeditor.cpp:62
void contractSelectedParagraph(int where)
Definition: codeeditor.cpp:1397
Settings::CodeViewerState state()
Definition: codeeditor.cpp:105
bool m_backspacePressed
Definition: codeeditor.h:115
void appendText(TextBlock *tblock)
Definition: codeeditor.cpp:555
void slotRedrawText()
Definition: codeeditor.cpp:944
void slotChangeSelectedBlockView()
Definition: codeeditor.cpp:662
void keyPressEvent(QKeyEvent *e)
Definition: codeeditor.cpp:199
bool m_showHiddenBlocks
Definition: codeeditor.h:117
void clicked(int para, int pos)
Definition: codeeditor.cpp:124
void init(CodeViewerDialog *parentDialog, CodeDocument *parentDoc)
Definition: codeeditor.cpp:954
int m_lastPos
Definition: codeeditor.h:112
TextBlock * m_textBlockToPaste
Definition: codeeditor.h:119
TextBlock * findTextBlockAt(int characterPos)
Definition: codeeditor.cpp:1227
void slotInsertCodeBlockAfterSelected()
Definition: codeeditor.cpp:711
QString m_parentDocName
Definition: codeeditor.h:107
TextBlockList m_textBlockList
Definition: codeeditor.h:124
void slotPasteTextBlock()
Definition: codeeditor.cpp:932
void slotChangeSelectedBlockCommentView()
Definition: codeeditor.cpp:675
void initText(CodeDocument *doc)
void changeTextBlockHighlighting(TextBlock *tb, bool selected)
Definition: codeeditor.cpp:1308
TextBlock * m_lastTextBlockToBeEdited
Definition: codeeditor.h:121
CodeViewerDialog * m_parentDialog
Definition: codeeditor.h:109
void insertParagraph(const QString &text, int para)
Definition: codeeditor.cpp:623
void slotCursorPositionChanged()
Definition: codeeditor.cpp:1065
void setParagraphBackgroundColor(int position, const QColor &color)
Definition: codeeditor.cpp:1344
Definition: codemethodblock.h:30
Definition: codeviewerdialog.h:28
Definition: hierarchicalcodeblock.h:25
Definition: codeeditor.h:36
QColor bgcolor
Definition: codeeditor.h:42
ParaInfo()
Definition: codeeditor.h:45
int size
number of characters
Definition: codeeditor.h:39
int end
end line number
Definition: codeeditor.h:40
bool isEditable
Definition: codeeditor.h:43
QColor fgcolor
Definition: codeeditor.h:41
int start
Definition: codeeditor.h:38
configurable params for the code viewer tool
Definition: codeviewerstate.h:20
Definition: codeeditor.h:54
QString m_displayName
Definition: codeeditor.h:58
UMLObject * parent()
Definition: codeeditor.h:64
TextBlockInfo()
Definition: codeeditor.h:62
bool isClickable
Definition: codeeditor.h:59
QString displayName()
Definition: codeeditor.h:66
bool isCodeAccessorMethod
Definition: codeeditor.h:60
QList< ParaInfo * > m_paraList
Definition: codeeditor.h:56
void setParent(UMLObject *p=0)
Definition: codeeditor.h:63
void setDisplayName(const QString &name)
Definition: codeeditor.h:65
UMLObject * m_parent
Definition: codeeditor.h:57
Definition: textblock.h:27
The base class for UML objects.
Definition: umlobject.h:75
QList< TextBlock * > TextBlockList
Definition: textblocklist.h:17