insilmaril@566: #include "xml-freemind.h" insilmaril@566: insilmaril@566: #include insilmaril@566: #include insilmaril@566: #include insilmaril@566: #include insilmaril@566: insilmaril@749: #include "branchitem.h" insilmaril@566: #include "misc.h" insilmaril@566: #include "settings.h" insilmaril@566: #include "linkablemapobj.h" insilmaril@566: #include "version.h" insilmaril@566: insilmaril@666: //static FloatObj *lastFloat; insilmaril@566: static OrnamentedObj *lastOO; insilmaril@566: insilmaril@566: extern Settings settings; insilmaril@566: extern QString vymVersion; insilmaril@566: insilmaril@566: extern QString flagsPath; insilmaril@566: insilmaril@574: bool parseFreemindHandler::startDocument() insilmaril@566: { insilmaril@566: errorProt = ""; insilmaril@566: state = StateInit; insilmaril@566: laststate = StateInit; insilmaril@566: stateStack.clear(); insilmaril@566: stateStack.append(StateInit); insilmaril@566: isVymPart=false; insilmaril@566: return true; insilmaril@566: } insilmaril@566: insilmaril@566: insilmaril@574: QString parseFreemindHandler::parseHREF(QString href) insilmaril@566: { insilmaril@566: QString type=href.section(":",0,0); insilmaril@566: QString path=href.section(":",1,1); insilmaril@566: if (!tmpDir.endsWith("/")) insilmaril@566: return tmpDir + "/" + path; insilmaril@566: else insilmaril@566: return tmpDir + path; insilmaril@566: } insilmaril@566: insilmaril@574: bool parseFreemindHandler::startElement ( const QString&, const QString&, insilmaril@566: const QString& eName, const QXmlAttributes& atts ) insilmaril@566: { insilmaril@566: QColor col; insilmaril@566: /* Testing insilmaril@660: cout << "startElement <"<< qPrintable(eName) insilmaril@566: <<"> state="<Freemind map is newer than version " +v +" " insilmaril@566: "

The map you are just trying to load was " insilmaril@566: "saved using freemind " +atts.value("version")+". " insilmaril@566: "The version of this vym can parse freemind " + v +"."); insilmaril@566: } insilmaril@746: //FIXME-3 TreeItem *ti=model->first(); // this will be NULL !!! insilmaril@746: TreeItem *ti=NULL; insilmaril@741: insilmaril@740: BranchObj *bo; insilmaril@740: if (ti->getType()==TreeItem::MapCenter) insilmaril@740: bo=(BranchObj*)(ti->getLMO()); insilmaril@740: else insilmaril@740: qWarning ("parseFreeMindHandler::startElement no mapCenter!!"); insilmaril@740: insilmaril@746: //cout <<"model="<addBranch(); insilmaril@566: lastBranch->move2RelPos (-200,0); insilmaril@566: lastBranch->setHeading (" "); insilmaril@740: lastBranch=bo; insilmaril@566: insilmaril@566: } else if ( eName == "node" && (state == StateMap || state == StateNode )) insilmaril@566: { insilmaril@566: if (!atts.value( "POSITION").isEmpty() ) insilmaril@566: { insilmaril@566: if (atts.value ("POSITION")=="left") insilmaril@566: { insilmaril@647: model->select ("bo:1"); insilmaril@647: lastBranch=model->getSelectedBranch(); insilmaril@566: if (lastBranch) insilmaril@566: { insilmaril@566: lastBranch->addBranch(); insilmaril@566: lastBranch=lastBranch->getLastBranch(); insilmaril@566: readNodeAttr (atts); insilmaril@566: } insilmaril@566: } else if (atts.value ("POSITION")=="right") insilmaril@566: { insilmaril@647: model->select ("bo:0"); insilmaril@647: lastBranch=model->getSelectedBranch(); insilmaril@566: if (lastBranch) insilmaril@566: { insilmaril@566: lastBranch->addBranch(); insilmaril@566: lastBranch=lastBranch->getLastBranch(); insilmaril@566: readNodeAttr (atts); insilmaril@566: } insilmaril@566: } insilmaril@566: } else insilmaril@566: { insilmaril@566: if (state!=StateMap) insilmaril@566: { insilmaril@566: lastBranch->addBranch(); insilmaril@566: lastBranch=lastBranch->getLastBranch(); insilmaril@566: } insilmaril@566: readNodeAttr (atts); insilmaril@566: } insilmaril@566: state=StateNode; insilmaril@566: } else if ( eName == "font" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateFont; insilmaril@566: } else if ( eName == "edge" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateEdge; insilmaril@566: } else if ( eName == "hook" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateHook; insilmaril@566: } else if ( eName == "icon" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateIcon; insilmaril@566: if (!atts.value("BUILTIN").isEmpty() ) insilmaril@566: { insilmaril@566: QString f=atts.value("BUILTIN"); insilmaril@566: QString v; insilmaril@566: if (f=="help") insilmaril@566: v="questionmark"; insilmaril@566: else if (f=="messagebox_warning") insilmaril@566: v="freemind-warning"; insilmaril@566: else if (f=="idea") insilmaril@566: v="lamp"; insilmaril@566: else if (f=="button_ok") insilmaril@566: v="hook-green"; insilmaril@566: else if (f=="button_cancel") insilmaril@566: v="cross-red"; insilmaril@566: else if (f.contains("full-")) insilmaril@574: v=f.replace("full-","freemind-priority-"); insilmaril@566: else if (f=="back") insilmaril@566: v="freemind-back"; insilmaril@566: else if (f=="forward") insilmaril@566: v="freemind-forward"; insilmaril@566: else if (f=="attach") insilmaril@566: v="freemind-attach"; insilmaril@566: else if (f=="ksmiletris") insilmaril@566: v="smiley-good"; // insilmaril@566: else if (f=="clanbomber") insilmaril@566: v="freemind-clanbomber"; insilmaril@566: else if (f=="desktop_new") insilmaril@566: v="freemind-desktopnew"; insilmaril@566: else if (f=="flag") insilmaril@566: v="freemind-flag"; insilmaril@566: else if (f=="gohome") insilmaril@566: v="freemind-gohome"; insilmaril@566: else if (f=="kaddressbook") insilmaril@566: v="freemind-kaddressbook"; insilmaril@566: else if (f=="knotify") insilmaril@566: v="freemind-knotify"; insilmaril@566: else if (f=="korn") insilmaril@566: v="freemind-korn"; insilmaril@566: else if (f=="Mail") insilmaril@566: v="freemind-mail"; insilmaril@566: else if (f=="password") insilmaril@566: v="freemind-password"; insilmaril@566: else if (f=="pencil") insilmaril@566: v="freemind-pencil"; insilmaril@566: else if (f=="stop") insilmaril@566: v="freemind-stop"; insilmaril@566: else if (f=="wizard") insilmaril@566: v="freemind-wizard"; insilmaril@566: else if (f=="xmag") insilmaril@566: v="freemind-xmag"; insilmaril@566: else if (f=="bell") insilmaril@566: v="freemind-bell"; insilmaril@566: else if (f=="bookmark") insilmaril@566: v="freemind-bookmark"; insilmaril@566: else if (f=="penguin") insilmaril@566: v="freemind-penguin"; insilmaril@566: else if (f=="licq") insilmaril@566: v="freemind-licq"; insilmaril@566: insilmaril@566: lastBranch->activateStandardFlag( v); insilmaril@566: } insilmaril@566: } else if ( eName == "arrowlink" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateArrowLink; insilmaril@566: } else if ( eName == "cloud" && state == StateNode) insilmaril@566: { insilmaril@566: state=StateCloud; insilmaril@566: } else if ( eName == "text" && state == StateHook) insilmaril@566: { insilmaril@566: state=StateText; insilmaril@566: } else insilmaril@566: return false; // Error insilmaril@566: return true; insilmaril@566: } insilmaril@566: insilmaril@666: bool parseFreemindHandler::endElement ( const QString&, const QString&, const QString&) insilmaril@566: { insilmaril@566: /* Testing insilmaril@660: cout << "endElement state=" <getTreeItem() ); insilmaril@566: insilmaril@566: if (a.value( "FOLDED")=="true" ) insilmaril@749: lastBranchItem->toggleScroll(); insilmaril@566: if (!a.value( "TEXT").isEmpty() ) insilmaril@566: lastBranch->setHeading (a.value ("TEXT")); insilmaril@566: insilmaril@566: if (!a.value( "COLOR").isEmpty() ) insilmaril@566: lastBranch->setColor (QColor (a.value ("COLOR"))); insilmaril@566: insilmaril@566: if (!a.value( "LINK").isEmpty() ) insilmaril@566: lastBranch->setURL (a.value ("LINK")); insilmaril@566: insilmaril@566: return true; insilmaril@566: } insilmaril@566: insilmaril@566: