umbrello  2.32.0
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
codedocument.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 <thomas@mail630.gsfc.nasa.gov> *
8  * copyright (C) 2004-2020 *
9  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
10  ***************************************************************************/
11 
12 #ifndef CODEDOCUMENT_H
13 #define CODEDOCUMENT_H
14 
16 #include "hierarchicalcodeblock.h"
17 
18 #include <QMap>
19 #include <QObject>
20 #include <QString>
21 
23 class CodeComment;
24 class TextBlock;
25 class UMLPackage;
26 
32 class CodeDocument : public QObject, public CodeGenObjectWithTextBlocks
33 {
34  friend class HierarchicalCodeBlock;
35  Q_OBJECT
36 public:
37 
38  CodeDocument ();
39  virtual ~CodeDocument ();
40 
41  void setFileExtension (const QString &new_var);
42  QString getFileExtension () const;
43 
44  void setFileName (const QString &new_var);
45  QString getFileName () const;
46 
47  void setPackage (UMLPackage *new_var);
48  QString getPackage () const;
49 
50  virtual QString getPath ();
51 
52  void setID (const QString &new_id);
53  QString ID () const;
54 
55  void setWriteOutCode (bool new_var);
56  bool getWriteOutCode ();
57 
58  void setHeader (CodeComment * comment);
60 
61  bool insertTextBlock (TextBlock * newBlock, TextBlock * existingBlock, bool after = true);
62 
63  TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren = false);
64 
65  virtual QString toString ();
66 
67  virtual void saveToXMI1 (QDomDocument & doc, QDomElement & root);
68  virtual void loadFromXMI1 (QDomElement & root);
69 
70  virtual CodeBlock * newCodeBlock ();
73 
74  virtual QString getUniqueTag(const QString& prefix = QString());
75 
76  QString cleanName (const QString &name);
77 
78  virtual void synchronize();
79 
80  virtual void updateContent();
81 
82  friend QDebug operator<<(QDebug os, const CodeDocument& obj);
83 
84 protected:
85 
86  virtual void setAttributesOnNode (QDomDocument & doc, QDomElement & blockElement);
87 
88  virtual void setAttributesFromNode (QDomElement & element);
89 
90  // these next 2 are needed by child hierarchical code blocks so
91  // that when they call getUniqueTag, we really get a unique tag
92  // Also, it allows 'findTextBlockByTag' To find any tagged text block
93  // anywhere in the document, whether directly owned by the document OR
94  // by some child hierarchical textblock
95  void addChildTagToMap (const QString &tag, TextBlock * tb);
96  void removeChildTagFromMap (const QString &tag);
97 
98  void updateHeader ();
99 
100  void resetTextBlocks();
101 
102  virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
103 
104 private:
105 
107  QString m_filename;
109  QString m_ID;
110  QString m_pathName;
112 
113  bool m_writeOutCode; // Whether or not to write out this code document
114  // and any codeblocks, etc that it owns.
115 
117 
118  // for recording all of the textblocks held by child hierarchical codeblocks
119  QMap<QString, TextBlock *> m_childTextBlockTagMap;
120 
121 };
122 
123 #endif // CODEDOCUMENT_H
bool getWriteOutCode()
Definition: codedocument.cpp:165
virtual void updateContent()
Definition: codedocument.cpp:451
QString m_pathName
Definition: codedocument.h:110
void setHeader(CodeComment *comment)
Definition: codedocument.cpp:174
Non-graphical information for a Package.
Definition: package.h:32
virtual CodeBlockWithComments * newCodeBlockWithComments()
Definition: codedocument.cpp:469
virtual CodeBlock * newCodeBlock()
Definition: codedocument.cpp:460
Definition: codeblock.h:20
virtual void synchronize()
Definition: codedocument.cpp:329
virtual void saveToXMI1(QDomDocument &doc, QDomElement &root)
Definition: codedocument.cpp:437
int m_lastTagIndex
Definition: codedocument.h:106
void updateHeader()
Definition: codedocument.cpp:279
bool insertTextBlock(TextBlock *newBlock, TextBlock *existingBlock, bool after=true)
Definition: codedocument.cpp:216
QString m_filename
Definition: codedocument.h:107
virtual void loadFromXMI1(QDomElement &root)
Definition: codedocument.cpp:348
virtual HierarchicalCodeBlock * newHierarchicalCodeBlock()
Definition: codedocument.cpp:478
QMap< QString, TextBlock * > m_childTextBlockTagMap
Definition: codedocument.h:119
CodeComment * m_header
Definition: codedocument.h:116
virtual QString getPath()
Definition: codedocument.cpp:100
QString m_fileExtension
Definition: codedocument.h:108
Definition: codeblockwithcomments.h:23
QString ID() const
Definition: codedocument.cpp:143
void setWriteOutCode(bool new_var)
Definition: codedocument.cpp:154
virtual ~CodeDocument()
Definition: codedocument.cpp:40
void resetTextBlocks()
Definition: codedocument.cpp:338
virtual void setAttributesOnNode(QDomDocument &doc, QDomElement &blockElement)
Definition: codedocument.cpp:357
Definition: codedocument.h:32
QString m_ID
Definition: codedocument.h:109
friend QDebug operator<<(QDebug os, const CodeDocument &obj)
Definition: codedocument.cpp:526
void addChildTagToMap(const QString &tag, TextBlock *tb)
Definition: codedocument.cpp:490
virtual QString getUniqueTag(const QString &prefix=QString())
Definition: codedocument.cpp:193
virtual void setAttributesFromNode(QDomElement &element)
Definition: codedocument.cpp:388
bool m_writeOutCode
Definition: codedocument.h:113
QString getFileExtension() const
Definition: codedocument.cpp:82
QString getFileName() const
Definition: codedocument.cpp:63
Definition: codegenobjectwithtextblocks.h:31
QString cleanName(const QString &name)
Definition: codedocument.cpp:270
virtual QString toString()
Definition: codedocument.cpp:302
TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren=false)
Definition: codedocument.cpp:503
void setFileName(const QString &new_var)
Definition: codedocument.cpp:53
QString getPackage() const
Definition: codedocument.cpp:123
Definition: hierarchicalcodeblock.h:22
Definition: textblock.h:24
virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: codedocument.cpp:520
void setPackage(UMLPackage *new_var)
Definition: codedocument.cpp:91
UMLPackage * m_package
Definition: codedocument.h:111
void removeChildTagFromMap(const QString &tag)
Definition: codedocument.cpp:485
Definition: codecomment.h:23
void setFileExtension(const QString &new_var)
Definition: codedocument.cpp:72
void setID(const QString &new_id)
Definition: codedocument.cpp:134
CodeComment * getHeader()
Definition: codedocument.cpp:183
CodeDocument()
Definition: codedocument.cpp:29