# HG changeset patch # User insilmaril # Date 1194535683 0 # Node ID c60984c46f9f5002203cd13a2d672655e3961ed7 # Parent 24bfecc949a00d27c465a6f3701f96990dc2e6c8 1.11.2 split up of xml helper functions. started to work on attributes diff -r 24bfecc949a0 -r c60984c46f9f xlinkobj.h --- a/xlinkobj.h Thu Nov 08 15:28:03 2007 +0000 +++ b/xlinkobj.h Thu Nov 08 15:28:03 2007 +0000 @@ -3,6 +3,8 @@ #include "linkablemapobj.h" +class BranchObj; + enum XLinkState {undefinedXLink,initXLink,activeXLink,deleteXLink}; /*! \brief xlinks are used to draw arbitrary connections between branches (BranchObj) in the map. */ diff -r 24bfecc949a0 -r c60984c46f9f xmlobj.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xmlobj.cpp Thu Nov 08 15:28:03 2007 +0000 @@ -0,0 +1,94 @@ +#include "xmlobj.h" + +#include + + +// returns masked "<" ">" "&" +QString quotemeta(const QString &s) +{ + QString r=s; + QRegExp rx("&(?!amp;)"); + r.replace ( rx,"&"); + rx.setPattern( ">"); + r.replace ( rx,">"); + rx.setPattern( "<"); + r.replace ( rx,"<"); + rx.setPattern( "\""); + r.replace ( rx,"""); + return r; +} + + + +int XMLObj::actindent=0; // make instance of actindent + +XMLObj::XMLObj() +{ + indentwidth=4; +} + + +// returns +QString XMLObj::singleElement(QString s, QString at) +{ + return indent() + "<" + s +" " + at +" " + "/>\n"; +} + +// returns +QString XMLObj::beginElement(QString s) +{ + return indent() + "<" + s + ">\n"; +} + +// returns +QString XMLObj::beginElement(QString s, QString at) +{ + return indent() + "<" + s + " " + at + ">\n"; +} + +// returns +QString XMLObj::endElement(QString s) +{ + return indent() + "\n"; +} + +// returns at="val" +QString XMLObj::attribut(QString at, QString val) +{ + return " " + at + "=\"" + quotemeta (val) + "\""; +} + +// returns val +QString XMLObj::valueElement(QString el, QString val) +{ + return indent() + "<" + el + ">" + quotemeta(val) + "\n"; +} + +// returns val +QString XMLObj::valueElement(QString el, QString val, QString at) +{ + return indent() + "<" + el + " " + at + ">" + quotemeta(val) + "\n"; +} + +void XMLObj::incIndent() +{ + actindent++; +} + +void XMLObj::decIndent() +{ + actindent--; + if (actindent<0) actindent=0; +} + +QString XMLObj::indent() +{ + QString s; + int i; + for (i=0; i + +QString quotemeta(const QString&); + +///////////////////////////////////////////////////////////////////////////// +class XMLObj +{ +public: + XMLObj(); + QString singleElement(QString,QString); // name,attr + QString beginElement(QString,QString); // name,attr + QString beginElement(QString); // name + QString endElement (QString); // name + QString attribut (QString,QString); // name, val + QString valueElement(QString,QString); // name, val + QString valueElement(QString,QString,QString); // name, attr, val + void incIndent(); + void decIndent(); + static int actindent; + +protected: + QString indent(); + int indentwidth; +}; + +#endif