umbrello  2.32.2
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 QXmlStreamWriter;
25 class TextBlock;
26 class UMLPackage;
27 
33 class CodeDocument : public QObject, public CodeGenObjectWithTextBlocks
34 {
35  friend class HierarchicalCodeBlock;
36  Q_OBJECT
37 public:
38 
39  CodeDocument ();
40  virtual ~CodeDocument ();
41 
42  void setFileExtension (const QString &new_var);
43  QString getFileExtension () const;
44 
45  void setFileName (const QString &new_var);
46  QString getFileName () const;
47 
48  void setPackage (UMLPackage *new_var);
49  QString getPackage () const;
50 
51  virtual QString getPath ();
52 
53  void setID (const QString &new_id);
54  QString ID () const;
55 
56  void setWriteOutCode (bool new_var);
57  bool getWriteOutCode ();
58 
59  void setHeader (CodeComment * comment);
61 
62  bool insertTextBlock (TextBlock * newBlock, TextBlock * existingBlock, bool after = true);
63 
64  TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren = false);
65 
66  virtual QString toString ();
67 
68  virtual void saveToXMI1(QXmlStreamWriter& writer);
69  virtual void loadFromXMI1 (QDomElement & root);
70 
71  virtual CodeBlock * newCodeBlock ();
74 
75  virtual QString getUniqueTag(const QString& prefix = QString());
76 
77  QString cleanName (const QString &name);
78 
79  virtual void synchronize();
80 
81  virtual void updateContent();
82 
83  friend QDebug operator<<(QDebug os, const CodeDocument& obj);
84 
85 protected:
86 
87  virtual void setAttributesOnNode (QXmlStreamWriter& writer);
88 
89  virtual void setAttributesFromNode (QDomElement & element);
90 
91  // these next 2 are needed by child hierarchical code blocks so
92  // that when they call getUniqueTag, we really get a unique tag
93  // Also, it allows 'findTextBlockByTag' To find any tagged text block
94  // anywhere in the document, whether directly owned by the document OR
95  // by some child hierarchical textblock
96  void addChildTagToMap (const QString &tag, TextBlock * tb);
97  void removeChildTagFromMap (const QString &tag);
98 
99  void updateHeader ();
100 
101  void resetTextBlocks();
102 
103  virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag);
104 
105 private:
106 
108  QString m_filename;
110  QString m_ID;
111  QString m_pathName;
113 
114  bool m_writeOutCode; // Whether or not to write out this code document
115  // and any codeblocks, etc that it owns.
116 
118 
119  // for recording all of the textblocks held by child hierarchical codeblocks
120  QMap<QString, TextBlock *> m_childTextBlockTagMap;
121 
122 };
123 
124 #endif // CODEDOCUMENT_H
Definition: codeblockwithcomments.h:24
Definition: codeblock.h:21
Definition: codecomment.h:24
Definition: codedocument.h:34
void updateHeader()
Definition: codedocument.cpp:280
virtual void setAttributesOnNode(QXmlStreamWriter &writer)
Definition: codedocument.cpp:358
void setPackage(UMLPackage *new_var)
Definition: codedocument.cpp:92
QString getFileExtension() const
Definition: codedocument.cpp:83
void setWriteOutCode(bool new_var)
Definition: codedocument.cpp:155
void setFileExtension(const QString &new_var)
Definition: codedocument.cpp:73
QString m_filename
Definition: codedocument.h:108
bool getWriteOutCode()
Definition: codedocument.cpp:166
friend QDebug operator<<(QDebug os, const CodeDocument &obj)
Definition: codedocument.cpp:527
void removeChildTagFromMap(const QString &tag)
Definition: codedocument.cpp:486
QString m_ID
Definition: codedocument.h:110
QString getPackage() const
Definition: codedocument.cpp:124
bool insertTextBlock(TextBlock *newBlock, TextBlock *existingBlock, bool after=true)
Definition: codedocument.cpp:217
QString m_fileExtension
Definition: codedocument.h:109
virtual HierarchicalCodeBlock * newHierarchicalCodeBlock()
Definition: codedocument.cpp:479
virtual QString getUniqueTag(const QString &prefix=QString())
Definition: codedocument.cpp:194
QString getFileName() const
Definition: codedocument.cpp:64
virtual void synchronize()
Definition: codedocument.cpp:330
virtual TextBlock * findCodeClassFieldTextBlockByTag(const QString &tag)
Definition: codedocument.cpp:521
void setHeader(CodeComment *comment)
Definition: codedocument.cpp:175
virtual CodeBlockWithComments * newCodeBlockWithComments()
Definition: codedocument.cpp:470
virtual QString toString()
Definition: codedocument.cpp:303
UMLPackage * m_package
Definition: codedocument.h:112
void setFileName(const QString &new_var)
Definition: codedocument.cpp:54
virtual void loadFromXMI1(QDomElement &root)
Definition: codedocument.cpp:349
virtual QString getPath()
Definition: codedocument.cpp:101
CodeComment * getHeader()
Definition: codedocument.cpp:184
bool m_writeOutCode
Definition: codedocument.h:114
QMap< QString, TextBlock * > m_childTextBlockTagMap
Definition: codedocument.h:120
CodeDocument()
Definition: codedocument.cpp:30
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: codedocument.cpp:438
virtual ~CodeDocument()
Definition: codedocument.cpp:41
void addChildTagToMap(const QString &tag, TextBlock *tb)
Definition: codedocument.cpp:491
void setID(const QString &new_id)
Definition: codedocument.cpp:135
void resetTextBlocks()
Definition: codedocument.cpp:339
QString m_pathName
Definition: codedocument.h:111
QString ID() const
Definition: codedocument.cpp:144
int m_lastTagIndex
Definition: codedocument.h:107
virtual void setAttributesFromNode(QDomElement &element)
Definition: codedocument.cpp:389
virtual CodeBlock * newCodeBlock()
Definition: codedocument.cpp:461
virtual void updateContent()
Definition: codedocument.cpp:452
CodeComment * m_header
Definition: codedocument.h:117
QString cleanName(const QString &name)
Definition: codedocument.cpp:271
TextBlock * findTextBlockByTag(const QString &tag, bool descendIntoChildren=false)
Definition: codedocument.cpp:504
Definition: codegenobjectwithtextblocks.h:33
Definition: hierarchicalcodeblock.h:25
Definition: textblock.h:27
Non-graphical information for a Package.
Definition: package.h:33