diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | bd9e6617827818fd043452c08c606f07b78014a0 (patch) | |
tree | 425bb4c3168f9c02f10150f235d2cb998dcc6108 /umbrello/umbrello/codedocument.h | |
download | tdesdk-bd9e6617827818fd043452c08c606f07b78014a0.tar.gz tdesdk-bd9e6617827818fd043452c08c606f07b78014a0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdesdk@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'umbrello/umbrello/codedocument.h')
-rw-r--r-- | umbrello/umbrello/codedocument.h | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/umbrello/umbrello/codedocument.h b/umbrello/umbrello/codedocument.h new file mode 100644 index 00000000..609b70c6 --- /dev/null +++ b/umbrello/umbrello/codedocument.h @@ -0,0 +1,273 @@ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * copyright (C) 2004-2006 * + * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * + ***************************************************************************/ + +/* This code generated by: + * Author : thomas + * Date : Wed Jun 18 2003 + */ + +#ifndef CODEDOCUMENT_H +#define CODEDOCUMENT_H + +#include <qobject.h> +#include <qmap.h> +#include <qstring.h> + +#include "codegenerationpolicy.h" +#include "codegenobjectwithtextblocks.h" +#include "hierarchicalcodeblock.h" + +class QWidget; +class CodeAccessorMethod; +class CodeBlockWithComments; +class CodeComment; +class CodeOperation; +class TextBlock; +class UMLPackage; + +//#include "codedocumentdialog.h" + +/** + * class CodeDocument + * A document containing the code for one file. + */ + +// "friend" status is needed for HBlock so it may call addChildTagToMap which +// is protected. +class CodeDocument : public QObject, public CodeGenObjectWithTextBlocks +{ + friend class HierarchicalCodeBlock; + Q_OBJECT +public: + + // Constructors/Destructors + // + + + /** + * Empty Constructor + */ + /** + * Basic constructor for class. + */ + CodeDocument ( ); + + /** + * Empty Destructor + */ + virtual ~CodeDocument ( ); + + // Public attributes + // + + // Public attribute accessor methods + // + + /** + * Set the value of m_fileExtension + * @param new_var the new value of m_fileExtension + */ + void setFileExtension ( const QString &new_var ); + + /** + * Get the value of m_fileExtension + * @return the value of m_fileExtension + */ + QString getFileExtension ( ) const; + + /** + * Set the complete value (name plus any extension) of m_filename + * @param new_var the new value of m_filename + */ + void setFileName ( const QString &new_var ); + + /** + * Get the value of m_filename. This name is the "complete" filename, + * meaning that it contains both the file name plus any extension (e.g. "file.cpp") + * @return the value of m_filename + */ + QString getFileName ( ) const; + + /** + * Set the value of m_package + * @param new_var the new value of m_package + */ + void setPackage ( UMLPackage *new_var ); + + /** + * Get the value of the package of this codedocument. + * @return the value of m_pathName + */ + QString getPackage ( ) const; + + /** + * Get the value of the path to this codedocument. + * @return the value of m_pathName + */ + virtual QString getPath ( ); + + /** + * Set the value of m_ID + * @param new_id the new value of m_ID + */ + void setID ( const QString &new_id); + + /** + * Get the value of m_ID + * @return the value of m_ID + */ + QString getID ( ) const; + + /** + * Set the value of m_writeOutCode + * Whether or not to write out this code document and any codeblocks, etc that it + * owns. + * @param new_var the new value of m_writeOutCode + */ + void setWriteOutCode ( bool new_var ); + + /** + * Get the value of m_writeOutCode + * Whether or not to write out this code document and any codeblocks, etc that it + * owns. + * @return the value of m_writeOutCode + */ + bool getWriteOutCode ( ); + + /** + * Set a Header comment object + */ + void setHeader ( CodeComment * comment ); + + /** + * Get the Header comment object + */ + CodeComment * getHeader ( ); + + /** + * Insert a new text block after the existing text block. Returns + * false if it cannot insert the textblock. + */ + bool insertTextBlock (TextBlock * newBlock, TextBlock * existingBlock, bool after = true); + + /** + * Lookup a certain textblock by its tag value, returns NULL if it cant + * find the TextBlock with such a tag. If descendIntoChildren is true, then + * any child hierarchical textblocks will also be searched for a match. + */ + TextBlock * findTextBlockByTag( const QString &tag , bool descendIntoChildren = false); + + /** + * create the string representation of this object. + * @return QString + */ + virtual QString toString ( ); + + /** + * Save the XMI representation of this object + */ + virtual void saveToXMI ( QDomDocument & doc, QDomElement & root ); + + /** + * load params from the appropriate XMI element node. + */ + virtual void loadFromXMI ( QDomElement & root ); + + /** + * create a new CodeBlock object belonging to this CodeDocument. + * @return CodeBlock + */ + virtual CodeBlock * newCodeBlock ( ); + + /** + * create a new HierarchicalCodeBlock object belonging to this CodeDocument. + * @return HierarchicalCodeBlock + */ + virtual HierarchicalCodeBlock * newHierarchicalCodeBlock ( ); + + /** + * create a new CodeBlockWithComments object belonging to this CodeDocument. + * @return CodeBlockWithComments + */ + virtual CodeBlockWithComments * newCodeBlockWithComments ( ); + + // return a unique, and currently unallocated, text block tag for this document + virtual QString getUniqueTag( const QString& prefix = QString("") ); + + /** a little utility method to make life easier for the code document programmer + */ + QString cleanName ( const QString &name ); + + // Cause this code document to synchronize to current generator policy + virtual void synchronize(); + + +protected: + + /** set attributes of the node that represents this class + * in the XMI document. + */ + virtual void setAttributesOnNode ( QDomDocument & doc, QDomElement & blockElement); + + /** set the class attributes of this object from + * the passed element node. + */ + virtual void setAttributesFromNode ( QDomElement & element); + + // these next 2 are needed by child hierarchical code blocks so + // that when they call getUniqueTag, we really get a unique tag + // Also, it allows 'findTextBlockByTag' To find any tagged text block + // anywhere in the document, whether directly owned by the document OR + // by some child hierarchical textblock + void addChildTagToMap ( const QString &tag, TextBlock * tb); + void removeChildTagFromMap ( const QString &tag ); + + // update the header text of this codedocument + void updateHeader (); + + // reset/clear our inventory of textblocks in this document + void resetTextBlocks(); + + // update the content of this code document + // this is where you should lay out your code document structure of textblocks + // in the inheriting class, should it have any text in it. + virtual void updateContent(); + + // have to implement this for CodeObjectWithTextBlocks + // doenst actually do anythying fo ra vannilla code document + virtual TextBlock * findCodeClassFieldTextBlockByTag( const QString &tag ); + +private: + + int lastTagIndex; + QString m_filename; + QString m_fileExtension; + QString m_ID; + QString m_pathName; + UMLPackage *m_package; + + bool m_writeOutCode; // Whether or not to write out this code document + // and any codeblocks, etc that it owns. + + CodeComment * m_header; + + + void initDoc ( ) ; + + // TextBlockList m_textblockVector; + // QMap<QString, TextBlock *> m_textBlockTagMap; + + // for recording all of the textblocks held by child hierarchical codeblocks + QMap<QString, TextBlock *> m_childTextBlockTagMap; + +}; + +#endif // CODEDOCUMENT_H |