diff -r d85834ad8c54 -r 133e2ed6b9c5 vymmodel.cpp --- a/vymmodel.cpp Mon Aug 24 14:39:07 2009 +0000 +++ b/vymmodel.cpp Thu Sep 03 08:52:00 2009 +0000 @@ -16,6 +16,7 @@ #include "parser.h" #include "warningdialog.h" +#include "xlinkitem.h" #include "xml-freemind.h" #include "xmlobj.h" #include "xml-vym.h" @@ -238,7 +239,7 @@ s+=xml.beginElement("vymmap",mapAttr); xml.incIndent(); - // Find the used flags while traversing the tree // FIXME-2 this can be done local to vymmodel maybe... + // Find the used flags while traversing the tree // FIXME-3 this can be done local to vymmodel maybe... standardFlagsMaster->resetUsedCounter(); // Build xml recursivly @@ -261,7 +262,8 @@ // Save Image s+=((ImageItem*)saveSel)->saveToDir(tmpdir,prefix); break; - default://FIXME-4 other types shouldn't be safed... + default: + // other types shouldn't be safed directly... break; } } @@ -1444,12 +1446,14 @@ TreeItem* VymModel::findID (const QString &s) { - TreeItem *ti; - for (int i=0; ibranchCount(); i++) + BranchItem *cur=NULL; + BranchItem *prev=NULL; + next(cur,prev); + while (cur) { - ti=rootItem->getBranchNum(i)->findID (s); - if (ti) return ti; - } + if (s==cur->getID() ) return cur; + next(cur,prev); + } return NULL; } @@ -1984,7 +1988,7 @@ int n; QList cData; - cData << "new" << "undef"<<"undef"; + cData << "new" << "undef"; ImageItem *newii=new ImageItem(cData) ; //newii->setHeading (QApplication::translate("Heading of new image in map", "new image")); @@ -2008,13 +2012,48 @@ return NULL; } +XLinkItem* VymModel::createXLink(BranchItem *bi,bool createMO) +{ + if (bi) + { + QModelIndex parix; + int n; + + QList cData; + cData << "new xLink"<<"undef"; + + XLinkItem *newxli=new XLinkItem(cData) ; + + emit (layoutAboutToBeChanged() ); + + parix=index(bi); + n=bi->getRowNumAppend(newxli); + beginInsertRows (parix,n,n+1); + bi->appendChild (newxli); + endInsertRows (); + + emit (layoutChanged() ); + + // save scroll state. If scrolled, automatically select + // new branch in order to tmp unscroll parent... + newxli->setBegin (bi); + if (createMO) + { + newxli->createMapObj(mapScene); + reposition(); + } + return newxli; + } + return NULL; +} + AttributeItem* VymModel::addAttribute() // FIXME-2 savestate missing { BranchItem *selbi=getSelectedBranch(); if (selbi) { QList cData; - cData << "new attribute" << "undef"<<"undef"; + cData << "new attribute" << "undef"; AttributeItem *a=new AttributeItem (cData); emit (layoutAboutToBeChanged() ); @@ -2061,7 +2100,7 @@ beginInsertRows (parix,n,n+1); QList cData; - cData << "VM:addMapCenter" << "undef"<<"undef"; + cData << "VM:addMapCenter" << "undef"; BranchItem *newbi=new BranchItem (cData,rootItem); newbi->setHeading (QApplication::translate("Heading of mapcenter in new map", "New map")); rootItem->appendChild (newbi); @@ -2086,7 +2125,7 @@ // Create TreeItem QList cData; - cData << "new" << "undef"<<"undef"; + cData << "new" << "undef"; BranchItem *parbi; QModelIndex parix; @@ -2298,15 +2337,20 @@ return; } TreeItem *ti=getSelectedItem(); - if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute) + if (ti) { TreeItem *pi=ti->parent(); - saveStateChangingPart( - pi, - ti, - "delete ()", - QString("Delete %1").arg(getObjectName(ti)) - ); + if (!pi) return; + if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute) + { + saveStateChangingPart( + pi, + ti, + "delete ()", + QString("Delete %1").arg(getObjectName(ti)) + ); + } + // FIXME-0 savestate missing for deletion of other times unselect(); deleteItem (ti); emitDataHasChanged (pi); @@ -2393,6 +2437,7 @@ TreeItem* VymModel::deleteItem (TreeItem *ti) { + cout << "VM::deleteItem "<parent(); @@ -2764,49 +2809,40 @@ } -void VymModel::followXLink(int i) // FIXME-2 +void VymModel::followXLink(int i) { i=0; - /* - BranchObj *bo=getSelectedBranch(); - if (bo) + BranchItem *selbi=getSelectedBranch(); + if (selbi) { - bo=bo->XLinkTargetAt(i); - if (bo) - { - selection.select(bo); - emitShowSelection(); - } + selbi=selbi->getXLinkNum(i)->getPartnerBranch(); + if (selbi) select (selbi); } - */ } -void VymModel::editXLink(int i) // FIXME-2 VM missing saveState +void VymModel::editXLink(int i) { i=0; - /* - BranchObj *bo=getSelectedBranch(); - if (bo) + BranchItem *selbi=getSelectedBranch(); + if (selbi) { - XLinkObj *xlo=bo->XLinkAt(i); - if (xlo) + XLinkItem *xli=selbi->getXLinkNum(i); + if (xli) { EditXLinkDialog dia; - dia.setXLink (xlo); - dia.setSelection(bo); + dia.setXLink (xli); + dia.setSelection(selbi); if (dia.exec() == QDialog::Accepted) { if (dia.useSettingsGlobal() ) { - setMapDefXLinkColor (xlo->getColor() ); - setMapDefXLinkWidth (xlo->getWidth() ); + setMapDefXLinkColor (xli->getColor() ); + setMapDefXLinkWidth (xli->getWidth() ); } - if (dia.deleteXLink()) - bo->deleteXLinkAt(i); + if (dia.deleteXLink()) deleteItem (xli); } } } -*/ }