diff -r 6783e13bb05d -r f688a9913724 xml.cpp --- a/xml.cpp Sat Apr 09 22:50:08 2005 +0000 +++ b/xml.cpp Mon Apr 18 06:17:00 2005 +0000 @@ -7,6 +7,7 @@ #include "misc.h" #include "settings.h" +#include "linkablemapobj.h" #include "version.h" @@ -228,6 +229,10 @@ lastBranch->addFloatImage(); lastFloat=lastBranch->getLastFloatImage(); if (!readFloatImageAttr(atts)) return false; + } else if ( eName == "xlink" && state == StateBranch ) + { + state=StateBranchXLink; + if (!readXLinkAttr (atts)) return false; } else if ( eName == "branch" && state == StateBranch ) { lastBranch->addBranch(); @@ -282,6 +287,7 @@ case StateBranchHeading: state=StateBranch; return true; case StateBranchNote: state=StateBranch; return true; case StateBranchFloatImage: state=StateBranch; return true; + case StateBranchXLink: state=StateBranch; return true; case StateHtmlNote: state=laststate; return true; case StateHtml: htmldata+=""; @@ -504,6 +510,38 @@ return true; } +bool mapBuilderHandler::readXLinkAttr (const QXmlAttributes& a) +{ + QColor col; + XLinkObj *xlo=new XLinkObj (mc->getCanvas()); + if (!a.value( "xLinkColor").isEmpty() ) + { + col.setNamedColor(a.value("xLinkColor")); + xlo->setColor (col); + } + + if (!a.value( "beginBranch").isEmpty() ) + { + if (!a.value( "endBranch").isEmpty() ) + { + LinkableMapObj *lmo=mc->findObj (a.value( "beginBranch")); + if (lmo && typeid (*lmo)==typeid (BranchObj)) + { + xlo->setBegin ((BranchObj*)(lmo)); + lmo=mc->findObj (a.value( "endBranch")); + if (lmo && typeid (*lmo)==typeid (BranchObj)) + { + xlo->setEnd ((BranchObj*)(lmo)); + xlo->activate(); + return true; + } + } + return true; // Not all branches there yet, no error + } + } + return false; +} + bool mapBuilderHandler::readHtmlAttr (const QXmlAttributes& a) { for (int i=1; i<=a.count(); i++)