1.1 --- a/vymmodel.cpp Mon Aug 24 14:39:07 2009 +0000
1.2 +++ b/vymmodel.cpp Thu Sep 03 08:52:00 2009 +0000
1.3 @@ -16,6 +16,7 @@
1.4 #include "parser.h"
1.5
1.6 #include "warningdialog.h"
1.7 +#include "xlinkitem.h"
1.8 #include "xml-freemind.h"
1.9 #include "xmlobj.h"
1.10 #include "xml-vym.h"
1.11 @@ -238,7 +239,7 @@
1.12 s+=xml.beginElement("vymmap",mapAttr);
1.13 xml.incIndent();
1.14
1.15 - // Find the used flags while traversing the tree // FIXME-2 this can be done local to vymmodel maybe...
1.16 + // Find the used flags while traversing the tree // FIXME-3 this can be done local to vymmodel maybe...
1.17 standardFlagsMaster->resetUsedCounter();
1.18
1.19 // Build xml recursivly
1.20 @@ -261,7 +262,8 @@
1.21 // Save Image
1.22 s+=((ImageItem*)saveSel)->saveToDir(tmpdir,prefix);
1.23 break;
1.24 - default://FIXME-4 other types shouldn't be safed...
1.25 + default:
1.26 + // other types shouldn't be safed directly...
1.27 break;
1.28 }
1.29 }
1.30 @@ -1444,12 +1446,14 @@
1.31
1.32 TreeItem* VymModel::findID (const QString &s)
1.33 {
1.34 - TreeItem *ti;
1.35 - for (int i=0; i<rootItem->branchCount(); i++)
1.36 + BranchItem *cur=NULL;
1.37 + BranchItem *prev=NULL;
1.38 + next(cur,prev);
1.39 + while (cur)
1.40 {
1.41 - ti=rootItem->getBranchNum(i)->findID (s);
1.42 - if (ti) return ti;
1.43 - }
1.44 + if (s==cur->getID() ) return cur;
1.45 + next(cur,prev);
1.46 + }
1.47 return NULL;
1.48 }
1.49
1.50 @@ -1984,7 +1988,7 @@
1.51 int n;
1.52
1.53 QList<QVariant> cData;
1.54 - cData << "new" << "undef"<<"undef";
1.55 + cData << "new" << "undef";
1.56
1.57 ImageItem *newii=new ImageItem(cData) ;
1.58 //newii->setHeading (QApplication::translate("Heading of new image in map", "new image"));
1.59 @@ -2008,13 +2012,48 @@
1.60 return NULL;
1.61 }
1.62
1.63 +XLinkItem* VymModel::createXLink(BranchItem *bi,bool createMO)
1.64 +{
1.65 + if (bi)
1.66 + {
1.67 + QModelIndex parix;
1.68 + int n;
1.69 +
1.70 + QList<QVariant> cData;
1.71 + cData << "new xLink"<<"undef";
1.72 +
1.73 + XLinkItem *newxli=new XLinkItem(cData) ;
1.74 +
1.75 + emit (layoutAboutToBeChanged() );
1.76 +
1.77 + parix=index(bi);
1.78 + n=bi->getRowNumAppend(newxli);
1.79 + beginInsertRows (parix,n,n+1);
1.80 + bi->appendChild (newxli);
1.81 + endInsertRows ();
1.82 +
1.83 + emit (layoutChanged() );
1.84 +
1.85 + // save scroll state. If scrolled, automatically select
1.86 + // new branch in order to tmp unscroll parent...
1.87 + newxli->setBegin (bi);
1.88 + if (createMO)
1.89 + {
1.90 + newxli->createMapObj(mapScene);
1.91 + reposition();
1.92 + }
1.93 + return newxli;
1.94 + }
1.95 + return NULL;
1.96 +}
1.97 +
1.98 AttributeItem* VymModel::addAttribute() // FIXME-2 savestate missing
1.99 {
1.100 BranchItem *selbi=getSelectedBranch();
1.101 if (selbi)
1.102 {
1.103 QList<QVariant> cData;
1.104 - cData << "new attribute" << "undef"<<"undef";
1.105 + cData << "new attribute" << "undef";
1.106 AttributeItem *a=new AttributeItem (cData);
1.107
1.108 emit (layoutAboutToBeChanged() );
1.109 @@ -2061,7 +2100,7 @@
1.110 beginInsertRows (parix,n,n+1);
1.111
1.112 QList<QVariant> cData;
1.113 - cData << "VM:addMapCenter" << "undef"<<"undef";
1.114 + cData << "VM:addMapCenter" << "undef";
1.115 BranchItem *newbi=new BranchItem (cData,rootItem);
1.116 newbi->setHeading (QApplication::translate("Heading of mapcenter in new map", "New map"));
1.117 rootItem->appendChild (newbi);
1.118 @@ -2086,7 +2125,7 @@
1.119
1.120 // Create TreeItem
1.121 QList<QVariant> cData;
1.122 - cData << "new" << "undef"<<"undef";
1.123 + cData << "new" << "undef";
1.124
1.125 BranchItem *parbi;
1.126 QModelIndex parix;
1.127 @@ -2298,15 +2337,20 @@
1.128 return;
1.129 }
1.130 TreeItem *ti=getSelectedItem();
1.131 - if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute)
1.132 + if (ti)
1.133 {
1.134 TreeItem *pi=ti->parent();
1.135 - saveStateChangingPart(
1.136 - pi,
1.137 - ti,
1.138 - "delete ()",
1.139 - QString("Delete %1").arg(getObjectName(ti))
1.140 - );
1.141 + if (!pi) return;
1.142 + if (ti->getType()==TreeItem::Image || ti->getType()==TreeItem::Attribute)
1.143 + {
1.144 + saveStateChangingPart(
1.145 + pi,
1.146 + ti,
1.147 + "delete ()",
1.148 + QString("Delete %1").arg(getObjectName(ti))
1.149 + );
1.150 + }
1.151 + // FIXME-0 savestate missing for deletion of other times
1.152 unselect();
1.153 deleteItem (ti);
1.154 emitDataHasChanged (pi);
1.155 @@ -2393,6 +2437,7 @@
1.156
1.157 TreeItem* VymModel::deleteItem (TreeItem *ti)
1.158 {
1.159 + cout << "VM::deleteItem "<<ti<<endl;
1.160 if (ti)
1.161 {
1.162 TreeItem *pi=ti->parent();
1.163 @@ -2764,49 +2809,40 @@
1.164 }
1.165
1.166
1.167 -void VymModel::followXLink(int i) // FIXME-2
1.168 +void VymModel::followXLink(int i)
1.169 {
1.170 i=0;
1.171 - /*
1.172 - BranchObj *bo=getSelectedBranch();
1.173 - if (bo)
1.174 + BranchItem *selbi=getSelectedBranch();
1.175 + if (selbi)
1.176 {
1.177 - bo=bo->XLinkTargetAt(i);
1.178 - if (bo)
1.179 - {
1.180 - selection.select(bo);
1.181 - emitShowSelection();
1.182 - }
1.183 + selbi=selbi->getXLinkNum(i)->getPartnerBranch();
1.184 + if (selbi) select (selbi);
1.185 }
1.186 - */
1.187 }
1.188
1.189 -void VymModel::editXLink(int i) // FIXME-2 VM missing saveState
1.190 +void VymModel::editXLink(int i)
1.191 {
1.192 i=0;
1.193 - /*
1.194 - BranchObj *bo=getSelectedBranch();
1.195 - if (bo)
1.196 + BranchItem *selbi=getSelectedBranch();
1.197 + if (selbi)
1.198 {
1.199 - XLinkObj *xlo=bo->XLinkAt(i);
1.200 - if (xlo)
1.201 + XLinkItem *xli=selbi->getXLinkNum(i);
1.202 + if (xli)
1.203 {
1.204 EditXLinkDialog dia;
1.205 - dia.setXLink (xlo);
1.206 - dia.setSelection(bo);
1.207 + dia.setXLink (xli);
1.208 + dia.setSelection(selbi);
1.209 if (dia.exec() == QDialog::Accepted)
1.210 {
1.211 if (dia.useSettingsGlobal() )
1.212 {
1.213 - setMapDefXLinkColor (xlo->getColor() );
1.214 - setMapDefXLinkWidth (xlo->getWidth() );
1.215 + setMapDefXLinkColor (xli->getColor() );
1.216 + setMapDefXLinkWidth (xli->getWidth() );
1.217 }
1.218 - if (dia.deleteXLink())
1.219 - bo->deleteXLinkAt(i);
1.220 + if (dia.deleteXLink()) deleteItem (xli);
1.221 }
1.222 }
1.223 }
1.224 -*/
1.225 }
1.226
1.227