00001 #ifndef AMSOTEMPLATE_H
00002 #define AMSOTEMPLATE_H
00003
00004 #include <qstring.h>
00005 #include <qptrlist.h>
00006 #include <qvaluestack.h>
00007 #include <qdom.h>
00008
00009 #define open_token "<:"
00010 #define close_token ":>"
00011 #define open_token_section "\\[:"
00012 #define close_token_section ":\\]"
00013 #define PARAM "param"
00014
00015 #include "ananasglobal.h"
00016 #include "itemplate.h"
00017
00018
00053 class ANANAS_EXPORT aMSOTemplate : public iTemplate
00054 {
00055 Q_OBJECT
00056 public:
00057
00058 aMSOTemplate();
00059 virtual ~aMSOTemplate();
00060
00061 virtual bool open( const QString &fname );
00062 virtual void close();
00063 virtual void clear();
00064 virtual QString getValue( const QString &name );
00065 virtual void setValue( const QString &name, const QString &value );
00066 virtual QString exec( const QString &sname );
00067 virtual QString result();
00068 virtual bool save( const QString & fname );
00069 virtual void cleanUpTags();
00070 virtual void setDir(const QString &dir);
00071 virtual QString getDir();
00072
00073 protected:
00074 QMap<QString,QString> values;
00075 void searchTags(QDomNode node, const QString &sname );
00076 virtual bool getNodeTags(QDomNode node, const QString &tagname, bool params );
00077 void insertRowValues(QDomNode node);
00078 virtual void insertTagsValues(QDomNode node, const QString &tagName);
00079 void clearTags(QDomNode node, bool section );
00080 void clearRow(QDomNode node);
00081 void clearAttributes(QDomNode n, const QString node, const QString attr);
00082 int getRowIndex(QDomNode node);
00083
00092 QString templateDir;
00093
00102 QDomDocument docTpl;
00103
00104
00105 };
00106
00107 #endif //AMSOTEMPLATE_H