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