1.1 --- a/branchitem.cpp Wed Jun 03 20:37:17 2009 +0000
1.2 +++ b/branchitem.cpp Mon Jun 08 11:36:56 2009 +0000
1.3 @@ -7,7 +7,7 @@
1.4
1.5 using namespace std;
1.6
1.7 -BranchItem::BranchItem(const QList<QVariant> &data, TreeItem *parent):TreeItem (data,parent)
1.8 +BranchItem::BranchItem(const QList<QVariant> &data, MapItem *parent):MapItem (data,parent)
1.9 {
1.10 //cout << "Constr. BranchItem\n";
1.11
1.12 @@ -18,7 +18,7 @@
1.13
1.14 BranchItem::~BranchItem()
1.15 {
1.16 - //cout << "Destr. BranchItem "<<getHeadingStd()<<endl;
1.17 + cout << "Destr. BranchItem "<<getHeadingStd()<<endl;
1.18 if (lmo)
1.19 {
1.20 delete lmo;
1.21 @@ -94,7 +94,6 @@
1.22
1.23 s=beginElement (elementName
1.24 +getAttr()
1.25 - // +getOrnXMLAttr()
1.26 +scrolledAttr
1.27 // +areaAttr
1.28 // +idAttr
1.29 @@ -115,11 +114,9 @@
1.30 // save names of flags set
1.31 s+=standardFlags.saveToDir(tmpdir,prefix,0);
1.32
1.33 -/*
1.34 - // Save FloatImages
1.35 - for (int i=0; i<floatimage.size(); ++i)
1.36 - s+=floatimage.at(i)->saveToDir (tmpdir,prefix);
1.37 -*/
1.38 + // Save Images
1.39 + for (int i=0; i<imageCount(); ++i)
1.40 + s+=getImageNum(i)->saveToDir (tmpdir,prefix);
1.41
1.42 // save note
1.43 if (!note.isEmpty() )
1.44 @@ -310,15 +307,19 @@
1.45 if (getBranchObj()->isInClickBox (p) && (this != excludeTI) && getBranchObj()->isVisibleObj() )
1.46 return this;
1.47
1.48 -/* FIXME-2 // Search float images
1.49 - for (int i=0; i<floatimage.size(); ++i )
1.50 - if (floatimage.at(i)->isInClickBox(p) &&
1.51 - (floatimage.at(i) != excludeTI) &&
1.52 - floatimage.at(i)->getParObj()!= excludeTI &&
1.53 - floatimage.at(i)->isVisibleObj()
1.54 - ) return floatimage.at(i)->getTreeItem();
1.55 -*/
1.56 - return NULL;
1.57 + // Search images
1.58 + ImageItem *ii;
1.59 + for (int i=0; i<imageCount(); ++i )
1.60 + {
1.61 + ii=getImageNum (i);
1.62 + LinkableMapObj *mo=ii->getLMO();
1.63 + if (mo && mo->isInClickBox(p) &&
1.64 + (ii != excludeTI) &&
1.65 + this!= excludeTI &&
1.66 + mo->isVisibleObj()
1.67 + ) return ii;
1.68 + }
1.69 + return NULL;
1.70 }
1.71
1.72 TreeItem* BranchItem::findID (QString sid)
1.73 @@ -353,7 +354,7 @@
1.74
1.75 if (lmo)
1.76 {
1.77 - lmo->setParObj (parentItem->getLMO() );
1.78 + lmo->setParObj ( ((MapItem*)parentItem)->getLMO() );
1.79 }
1.80 }
1.81
1.82 @@ -375,9 +376,9 @@
1.83 newbo->setFrameType (FrameObj::Rectangle);
1.84 } else
1.85 {
1.86 - newbo->setParObj(parentItem->getLMO() );
1.87 + newbo->setParObj( ((MapItem*)parentItem)->getLMO() );
1.88 // Set visibility depending on parents
1.89 - if (((BranchItem*)parentItem)->scrolled || !parentItem->getLMO()->isVisibleObj() )
1.90 + if (((BranchItem*)parentItem)->scrolled || !((MapItem*)parentItem)->getLMO()->isVisibleObj() )
1.91 newbo->setVisibility (false);
1.92 }
1.93 newbo->setDefAttr(BranchObj::NewBranch);
2.1 --- a/branchitem.h Wed Jun 03 20:37:17 2009 +0000
2.2 +++ b/branchitem.h Mon Jun 08 11:36:56 2009 +0000
2.3 @@ -1,17 +1,17 @@
2.4 #ifndef BRANCHITEM_H
2.5 #define BRANCHITEM_H
2.6
2.7 -#include "treeitem.h"
2.8 +#include "mapitem.h"
2.9
2.10
2.11 class QString;
2.12 class BranchObj;
2.13 class QGraphicsScene;
2.14
2.15 -class BranchItem:public TreeItem
2.16 +class BranchItem:public MapItem
2.17 {
2.18 public:
2.19 - BranchItem(const QList<QVariant> &data, TreeItem *parent = 0);
2.20 + BranchItem(const QList<QVariant> &data, MapItem *parent = 0);
2.21 virtual ~BranchItem();
2.22 void copy (BranchItem *item);
2.23
3.1 --- a/branchobj.cpp Wed Jun 03 20:37:17 2009 +0000
3.2 +++ b/branchobj.cpp Mon Jun 08 11:36:56 2009 +0000
3.3 @@ -272,8 +272,12 @@
3.4 void BranchObj::move (double x, double y)
3.5 {
3.6 OrnamentedObj::move (x,y);
3.7 - for (int i=0; i<floatimage.size(); ++i )
3.8 - floatimage.at(i)->reposition();
3.9 + FloatImageObj *fio;
3.10 + for (int i=0; i<treeItem->imageCount(); ++i )
3.11 + {
3.12 + fio=treeItem->getImageObjNum(i);
3.13 + if (fio) fio->reposition();
3.14 + }
3.15 positionBBox();
3.16 }
3.17
4.1 --- a/floatimageobj.cpp Wed Jun 03 20:37:17 2009 +0000
4.2 +++ b/floatimageobj.cpp Mon Jun 08 11:36:56 2009 +0000
4.3 @@ -8,9 +8,6 @@
4.4 // FloatImageObj
4.5 /////////////////////////////////////////////////////////////////
4.6
4.7 -uint FloatImageObj::saveCounter=0; // make instance
4.8 -
4.9 -
4.10 FloatImageObj::FloatImageObj ():FloatObj()
4.11 {
4.12 // cout << "Const FloatImageObj ()\n";
4.13 @@ -20,7 +17,7 @@
4.14
4.15 FloatImageObj::FloatImageObj (QGraphicsScene* s):FloatObj(s)
4.16 {
4.17 - // cout << "Const FloatImageObj (s) called from MapCenterObj (s)\n";
4.18 +// cout << "Const FloatImageObj (s) called from MapCenterObj (s)\n";
4.19 setParObj (this);
4.20 init();
4.21 }
4.22 @@ -155,58 +152,6 @@
4.23 // TODO
4.24 }
4.25
4.26 -QString FloatImageObj::saveToDir (const QString &tmpdir,const QString &prefix)
4.27 -{
4.28 - //FIXME-2 if (hidden) return "";
4.29 -
4.30 - saveCounter++;
4.31 -
4.32 - QString useOrientAttr;
4.33 - if (useOrientation)
4.34 - useOrientAttr=attribut ("useOrientation","true");
4.35 - else
4.36 - useOrientAttr=attribut ("useOrientation","false");
4.37 -
4.38 - QString saveInMapAttr;
4.39 - if (saveInMap)
4.40 - saveInMapAttr=attribut ("saveInMap","true");
4.41 - else
4.42 -
4.43 - saveInMapAttr=attribut ("saveInMap","false");
4.44 -
4.45 - QString exportAttr;
4.46 - if (floatExport)
4.47 - exportAttr=attribut ("floatExport","true");
4.48 - else
4.49 - exportAttr=attribut ("floatExport","false");
4.50 -
4.51 - QString zAttr=attribut ("zPlane",QString().setNum(zPlane));
4.52 - QString url;
4.53 -
4.54 - url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
4.55 -
4.56 - // And really save the image
4.57 - icon->save (tmpdir +"/"+ url, "PNG");
4.58 -
4.59 - QString nameAttr=attribut ("orgName",originalFilename);
4.60 -
4.61 - return singleElement ("floatimage",
4.62 - getOrnXMLAttr()
4.63 - +useOrientAttr
4.64 - +saveInMapAttr
4.65 - +exportAttr
4.66 - +zAttr
4.67 - +attribut ("href",QString ("file:")+url)
4.68 - +nameAttr
4.69 - );
4.70 -}
4.71 -
4.72 -void FloatImageObj::resetSaveCounter()
4.73 -{
4.74 - saveCounter=0;
4.75 -}
4.76 -
4.77 -
4.78 QRectF FloatImageObj::getTotalBBox()
4.79 {
4.80 return bbox;
5.1 --- a/floatimageobj.h Wed Jun 03 20:37:17 2009 +0000
5.2 +++ b/floatimageobj.h Mon Jun 08 11:36:56 2009 +0000
5.3 @@ -33,14 +33,10 @@
5.4 virtual QRectF getTotalBBox(); // return BBox including children
5.5 virtual QRectF getBBoxSizeWithChildren(); // return size of BBox including children
5.6 virtual void calcBBoxSizeWithChildren(); // calc size of BBox including children recursivly
5.7 - virtual QString saveToDir(const QString &,const QString&);
5.8 - virtual void resetSaveCounter();
5.9 -
5.10
5.11 protected:
5.12 ImageObj *icon;
5.13 bool saveInMap;
5.14 - static uint saveCounter; // numerate the files during saveToDir
5.15 QString filetype;
5.16 QString filename;
5.17 QString originalFilename;
6.1 --- a/floatobj.cpp Wed Jun 03 20:37:17 2009 +0000
6.2 +++ b/floatobj.cpp Mon Jun 08 11:36:56 2009 +0000
6.3 @@ -1,7 +1,5 @@
6.4 #include "floatobj.h"
6.5
6.6 -extern QAction* actionEditToggleFloatExport;
6.7 -
6.8 /////////////////////////////////////////////////////////////////
6.9 // FloatObj
6.10 /////////////////////////////////////////////////////////////////
6.11 @@ -98,14 +96,3 @@
6.12 return bboxTotal;
6.13 }
6.14
6.15 -void FloatObj::select()
6.16 -{
6.17 - LinkableMapObj::select();
6.18 - LinkableMapObj::setLinkColor(parObj->getLinkColor());
6.19 -}
6.20 -
6.21 -void FloatObj::unselect()
6.22 -{
6.23 - LinkableMapObj::unselect();
6.24 -}
6.25 -
7.1 --- a/floatobj.h Wed Jun 03 20:37:17 2009 +0000
7.2 +++ b/floatobj.h Mon Jun 08 11:36:56 2009 +0000
7.3 @@ -29,11 +29,6 @@
7.4 virtual QRectF getTotalBBox(); // return BBox including children
7.5 virtual QRectF getBBoxSizeWithChildren(); // return size of BBox including children
7.6
7.7 - virtual void resetSaveCounter()=0;
7.8 -
7.9 - virtual void select();
7.10 - virtual void unselect();
7.11 -
7.12 protected:
7.13 bool floatExport;
7.14 int zPlane;
8.1 --- a/mainwindow.cpp Wed Jun 03 20:37:17 2009 +0000
8.2 +++ b/mainwindow.cpp Mon Jun 08 11:36:56 2009 +0000
8.3 @@ -3448,14 +3448,11 @@
8.4 }
8.5 if ( selti->getType()==TreeItem::Image)
8.6 {
8.7 - /* FIXME-2
8.8 - FloatObj *fo=(FloatImageObj*)selection;
8.9 -
8.10 actionOpenURL->setEnabled (false);
8.11 actionOpenVymLink->setEnabled (false);
8.12 actionDeleteVymLink->setEnabled (false);
8.13 actionToggleHideExport->setEnabled (true);
8.14 - actionToggleHideExport->setOn (fo->hideInExport() );
8.15 + actionToggleHideExport->setOn (selti->hideInExport() );
8.16
8.17
8.18 actionCopy->setEnabled (true);
8.19 @@ -3464,11 +3461,10 @@
8.20 for (int i=0; i<actionListBranches.size(); ++i)
8.21 actionListBranches.at(i)->setEnabled(false);
8.22 actionDelete->setEnabled (true);
8.23 - actionFormatHideLinkUnselected->setOn
8.24 - ( selection->getHideLinkUnselected());
8.25 + // FIXME-2 actionFormatHideLinkUnselected->setOn
8.26 + // ( selection->getHideLinkUnselected());
8.27 actionMoveUp->setEnabled (false);
8.28 actionMoveDown->setEnabled (false);
8.29 - */
8.30 } //image
8.31
8.32 } else
9.1 --- a/mapeditor.cpp Wed Jun 03 20:37:17 2009 +0000
9.2 +++ b/mapeditor.cpp Mon Jun 08 11:36:56 2009 +0000
9.3 @@ -186,7 +186,10 @@
9.4 {
9.5 if (index.isValid())
9.6 {
9.7 - LinkableMapObj* lmo=(static_cast<TreeItem*>(index.internalPointer()))->getLMO();
9.8 + LinkableMapObj* lmo=NULL;
9.9 + TreeItem *ti= static_cast<TreeItem*>(index.internalPointer());
9.10 + if (ti->getType()==TreeItem::Image ||ti->isBranchLikeType() )
9.11 + lmo=((MapItem*)ti)->getLMO();
9.12 if (lmo) setScrollBarPosTarget (lmo->getBBox() );
9.13 }
9.14 }
9.15 @@ -596,7 +599,7 @@
9.16 QPointF p = mapToScene(e->pos());
9.17 TreeItem *ti=findMapItem (p, NULL);
9.18 LinkableMapObj* lmo=NULL;
9.19 - if (ti) lmo=ti->getLMO(); //FIXME-2 get rid of lmo...
9.20 + if (ti) lmo=((MapItem*)ti)->getLMO();
9.21
9.22 if (lmo)
9.23 { // MapObj was found
9.24 @@ -613,7 +616,7 @@
9.25 branchContextMenu->popup(e->globalPos() );
9.26 } else
9.27 {
9.28 - if (model->getSelectedFloatImage() )
9.29 + if (model->getSelectedImageItem() )
9.30 {
9.31 // Context Menu on floatimage
9.32 // model->updateActions(); FIXME-3 needed?
9.33 @@ -680,7 +683,7 @@
9.34 QPointF p = mapToScene(e->pos());
9.35 TreeItem *ti=findMapItem (p, NULL);
9.36 LinkableMapObj* lmo=NULL;
9.37 - if (ti) lmo=ti->getLMO(); //FIXME-3 get rid of lmo...
9.38 + if (ti) lmo=((MapItem*)ti)->getLMO();
9.39
9.40 e->accept();
9.41
9.42 @@ -750,18 +753,11 @@
9.43 /*
9.44 cout << "ME::mouse pressed\n";
9.45 cout << " lmo="<<lmo<<endl;
9.46 - cout << " h="<<((BranchObj*)lmo)->getHeading().toStdString()<<endl;
9.47 + cout << " ti="<<ti->getHeadingStd()<<endl;
9.48 */
9.49 // Select the clicked object
9.50
9.51 - // FIXME-2 VM better let "find" return an index instead of lmo...
9.52 - // Get index of clicked LMO
9.53 - TreeItem *ti=lmo->getTreeItem();
9.54 - /*
9.55 - cout << " lmo="<<lmo<<" lmo(ti)="<<ti->getLMO()<<endl;
9.56 - cout << " ti ("<<ti->row()<<","<<ti->column()<<") = "<<ti<<endl;
9.57 - */
9.58 - //QModelIndex ix=model->index( ti->row(), ti->column(), model->index (0,0,QModelIndex()) );
9.59 + // Get clicked LMO
9.60 model->select (ti);
9.61
9.62 // Left Button Move Branches
9.63 @@ -823,8 +819,8 @@
9.64 QPointF p = mapToScene(e->pos());
9.65 TreeItem *seli=model->getSelectedItem();
9.66 LinkableMapObj* lmosel=NULL; //FIXME-2 get rid of lmosel
9.67 - if (seli)
9.68 - lmosel=seli->getLMO();
9.69 + if (seli && (seli->isBranchLikeType() ||seli->getType()==TreeItem::Image))
9.70 + lmosel=((MapItem*)seli)->getLMO();
9.71
9.72 // Move the selected MapObj
9.73 if ( lmosel && movingObj)
9.74 @@ -847,14 +843,14 @@
9.75 TreeItem *dsti=findMapItem (p, seli);
9.76 LinkableMapObj* dst=NULL;
9.77 if (dsti && dsti!=seli && dsti->isBranchLikeType())
9.78 - dst=dsti->getLMO(); //FIXME-2 get rid of lmo...
9.79 + dst=((MapItem*)dsti)->getLMO();
9.80 else
9.81 dsti=NULL;
9.82
9.83
9.84 - FloatObj *fio=model->getSelectedFloatImage();
9.85 - if (fio)
9.86 + if (lmosel && seli->getType()==TreeItem::Image)
9.87 {
9.88 + FloatObj *fio=(FloatImageObj*)lmosel;
9.89 fio->move (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );
9.90 fio->setRelPos();
9.91 fio->updateLink(); //no need for reposition, if we update link here
9.92 @@ -971,7 +967,7 @@
9.93 if (seli) dsti=findMapItem(p, seli);
9.94 LinkableMapObj* dst=NULL;
9.95 if (dsti && dsti->isBranchLikeType ())
9.96 - dst=dsti->getLMO(); //FIXME-2 get rid of dst...
9.97 + dst=((MapItem*)dsti)->getLMO();
9.98 else
9.99 dsti=NULL;
9.100
9.101 @@ -1014,22 +1010,25 @@
9.102 // Have we been moving something?
9.103 if ( seli && movingObj )
9.104 {
9.105 - FloatImageObj *fo=model->getSelectedFloatImage();
9.106 - if(fo)
9.107 + if (seli->getType()==TreeItem::Image)
9.108 {
9.109 - // Moved FloatObj. Maybe we need to reposition
9.110 - QString pold=qpointfToString(movingObj_orgRelPos);
9.111 - QString pnow=qpointfToString(fo->getRelPos());
9.112 - model->saveState(
9.113 - fo->getTreeItem(), // FIXME-3
9.114 - "moveRel "+pold,
9.115 - fo->getTreeItem(), // FIXME-3
9.116 - "moveRel "+pnow,
9.117 - QString("Move %1 to relative position %2").arg(model->getObjectName(fo)).arg(pnow));
9.118 + FloatImageObj *fio=(FloatImageObj*)(((MapItem*)seli)->getLMO());
9.119 + if(fio)
9.120 + {
9.121 + // Moved FloatObj. Maybe we need to reposition
9.122 + QString pold=qpointfToString(movingObj_orgRelPos);
9.123 + QString pnow=qpointfToString(fio->getRelPos());
9.124 + model->saveState(
9.125 + seli,
9.126 + "moveRel "+pold,
9.127 + seli,
9.128 + "moveRel "+pnow,
9.129 + QString("Move %1 to relative position %2").arg(model->getObjectName(seli)).arg(pnow));
9.130
9.131 - fo->getParObj()->requestReposition();
9.132 - model->reposition();
9.133 - }
9.134 + fio->getParObj()->requestReposition();
9.135 + model->reposition();
9.136 + }
9.137 + }
9.138
9.139 BranchItem *bi=model->getSelectedBranchItem();
9.140 if (bi && bi->depth()==0)
9.141 @@ -1051,7 +1050,7 @@
9.142 if (seli->isBranchLikeType() ) //(seli->getType() == TreeItem::Branch )
9.143 { // A branch was moved
9.144 LinkableMapObj* lmosel=NULL; //FIXME-2 get rid of lmosel
9.145 - lmosel=seli->getLMO();
9.146 + lmosel=((MapItem*)seli)->getLMO();
9.147
9.148 // save the position in case we link to mapcenter
9.149 QPointF savePos=QPointF (lmosel->getAbsPos() );
9.150 @@ -1095,11 +1094,11 @@
9.151 QString postSelStr=model->getSelectString(lmosel);
9.152 QString postNum=QString::number (seli->num(),10);
9.153
9.154 - QString undoCom="linkTo (\""+
9.155 + QString undoCom="relinkTo (\""+
9.156 preParStr+ "\"," + preNum +"," +
9.157 QString ("%1,%2").arg(movingObj_orgPos.x()).arg(movingObj_orgPos.y())+ ")";
9.158
9.159 - QString redoCom="linkTo (\""+
9.160 + QString redoCom="relinkTo (\""+
9.161 preDstParStr + "\"," + postNum + "," +
9.162 QString ("%1,%2").arg(savePos.x()).arg(savePos.y())+ ")";
9.163
9.164 @@ -1270,8 +1269,20 @@
9.165 event->acceptProposedAction();
9.166 }
9.167
9.168 -void MapEditor::updateSelection(const QItemSelection &newsel,const QItemSelection &oldsel)
9.169 +void MapEditor::updateSelection(QItemSelection newsel,QItemSelection oldsel)
9.170 {
9.171 + // Here in MapEditor we can only select Branches and Images
9.172 + QModelIndex ix;
9.173 + foreach (ix,newsel.indexes() )
9.174 + {
9.175 + TreeItem *ti= static_cast<TreeItem*>(ix.internalPointer());
9.176 + if (ti->getType()!=TreeItem::Branch && ti->getType()!=TreeItem::Image )
9.177 + newsel.indexes().removeOne (ix);
9.178 + }
9.179 +
9.180 + while (newsel.indexes().count() < selboxList.count() )
9.181 + delete selboxList.takeFirst();
9.182 +
9.183 // Take care to tmp scroll/unscroll
9.184 if (!oldsel.isEmpty())
9.185 {
9.186 @@ -1332,7 +1343,7 @@
9.187 {
9.188 index=newsel.indexes().at(i);
9.189 ti= static_cast<TreeItem*>(index.internalPointer());
9.190 - lmo=ti->getLMO();
9.191 + lmo=((MapItem*)ti)->getLMO();
9.192 bbox=lmo->getBBox();
9.193 sb->setRect (
9.194 bbox.x(),bbox.y(),
9.195 @@ -1358,7 +1369,7 @@
9.196
9.197 if (ti->isBranchLikeType())
9.198 {
9.199 - BranchObj *bo=(BranchObj*)ti->getLMO();
9.200 + BranchObj *bo=(BranchObj*) ((MapItem*)ti)->getLMO();
9.201 bo->updateData();
9.202 }
9.203
10.1 --- a/mapeditor.h Wed Jun 03 20:37:17 2009 +0000
10.2 +++ b/mapeditor.h Mon Jun 08 11:36:56 2009 +0000
10.3 @@ -132,7 +132,7 @@
10.4 QColor selectionColor;
10.5
10.6 public slots:
10.7 - void updateSelection(const QItemSelection &,const QItemSelection &); // update selection
10.8 + void updateSelection(QItemSelection ,QItemSelection); // update selection
10.9 void updateData (const QModelIndex&); // update data
10.10 public:
10.11 void setSelectionColor (QColor c);
11.1 --- a/mapitem.cpp Wed Jun 03 20:37:17 2009 +0000
11.2 +++ b/mapitem.cpp Mon Jun 08 11:36:56 2009 +0000
11.3 @@ -5,9 +5,20 @@
11.4
11.5 #include <iostream>
11.6 using namespace std;
11.7 +#include "misc.h" //cout << QPointF
11.8
11.9 MapItem::MapItem()
11.10 {
11.11 + init();
11.12 +}
11.13 +
11.14 +MapItem::MapItem(const QList<QVariant> &data, TreeItem *parent):TreeItem (data,parent)
11.15 +{
11.16 + init();
11.17 +}
11.18 +
11.19 +void MapItem::init()
11.20 +{
11.21 lmo=NULL;
11.22 posMode=Unused;
11.23 }
11.24 @@ -63,23 +74,33 @@
11.25
11.26 QString MapItem::getAttr()
11.27 {
11.28 + QString s;
11.29 + if (parentItem==rootItem)
11.30 + posMode=Absolute;
11.31 + else
11.32 + {
11.33 + if (type==TreeItem::Image ||depth()==1)
11.34 + posMode=Relative;
11.35 + else
11.36 + posMode=Unused;
11.37 + }
11.38 switch (posMode)
11.39 {
11.40 case Relative:
11.41 if (lmo) pos=lmo->getRelPos();
11.42 - return
11.43 - attribut("relPosX",QString().setNum(pos.x())) +
11.44 - attribut("relPosY",QString().setNum(pos.y()));
11.45 + s= attribut("relPosX",QString().setNum(pos.x())) +
11.46 + attribut("relPosY",QString().setNum(pos.y()));
11.47 break;
11.48 case Absolute:
11.49 if (lmo) pos=lmo->getAbsPos();
11.50 - return
11.51 - attribut("absPosX",QString().setNum(pos.x())) +
11.52 - attribut("absPosY",QString().setNum(pos.y()));
11.53 + s=attribut("absPosX",QString().setNum(pos.x())) +
11.54 + attribut("absPosY",QString().setNum(pos.y()));
11.55 break;
11.56 - default:
11.57 - return QString();
11.58 - break;
11.59 + default: break;
11.60 }
11.61 + if (hideExport)
11.62 + return s+attribut("hideInExport","true");
11.63 + else
11.64 + return s;
11.65 }
11.66
12.1 --- a/mapitem.h Wed Jun 03 20:37:17 2009 +0000
12.2 +++ b/mapitem.h Mon Jun 08 11:36:56 2009 +0000
12.3 @@ -3,9 +3,11 @@
12.4
12.5 #include <QPointF>
12.6
12.7 +#include "treeitem.h"
12.8 #include "xmlobj.h"
12.9
12.10 class LinkableMapObj;
12.11 +class TreeItem;
12.12
12.13 /*! /brief MapItem is used to store information of MapObj and inherited
12.14 classes.
12.15 @@ -15,7 +17,7 @@
12.16 but just a treeview instead.
12.17 */
12.18
12.19 -class MapItem: public XMLObj
12.20 +class MapItem:public TreeItem, public XMLObj
12.21 {
12.22 public:
12.23 enum PositionMode {Unused,Absolute,Relative};
12.24 @@ -25,6 +27,8 @@
12.25
12.26 public:
12.27 MapItem();
12.28 + MapItem (const QList<QVariant> &data, TreeItem *parent = 0);
12.29 + void init();
12.30
12.31 /*! Used to save relative position while map is not in QGraphicsView */
12.32 virtual void setRelPos(const QPointF&);
13.1 --- a/ornamentedobj.cpp Wed Jun 03 20:37:17 2009 +0000
13.2 +++ b/ornamentedobj.cpp Mon Jun 08 11:36:56 2009 +0000
13.3 @@ -1,11 +1,6 @@
13.4 -#include <typeinfo>
13.5 -
13.6 #include "ornamentedobj.h"
13.7 -#include "texteditor.h"
13.8 -#include "mapeditor.h"
13.9 #include "linkablemapobj.h"
13.10 -
13.11 -extern TextEditor *textEditor;
13.12 +#include "vymmodel.h"
13.13
13.14 /////////////////////////////////////////////////////////////////
13.15 // OrnamentedObj
13.16 @@ -250,48 +245,8 @@
13.17 }
13.18
13.19
13.20 -QString OrnamentedObj::getSystemFlagName(const QPointF &p)
13.21 +QString OrnamentedObj::getSystemFlagName(const QPointF &p) //FIXME-3
13.22 {
13.23 return systemFlags->getFlagName(p);
13.24 }
13.25
13.26 -/* FIXME-3 should move to VymView ?! void OrnamentedObj::getNoteFromTextEditor ()
13.27 -{
13.28 - note.setFilenameHint (textEditor->getFilename());
13.29 - note.setFontHint (textEditor->getFontHint() );
13.30 - setNote( textEditor->getText() );
13.31 -}
13.32 -*/
13.33 -
13.34 -QString OrnamentedObj::getOrnXMLAttr() //FIXME-2 still needed?
13.35 -{
13.36 - QString posAttr;
13.37 -
13.38 - if (treeItem->depth()==0)
13.39 - posAttr=
13.40 - attribut("absPosX",QString().setNum(absPos.x())) +
13.41 - attribut("absPosY",QString().setNum(absPos.y()));
13.42 - else
13.43 - {
13.44 - /* FIXME-2
13.45 - if (treeItem->depth()==1 || typid (*this)==typid (FloatImageObj))
13.46 - {
13.47 - if (relPos.x()==0 && relPos.y()==0)
13.48 - setRelPos();
13.49 - posAttr=
13.50 - attribut("relPosX",QString().setNum(relPos.x())) +
13.51 - attribut("relPosY",QString().setNum(relPos.y()));
13.52 - } else
13.53 - posAttr="";
13.54 - */
13.55 - }
13.56 -
13.57 -/* FIXME-2 QString hideExpAttr;
13.58 - if (hideExport)
13.59 - hideExpAttr= attribut("hideInExport","true");
13.60 - else
13.61 - hideExpAttr="";
13.62 -*/
13.63 - return posAttr +getLinkAttr() ;//+hideExpAttr;
13.64 -}
13.65 -
14.1 --- a/ornamentedobj.h Wed Jun 03 20:37:17 2009 +0000
14.2 +++ b/ornamentedobj.h Mon Jun 08 11:36:56 2009 +0000
14.3 @@ -55,9 +55,6 @@
14.4 virtual void deactivateStandardFlag(const QString &name);
14.5 virtual QString getSystemFlagName (const QPointF &p);
14.6
14.7 - //virtual void getNoteFromTextEditor ();// FIXME-3 should move to vymview?!
14.8 - virtual QString getOrnXMLAttr(); // get attributes for saveToDir
14.9 -
14.10 protected:
14.11 HeadingObj *heading; // Heading
14.12 FlagRowObj *systemFlags; // System Flags
15.1 --- a/treeitem.cpp Wed Jun 03 20:37:17 2009 +0000
15.2 +++ b/treeitem.cpp Mon Jun 08 11:36:56 2009 +0000
15.3 @@ -11,7 +11,15 @@
15.4
15.5 extern FlagRow* standardFlagsMaster;
15.6
15.7 -TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent):MapItem()
15.8 +TreeItem::TreeItem()
15.9 +{
15.10 + init();
15.11 + itemData.clear();
15.12 + rootItem=this;
15.13 + parentItem=NULL;
15.14 +}
15.15 +
15.16 +TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
15.17 {
15.18 //cout << "Constructor TreeItem this="<<this<<" parent="<<parent<<endl;
15.19 init();
15.20 @@ -65,6 +73,7 @@
15.21 // isNoteInEditor=false;
15.22
15.23 hidden=false;
15.24 + hideExport=false;
15.25
15.26 // Reset ID
15.27 objID="";
15.28 @@ -94,15 +103,37 @@
15.29 return model;
15.30 }
15.31
15.32 +int TreeItem::getRowNumAppend (TreeItem *item)
15.33 +{
15.34 + switch (item->type)
15.35 + {
15.36 + case MapCenter: return branchOffset + branchCounter;
15.37 + case Branch: return branchOffset + branchCounter;
15.38 + case Image: return imageOffset + imageCounter;
15.39 + default: return -1;
15.40 + }
15.41 +}
15.42 +
15.43 void TreeItem::appendChild(TreeItem *item)
15.44 {
15.45 - childItems.append(item);
15.46 item->parentItem=this;
15.47 item->rootItem=rootItem;
15.48 item->setModel (model);
15.49
15.50 - if (item->type == Branch || item->type ==MapCenter)
15.51 + if (item->type == Image)
15.52 {
15.53 + childItems.insert (imageCounter,item);
15.54 + // images are on top of list
15.55 + if (imageCounter==0)
15.56 + imageOffset=0;
15.57 + imageCounter++;
15.58 + branchOffset++;
15.59 + }
15.60 +
15.61 + if (item->isBranchLikeType())
15.62 + {
15.63 + // branches are on bottom of list
15.64 + childItems.append(item);
15.65 if (branchCounter==0)
15.66 branchOffset=childItems.count()-1;
15.67 branchCounter++;
15.68 @@ -117,6 +148,12 @@
15.69 {
15.70 if (childItems.at(row)->isBranchLikeType())
15.71 branchCounter--;
15.72 + if (childItems.at(row)->type==Image)
15.73 + {
15.74 + imageCounter--;
15.75 + if (branchOffset>0)
15.76 + branchOffset--;
15.77 + }
15.78 childItems.removeAt (row);
15.79 }
15.80 }
15.81 @@ -160,8 +197,7 @@
15.82
15.83 int TreeItem::imageCount() const
15.84 {
15.85 - int imageCounter=0;
15.86 - return imageCounter; // FIXME-1 imageCounter needs to be calculated...
15.87 + return imageCounter;
15.88 }
15.89
15.90 int TreeItem::xlinkCount() const // FIXME-2 check if xlinks are stored in a different way (global to model?)
15.91 @@ -209,10 +245,9 @@
15.92 {
15.93 switch (type)
15.94 {
15.95 - case Undefined: return -1;
15.96 - case MapCenter: return parentItem->childItems.indexOf (this) - branchOffset;
15.97 - case Branch: return parentItem->childItems.indexOf (this) - branchOffset;
15.98 - case Image: return parentItem->childItems.indexOf (this) - imageOffset;
15.99 + case MapCenter: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
15.100 + case Branch: return parentItem->childItems.indexOf (this) - parentItem->branchOffset;
15.101 + case Image: return parentItem->childItems.indexOf (this) - parentItem->imageOffset;
15.102 default: return -1;
15.103 }
15.104 }
15.105 @@ -220,9 +255,9 @@
15.106 int TreeItem::num (TreeItem *item)
15.107 {
15.108 if (!item) return -1;
15.109 + if (!childItems.contains(item)) return -1;
15.110 switch (item->getType())
15.111 {
15.112 - case Undefined: return -1;
15.113 case MapCenter: return childItems.indexOf (item) - branchOffset;
15.114 case Branch: return childItems.indexOf (item) - branchOffset;
15.115 case Image: return parentItem->childItems.indexOf (item) - imageOffset;
15.116 @@ -348,8 +383,7 @@
15.117 systemFlags.deactivate ("system-note");
15.118 }
15.119
15.120 -void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor) //FIXME-1 setNoteObj is called for every select or so???
15.121 -{
15.122 +void TreeItem::setNoteObj(const NoteObj &n, bool updateNoteEditor){
15.123 note=n;
15.124 if (!note.isEmpty() && !systemFlags.isActive ("system-note"))
15.125 systemFlags.activate ("system-note");
15.126 @@ -426,13 +460,12 @@
15.127 return &standardFlags;
15.128 }
15.129
15.130 -/*
15.131 -void TreeItem::updateToolBar()
15.132 +/* FIXME-3 void TreeItem::updateToolBar()
15.133 {
15.134 standardFlags.updateToolBar();
15.135 }
15.136 */
15.137 -QStringList TreeItem::activeSystemFlagNames () //FIXME-1 missing: scrolled-tmp,hideInExport
15.138 +QStringList TreeItem::activeSystemFlagNames ()
15.139 {
15.140 return systemFlags.activeFlagNames();
15.141 }
15.142 @@ -521,7 +554,7 @@
15.143
15.144 BranchItem* TreeItem::getBranchNum(const int &n)
15.145 {
15.146 - if (branchCounter>0)
15.147 + if (n>=0 && n<branchCounter)
15.148 return (BranchItem*)getChildNum (branchOffset + n);
15.149 else
15.150 return NULL;
15.151 @@ -529,9 +562,9 @@
15.152
15.153 BranchObj* TreeItem::getBranchObjNum(const int &n)
15.154 {
15.155 - if (branchCounter>0)
15.156 + if (n>=0 && n<branchCounter)
15.157 {
15.158 - return (BranchObj*)(getChildNum (branchOffset+n)->lmo);
15.159 + return (BranchObj*)(getBranchNum(n)->getLMO());
15.160 } else
15.161 return NULL;
15.162 }
15.163 @@ -552,6 +585,21 @@
15.164 return getBranchNum (lastSelectedBranchNum);
15.165 }
15.166
15.167 +ImageItem* TreeItem::getImageNum (const int &n)
15.168 +{
15.169 + if (n>=0 && n<imageCounter)
15.170 + return (ImageItem*)getChildNum (imageOffset + n);
15.171 + else
15.172 + return NULL;
15.173 +}
15.174 +
15.175 +FloatImageObj* TreeItem::getImageObjNum (const int &n) // FIXME-5 what about SVGs later?
15.176 +{
15.177 + if (imageCounter>0 )
15.178 + return (FloatImageObj*)(getImageNum(n)->getLMO());
15.179 + else
15.180 + return NULL;
15.181 +}
15.182
15.183 void TreeItem::setHideTmp (HideTmpMode mode)
15.184 {
15.185 @@ -614,18 +662,14 @@
15.186
15.187 void TreeItem::setHideInExport(bool b)
15.188 {
15.189 - if (isBranchLikeType() )
15.190 + if (type==Branch || type==Image)
15.191 {
15.192 hideExport=b;
15.193 - /* FIXME-1 call setVis and updateContentsSize...
15.194 + // FIXME-1 call setVis and updateContentsSize...
15.195 if (b)
15.196 - systemFlags->activate("hideInExport");
15.197 + systemFlags.activate("hideInExport");
15.198 else
15.199 - systemFlags->deactivate("hideInExport");
15.200 - calcBBoxSize();
15.201 - positionBBox();
15.202 - requestReposition();
15.203 - */
15.204 + systemFlags.deactivate("hideInExport");
15.205 }
15.206 }
15.207
16.1 --- a/treeitem.h Wed Jun 03 20:37:17 2009 +0000
16.2 +++ b/treeitem.h Mon Jun 08 11:36:56 2009 +0000
16.3 @@ -6,21 +6,23 @@
16.4 #include <QVariant>
16.5
16.6 #include "flagrow.h"
16.7 -#include "mapitem.h"
16.8 #include "noteobj.h"
16.9 #include "xmlobj.h"
16.10
16.11 class LinkableMapObj;
16.12 class BranchObj;
16.13 class BranchItem;
16.14 +class FloatImageObj;
16.15 +class ImageItem;
16.16 class VymModel;
16.17
16.18 -class TreeItem:public MapItem
16.19 +class TreeItem
16.20 {
16.21 public:
16.22 enum Type {Undefined,MapCenter,Branch,Image};
16.23 enum HideTmpMode {HideNone, HideExport};
16.24
16.25 + TreeItem();
16.26 TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
16.27 ~TreeItem();
16.28 void init();
16.29 @@ -29,6 +31,11 @@
16.30 virtual void setModel (VymModel *m);
16.31 virtual VymModel* getModel();
16.32
16.33 +
16.34 + /*! Return number of item, as it would be after it would have been appended.
16.35 + This is used to notify view about layout changes before model is modified. */
16.36 + virtual int getRowNumAppend (TreeItem *child);
16.37 +
16.38 virtual void appendChild (TreeItem *child);
16.39 virtual void removeChild (int row);
16.40 virtual void removeChildBranches ();
16.41 @@ -95,7 +102,8 @@
16.42 virtual void clearNote();
16.43 virtual QString getNote();
16.44 virtual bool hasEmptyNote();
16.45 - virtual void setNoteObj(const NoteObj &, bool updateNoteEditor=true);
16.46 + virtual void setNoteObj(const NoteObj &, bool updateNoteEditor=true); //FIXME-1 setNoteObj is called for every select or so???
16.47 +
16.48 virtual NoteObj getNoteObj();
16.49 virtual QString getNoteASCII(const QString &indent, const int &width); // returns note (ASCII)
16.50 virtual QString getNoteASCII(); // returns note (ASCII)
16.51 @@ -146,6 +154,8 @@
16.52 virtual void setLastSelectedBranch(int i); //! Set last selected branch directly
16.53 virtual TreeItem* getLastSelectedBranch();
16.54
16.55 + virtual ImageItem* getImageNum(const int &n);
16.56 + virtual FloatImageObj* getImageObjNum(const int &n);
16.57 protected:
16.58 bool hideExport; //! Hide this item in export
16.59 public:
17.1 --- a/treemodel.cpp Wed Jun 03 20:37:17 2009 +0000
17.2 +++ b/treemodel.cpp Mon Jun 08 11:36:56 2009 +0000
17.3 @@ -5,6 +5,7 @@
17.4
17.5 #include "branchitem.h"
17.6 #include "treeitem.h"
17.7 +#include "imageitem.h"
17.8 #include "treemodel.h"
17.9
17.10 TreeModel::TreeModel(QObject *parent)
17.11 @@ -108,6 +109,12 @@
17.12
17.13 BranchItem* TreeModel::next(BranchItem* ¤t, BranchItem* &previous, BranchItem* start)
17.14 {
17.15 +/*FIXME-3 cout << "TM::next \n";
17.16 + std::string ch="()"; if (current) ch=current->getHeadingStd();
17.17 + std::string ph="()"; if (previous) ph=previous->getHeadingStd();
17.18 + cout << " cur="<<ch << " prev="<<ph<<endl;
17.19 +*/
17.20 +
17.21 // Walk through map beginning at current with previous==0
17.22 // Start at root, if current==NULL
17.23 if (!current) current=(BranchItem*)rootItem;
17.24 @@ -121,32 +128,42 @@
17.25 return current;
17.26 }
17.27
17.28 - //std::cout << " cur="<<current->getHeading().toStdString();
17.29 - //std::cout << " prev="<<previous->getHeading().toStdString()<<std::endl;
17.30 -
17.31 // Going up or down (deeper)?
17.32 if (current->depth() > previous->depth() )
17.33 {
17.34 // Coming from above
17.35 // Trying to go down deeper
17.36 +// cout << " trying to go deeper\n";
17.37 if (current->branchCount() >0 )
17.38 {
17.39 +// cout << " yes, going deeper\n";
17.40 previous=current;
17.41 current=current->getFirstBranch();
17.42 return current;
17.43 }
17.44 // turn around and go up again
17.45 +// cout << " sorry, turn around\n";
17.46 + BranchItem *bi=current;
17.47 + current=previous;
17.48 + previous=bi;
17.49 }
17.50
17.51 +/*
17.52 + cout << " coming from below\n";
17.53 + ch="()"; if (current) ch=current->getHeadingStd();
17.54 + ph="()"; if (previous) ph=previous->getHeadingStd();
17.55 + cout << " cur="<<ch << " prev="<<ph<<endl;
17.56 +*/
17.57 // Coming from below
17.58 -
17.59 // Trying to go down again to siblings
17.60
17.61 BranchItem *sibling=current->getBranchNum (previous->num()+1);
17.62 +// cout <<" prev->num()="<<previous->num()<<endl;
17.63
17.64 if (sibling)
17.65 {
17.66 // Found sibling of previous, go there
17.67 +// cout << " sib=cur="<<sibling->getHeadingStd()<<endl;
17.68 previous=current;
17.69 current=sibling;
17.70 return current;
17.71 @@ -156,6 +173,7 @@
17.72 if (start==current) return NULL;
17.73
17.74 // Go up and try to find siblings of current
17.75 +// cout <<" going up again...\n";
17.76 previous=current;
17.77 current=(BranchItem*)current->parent();
17.78
17.79 @@ -186,6 +204,9 @@
17.80 case TreeItem::Branch:
17.81 delete (BranchItem*)ti;
17.82 break;
17.83 + case TreeItem::Image:
17.84 + delete (ImageItem*)ti;
17.85 + break;
17.86 default:
17.87 delete ti;
17.88 break;
18.1 --- a/version.h Wed Jun 03 20:37:17 2009 +0000
18.2 +++ b/version.h Mon Jun 08 11:36:56 2009 +0000
18.3 @@ -7,7 +7,7 @@
18.4 #define __VYM_VERSION "1.13.0"
18.5 //#define __VYM_CODENAME "Codename: RC-1"
18.6 #define __VYM_CODENAME "Codename: development version, not for production!"
18.7 -#define __VYM_BUILD_DATE "2009-06-03"
18.8 +#define __VYM_BUILD_DATE "2009-06-08"
18.9
18.10
18.11 bool checkVersion(const QString &);
19.1 --- a/vym.pro Wed Jun 03 20:37:17 2009 +0000
19.2 +++ b/vym.pro Mon Jun 08 11:36:56 2009 +0000
19.3 @@ -59,6 +59,7 @@
19.4 headingobj.h \
19.5 highlighter.h \
19.6 historywindow.h \
19.7 + imageitem.h \
19.8 imageobj.h \
19.9 imports.h \
19.10 linkablemapobj.h \
19.11 @@ -118,6 +119,7 @@
19.12 headingobj.cpp \
19.13 highlighter.cpp \
19.14 historywindow.cpp \
19.15 + imageitem.cpp \
19.16 imageobj.cpp \
19.17 imports.cpp \
19.18 linkablemapobj.cpp \
20.1 --- a/vymmodel.cpp Wed Jun 03 20:37:17 2009 +0000
20.2 +++ b/vymmodel.cpp Mon Jun 08 11:36:56 2009 +0000
20.3 @@ -234,7 +234,7 @@
20.4
20.5 // Reset the counters before saving
20.6 // TODO constr. of FIO creates lots of objects, better do this in some other way...
20.7 - FloatImageObj (mapScene).resetSaveCounter();// FIXME-2 this can be done local to vymmodel maybe...
20.8 + ImageItem().resetSaveCounter();// FIXME-2 this can be done local to vymmodel maybe...
20.9
20.10 // Build xml recursivly
20.11 if (!saveSel || saveSel->getType()==TreeItem::MapCenter)
20.12 @@ -260,6 +260,8 @@
20.13 xml.decIndent();
20.14 s+=xml.endElement("vymmap");
20.15
20.16 + //cout << s.toStdString() << endl;
20.17 +
20.18 if (writeflags) standardFlagsMaster->saveToDir (tmpdir+"/flags/","",writeflags);
20.19 return s;
20.20 }
20.21 @@ -623,7 +625,7 @@
20.22 return err;
20.23 }
20.24
20.25 -void VymModel::addMapReplaceInt(const QString &undoSel, const QString &path)
20.26 +void VymModel::addMapReplaceInt(const QString &undoSel, const QString &path) // FIXME-1 test e.g. with undo color subtree
20.27 {
20.28 QString pathDir=path.left(path.findRev("/"));
20.29 QDir d(pathDir);
20.30 @@ -700,15 +702,14 @@
20.31 */
20.32 }
20.33
20.34 -FloatImageObj* VymModel::loadFloatImageInt (BranchItem *dst,QString fn)
20.35 -{
20.36 - TreeItem *fi=createImage(dst);
20.37 - if (fi)
20.38 +ImageItem* VymModel::loadFloatImageInt (BranchItem *dst,QString fn)
20.39 +{
20.40 + ImageItem *ii=createImage(dst);
20.41 + if (ii)
20.42 {
20.43 - FloatImageObj *fio= ((FloatImageObj*)fi->getLMO());
20.44 - fio->load (fn);
20.45 + ii->load (fn);
20.46 reposition();
20.47 - return fio;
20.48 + return ii;
20.49 }
20.50 return NULL;
20.51 }
20.52 @@ -735,16 +736,15 @@
20.53 // TODO loadFIO in QT4 use: lastImageDir=fd->directory();
20.54 lastImageDir=QDir (fd->dirPath());
20.55 QString s;
20.56 - FloatImageObj *fio;
20.57 + ImageItem *ii;
20.58 for (int j=0; j<fd->selectedFiles().count(); j++)
20.59 {
20.60 s=fd->selectedFiles().at(j);
20.61 - fio=loadFloatImageInt (selbi,s);
20.62 - //FIXME-1 savestate for loadImage missing
20.63 - /*
20.64 - if (fio)
20.65 + ii=loadFloatImageInt (selbi,s);
20.66 + //FIXME-3 check savestate for loadImage
20.67 + if (ii)
20.68 saveState(
20.69 - (LinkableMapObj*)fio,
20.70 + (TreeItem*)ii,
20.71 "delete ()",
20.72 selbi,
20.73 QString ("loadImage (%1)").arg(s ),
20.74 @@ -753,7 +753,6 @@
20.75 else
20.76 // TODO loadFIO error handling
20.77 qWarning ("Failed to load "+s);
20.78 - */
20.79 }
20.80 }
20.81 delete (p);
20.82 @@ -761,16 +760,15 @@
20.83 }
20.84 }
20.85
20.86 -void VymModel::saveFloatImageInt (FloatImageObj *fio, const QString &type, const QString &fn)
20.87 -{
20.88 - fio->save (fn,type);
20.89 +void VymModel::saveFloatImageInt (ImageItem *ii, const QString &type, const QString &fn)
20.90 +{
20.91 + ii->save (fn,type);
20.92 }
20.93
20.94 void VymModel::saveFloatImage ()
20.95 {
20.96 - //FIXME-1 FloatImageObj *fio=selection.getFloatImage();
20.97 - FloatImageObj *fio=NULL;
20.98 - if (fio)
20.99 + ImageItem *ii=getSelectedImageItem();
20.100 + if (ii)
20.101 {
20.102 QFileDialog *fd=new QFileDialog( NULL);
20.103 fd->setFilters (imageIO.getFilters());
20.104 @@ -808,7 +806,7 @@
20.105 break;
20.106 }
20.107 }
20.108 - saveFloatImageInt (fio,fd->selectedFilter(),fn );
20.109 + saveFloatImageInt (ii,fd->selectedFilter(),fn );
20.110 }
20.111 delete (fd);
20.112 }
20.113 @@ -992,40 +990,24 @@
20.114 findReset();
20.115 }
20.116
20.117 -QString VymModel::getObjectName (const LinkableMapObj *lmo) // FIXME-3 should be obsolete
20.118 -{
20.119 - QString s;
20.120 - if (!lmo) return QString("Error: NULL has no name!");
20.121 -
20.122 - TreeItem *ti=lmo->getTreeItem();
20.123 - if (ti->isBranchLikeType() )
20.124 - {
20.125 -
20.126 - s=lmo->getTreeItem()->getHeading();
20.127 - if (s=="") s="unnamed";
20.128 - return QString("branch (%1)").arg(s);
20.129 - }
20.130 - if (ti->getType()==TreeItem::Image)
20.131 - return QString ("floatimage [%1]").arg(((FloatImageObj*)lmo)->getOriginalFilename());
20.132 - return QString("Unknown type has no name!");
20.133 +QString VymModel::getObjectName (LinkableMapObj *lmo) // FIXME-3 should be obsolete
20.134 +{
20.135 + if (!lmo || !lmo->getTreeItem() ) return QString();
20.136 + return getObjectName (lmo->getTreeItem() );
20.137 }
20.138
20.139
20.140 -QString VymModel::getObjectName (const TreeItem *ti)
20.141 +QString VymModel::getObjectName (TreeItem *ti)
20.142 {
20.143 QString s;
20.144 if (!ti) return QString("Error: NULL has no name!");
20.145 -
20.146 - if (ti->isBranchLikeType() )
20.147 - {
20.148 - s=ti->getHeading();
20.149 - if (s=="") s="unnamed";
20.150 + s=ti->getHeading();
20.151 + if (s=="") s="unnamed";
20.152 +
20.153 + if (ti->isBranchLikeType() ) //FIXME-3 shouldnt there also be mapcenter??
20.154 return QString("branch (%1)").arg(s);
20.155 - }
20.156 - /* FIXME-2 move floatimage to TreeModel first
20.157 - if (type==TreeItem::Image)
20.158 - return QString ("floatimage [%1]").arg(((FloatImageObj*)lmo)->getOriginalFilename());
20.159 - */
20.160 + if (ti->getType()==TreeItem::Image)
20.161 + return QString ("image (%1)").arg(ti->getHeading());
20.162 return QString("Unknown type has no name!");
20.163 }
20.164
20.165 @@ -1480,7 +1462,7 @@
20.166 return QDate::currentDate().toString ("yyyy-MM-dd");
20.167 }
20.168
20.169 -int VymModel::branchCount() // FIXME-2 Optimize this: use internal counter instead of going through whole map each time...
20.170 +int VymModel::branchCount() // FIXME-4 Optimize this: use internal counter instead of going through whole map each time...
20.171 {
20.172 int c=0;
20.173 BranchItem *cur=NULL;
20.174 @@ -1627,9 +1609,9 @@
20.175 return urls;
20.176 }
20.177
20.178 -void VymModel::linkFloatImageTo(const QString &dstString) // FIXME-1
20.179 -{
20.180 - //FIXME-1 FloatImageObj *fio=selection.getFloatImage();
20.181 +void VymModel::linkFloatImageTo(const QString &dstString) // FIXME-0
20.182 +{
20.183 + //FIXME-0 FloatImageObj *fio=selection.getFloatImage();
20.184 FloatImageObj *fio=NULL;
20.185 if (fio)
20.186 {
20.187 @@ -1640,7 +1622,7 @@
20.188 QString parString=getSelectString(dstPar);
20.189 QString fioPreSelectString=getSelectString(fio);
20.190 QString fioPreParentSelectString=getSelectString (fio->getParObj());
20.191 - // FIXME-1 ((BranchObj*)dst)->addFloatImage (fio);
20.192 + // FIXME-0 ((BranchObj*)dst)->addFloatImage (fio);
20.193 unselect();
20.194 // ((BranchObj*)(fio->getParObj()))->removeFloatImage (fio);
20.195 fio=((BranchObj*)dst)->getLastFloatImage();
20.196 @@ -1813,20 +1795,23 @@
20.197
20.198 void VymModel::setHideExport(bool b)
20.199 {
20.200 - BranchItem *bi=getSelectedBranchItem();
20.201 - if (bi)
20.202 + MapItem *mi=(MapItem*)getSelectedItem();
20.203 + if (mi &&
20.204 + (mi->getType()==TreeItem::Image ||mi->isBranchLikeType()))
20.205 {
20.206 - bi->setHideInExport (b);
20.207 + mi->setHideInExport (b);
20.208 QString u= b ? "false" : "true";
20.209 QString r=!b ? "false" : "true";
20.210
20.211 saveState(
20.212 - bi,
20.213 + mi,
20.214 QString ("setHideExport (%1)").arg(u),
20.215 - bi,
20.216 + mi,
20.217 QString ("setHideExport (%1)").arg(r),
20.218 - QString ("Set HideExport flag of %1 to %2").arg(getObjectName(bi)).arg (r)
20.219 + QString ("Set HideExport flag of %1 to %2").arg(getObjectName(mi)).arg (r)
20.220 );
20.221 + emitDataHasChanged(mi);
20.222 + emitSelectionChanged();
20.223 updateActions();
20.224 reposition();
20.225 // emitSelectionChanged();
20.226 @@ -1836,9 +1821,9 @@
20.227
20.228 void VymModel::toggleHideExport()
20.229 {
20.230 - BranchItem *selbi=getSelectedBranchItem();
20.231 - if (selbi)
20.232 - setHideExport ( !selbi->hideInExport() );
20.233 + TreeItem *selti=getSelectedItem();
20.234 + if (selti)
20.235 + setHideExport ( !selti->hideInExport() );
20.236 }
20.237
20.238
20.239 @@ -1971,31 +1956,35 @@
20.240 return NULL;
20.241 }
20.242
20.243 -TreeItem* VymModel::createImage(BranchItem *dst) //FIXME-1
20.244 -{
20.245 - return NULL;
20.246 -/*
20.247 +ImageItem* VymModel::createImage(BranchItem *dst)
20.248 +{
20.249 if (dst)
20.250 {
20.251 - FloatImageObj *newfio=bo->addFloatImage(); // FIXME-1 VM Old model, merge with below
20.252 -
20.253 - // Create TreeItem
20.254 + QModelIndex parix;
20.255 + int n;
20.256 QList<QVariant> cData;
20.257 - cData << "VM:createImage" << "undef"<<"undef";
20.258 - TreeItem *parti=bo->getTreeItem();
20.259 - TreeItem *ti=new TreeItem (cData,parti);
20.260 - ti->setLMO (newfio);
20.261 - ti->setType (TreeItem::Image);
20.262 - parti->appendChild (ti);
20.263 -
20.264 - if (newfio)
20.265 - {
20.266 - newfio->setTreeItem (ti);
20.267 - select (newfio); // FIXME-2 VM really needed here?
20.268 - return ti;
20.269 - }
20.270 - }
20.271 -*/
20.272 + cData << "VM::createImage" << "undef"<<"undef";
20.273 +
20.274 + ImageItem *newii=new ImageItem (cData);
20.275 + newii->setHeading (QApplication::translate("Heading of new image in map", "new image"));
20.276 +
20.277 + emit (layoutAboutToBeChanged() );
20.278 +
20.279 + parix=index(dst);
20.280 + n=dst->getRowNumAppend(newii);
20.281 + beginInsertRows (parix,n,n+1);
20.282 + dst->appendChild (newii);
20.283 + endInsertRows ();
20.284 +
20.285 + emit (layoutChanged() );
20.286 +
20.287 + // save scroll state. If scrolled, automatically select
20.288 + // new branch in order to tmp unscroll parent...
20.289 + newii->createMapObj(mapScene);
20.290 + reposition();
20.291 + return newii;
20.292 + }
20.293 + return NULL;
20.294 }
20.295
20.296 BranchItem* VymModel::addMapCenter ()
20.297 @@ -2065,7 +2054,7 @@
20.298 {
20.299 parbi=dst;
20.300 parix=index(parbi);
20.301 - n=parbi->childCount();
20.302 + n=parbi->getRowNumAppend (newbi);
20.303 beginInsertRows (parix,n,n+1);
20.304 parbi->appendChild (newbi);
20.305 endInsertRows ();
20.306 @@ -2073,8 +2062,9 @@
20.307 {
20.308 // insert below selection
20.309 parbi=(BranchItem*)dst->parent();
20.310 - parix=index(parbi);
20.311 - n=dst->childNumber()+ (3+num)/2; //-1 |-> 1;-3 |-> 0
20.312 + parix=index(parbi);
20.313 +
20.314 + n=dst->childNumber() + (3+num)/2; //-1 |-> 1;-3 |-> 0
20.315 beginInsertRows (parix,n,n);
20.316 parbi->insertBranch(n,newbi);
20.317 endInsertRows ();
20.318 @@ -2201,52 +2191,39 @@
20.319 {
20.320 BranchItem *selbi=getSelectedBranchItem();
20.321
20.322 - if (!selbi) return;
20.323 -
20.324 - TreeItem *pi=selbi->parent();
20.325 - QModelIndex parentIndex=index(pi);
20.326 -
20.327 - if (selbi->isBranchLikeType() )
20.328 + if (selbi && selbi->isBranchLikeType() )
20.329 {
20.330 unselect();
20.331 saveStateRemovingPart (selbi, QString ("Delete %1").arg(getObjectName(selbi)));
20.332
20.333 - emit (layoutAboutToBeChanged() );
20.334 -
20.335 - int n=selbi->childNum();
20.336 - beginRemoveRows (parentIndex,n,n);
20.337 - removeRows (n,1,parentIndex);
20.338 - endRemoveRows();
20.339 - select (pi);
20.340 - emitShowSelection();
20.341 - reposition();
20.342 -
20.343 - emit (layoutChanged() );
20.344 + TreeItem *pi=deleteItem (selbi);
20.345 + if (pi)
20.346 + {
20.347 + select (pi);
20.348 + emitShowSelection();
20.349 + }
20.350 return;
20.351 }
20.352 - //FloatImageObj *fio=selection.getFloatImage(); //FIXME-1 VM still missing
20.353 -
20.354 -/*
20.355 - if (fio)
20.356 + ImageItem *ii=getSelectedImageItem();
20.357 + if (ii)
20.358 {
20.359 - BranchObj* par=(BranchObj*)fio->getParObj();
20.360 + BranchItem *pi=(BranchItem*)(ii->parent());
20.361 saveStateChangingPart(
20.362 - par,
20.363 - fio,
20.364 + pi,
20.365 + ii,
20.366 "delete ()",
20.367 - QString("Delete %1").arg(getObjectName(fio))
20.368 + QString("Delete %1").arg(getObjectName(ii))
20.369 );
20.370 unselect();
20.371 - par->removeFloatImage(fio);
20.372 - select (par);
20.373 + deleteItem (ii);
20.374 + select (pi);
20.375 reposition();
20.376 emitShowSelection();
20.377 return;
20.378 }
20.379 - */
20.380 }
20.381
20.382 -void VymModel::deleteKeepChildren()
20.383 +void VymModel::deleteKeepChildren() //FIXME-2 does not work yet for mapcenters
20.384
20.385 {
20.386 BranchItem *selbi=getSelectedBranchItem();
20.387 @@ -2275,7 +2252,15 @@
20.388
20.389 QString sel=getSelectString(selbi);
20.390 unselect();
20.391 - //FIXME-0 missing in VM pi->removeBranchHere(selbi);
20.392 + int pos=selbi->num();
20.393 + BranchItem *bi=selbi->getFirstBranch();
20.394 + while (bi)
20.395 + {
20.396 + relinkBranch (bi,pi,pos);
20.397 + bi=selbi->getFirstBranch();
20.398 + pos++;
20.399 + }
20.400 + deleteItem (selbi);
20.401 reposition();
20.402 select (sel);
20.403 BranchObj *bo=getSelectedBranchObj();
20.404 @@ -2311,6 +2296,27 @@
20.405 }
20.406 }
20.407
20.408 +TreeItem* VymModel::deleteItem (TreeItem *ti)
20.409 +{
20.410 + if (ti)
20.411 + {
20.412 + TreeItem *pi=ti->parent();
20.413 + QModelIndex parentIndex=index(pi);
20.414 +
20.415 + emit (layoutAboutToBeChanged() );
20.416 +
20.417 + int n=ti->childNum();
20.418 + beginRemoveRows (parentIndex,n,n);
20.419 + removeRows (n,1,parentIndex);
20.420 + endRemoveRows();
20.421 + reposition();
20.422 +
20.423 + emit (layoutChanged() );
20.424 + if (pi->depth()>0) return pi;
20.425 + }
20.426 + return NULL;
20.427 +}
20.428 +
20.429 bool VymModel::scrollBranch(BranchItem *bi)
20.430 {
20.431 if (bi)
20.432 @@ -2430,7 +2436,7 @@
20.433 }
20.434 }
20.435
20.436 -void VymModel::addFloatImage (const QPixmap &img) //FIXME-2
20.437 +void VymModel::addFloatImage (const QPixmap &img) //FIXME-0
20.438 {
20.439 /*
20.440 BranchObj *bo=getSelectedBranch();
20.441 @@ -3010,7 +3016,7 @@
20.442 if (ok) importDirInt(s);
20.443 }
20.444 /////////////////////////////////////////////////////////////////////
20.445 - } else /* FIXME-2 if (com=="linkTo")
20.446 + } else if (com=="relinkTo")
20.447 {
20.448 if (!selti)
20.449 {
20.450 @@ -3023,21 +3029,21 @@
20.451 // 1 num in parent (for branches)
20.452 // 2,3 x,y of mainbranch or mapcenter
20.453 s=parser.parString(ok,0);
20.454 - LinkableMapObj *dst=findObjBySelect (s);
20.455 + TreeItem *dst=findBySelectString (s);
20.456 if (dst)
20.457 {
20.458 - if (typid(*dst) == typid(BranchObj) )
20.459 + if (dst->getType()==TreeItem::Branch)
20.460 {
20.461 // Get number in parent
20.462 n=parser.parInt (ok,1);
20.463 if (ok)
20.464 {
20.465 - selb->linkTo ((BranchObj*)(dst),n);
20.466 + relinkBranch (selbi,(BranchItem*)dst,n);
20.467 emitSelectionChanged();
20.468 }
20.469 - } else if (typid(*dst) == typid(MapCenterObj) )
20.470 + } else if (dst->getType()==TreeItem::MapCenter)
20.471 {
20.472 - selb->linkTo ((BranchObj*)(dst),-1);
20.473 + relinkBranch (selbi,(BranchItem*)dst);
20.474 // Get coordinates of mainbranch
20.475 x=parser.parDouble(ok,2);
20.476 if (ok)
20.477 @@ -3045,32 +3051,33 @@
20.478 y=parser.parDouble(ok,3);
20.479 if (ok)
20.480 {
20.481 - selbi->move (x,y);
20.482 + if (selbi->getLMO()) selbi->getLMO()->move (x,y);
20.483 emitSelectionChanged();
20.484 }
20.485 }
20.486 }
20.487 }
20.488 }
20.489 - } else if ( selectionType() == TreeItem::Image)
20.490 + } else if ( selti->getType() == TreeItem::Image)
20.491 {
20.492 if (parser.checkParCount(1))
20.493 {
20.494 // 0 selectstring of parent
20.495 s=parser.parString(ok,0);
20.496 - LinkableMapObj *dst=findObjBySelect (s);
20.497 + TreeItem *dst=findBySelectString (s);
20.498 if (dst)
20.499 {
20.500 - if (typid(*dst) == typid(BranchObj) ||
20.501 - typid(*dst) == typid(MapCenterObj))
20.502 + /* FIXME-0 relink img
20.503 + if (dst->isBranchLikeType())
20.504 linkFloatImageTo (getSelectString(dst));
20.505 + */
20.506 } else
20.507 parser.setError (Aborted,"Destination is not a branch");
20.508 }
20.509 } else
20.510 parser.setError (Aborted,"Type of selection is not a floatimage or branch");
20.511 /////////////////////////////////////////////////////////////////////
20.512 - } else */ if (com=="loadImage")
20.513 + } else if (com=="loadImage")
20.514 {
20.515 if (!selti)
20.516 {
20.517 @@ -3235,18 +3242,17 @@
20.518 /////////////////////////////////////////////////////////////////////
20.519 } else if (com=="saveImage")
20.520 {
20.521 - //FIXME-2 FloatImageObj *fio=selection.getFloatImage();
20.522 - FloatImageObj* fio=NULL;
20.523 - if (!fio)
20.524 + ImageItem *ii=getSelectedImageItem();
20.525 + if (!ii )
20.526 {
20.527 - parser.setError (Aborted,"Type of selection is not an image");
20.528 + parser.setError (Aborted,"No image selected");
20.529 } else if (parser.checkParCount(2))
20.530 {
20.531 s=parser.parString(ok,0);
20.532 if (ok)
20.533 {
20.534 t=parser.parString(ok,1);
20.535 - if (ok) saveFloatImageInt (fio,t,s);
20.536 + if (ok) saveFloatImageInt (ii,t,s);
20.537 }
20.538 }
20.539 /////////////////////////////////////////////////////////////////////
20.540 @@ -4553,10 +4559,7 @@
20.541
20.542 bool VymModel::select ()
20.543 {
20.544 - QModelIndex index=selModel->selectedIndexes().first(); // TODO no multiselections yet
20.545 -
20.546 - TreeItem *item = getItem (index);
20.547 - return select (item->getLMO() );
20.548 + return select (selModel->selectedIndexes().first()); // TODO no multiselections yet
20.549 }
20.550
20.551 bool VymModel::select (const QString &s)
20.552 @@ -4924,7 +4927,7 @@
20.553 TreeItem::Type type=ti->getType();
20.554 if (type ==TreeItem::Branch || type==TreeItem::MapCenter || type==TreeItem::Image)
20.555 {
20.556 - return ti->getLMO();
20.557 + return ((MapItem*)ti)->getLMO();
20.558 }
20.559 }
20.560 return NULL;
20.561 @@ -4934,7 +4937,7 @@
20.562 {
20.563 TreeItem *ti = getSelectedBranchItem();
20.564 if (ti)
20.565 - return (BranchObj*)ti->getLMO();
20.566 + return (BranchObj*)((MapItem*)ti)->getLMO();
20.567 else
20.568 return NULL;
20.569 }
20.570 @@ -4970,9 +4973,15 @@
20.571 return list.first();
20.572 }
20.573
20.574 -FloatImageObj* VymModel::getSelectedFloatImage()
20.575 -{
20.576 - //FIXME-2 return selection.getFloatImage();
20.577 +ImageItem* VymModel::getSelectedImageItem()
20.578 +{
20.579 + QModelIndexList list=selModel->selectedIndexes();
20.580 + if (!list.isEmpty())
20.581 + {
20.582 + TreeItem *ti=getItem (list.first());
20.583 + if (ti && ti->getType()==TreeItem::Image)
20.584 + return (ImageItem*)ti;
20.585 + }
20.586 return NULL;
20.587 }
20.588
20.589 @@ -4991,8 +5000,7 @@
20.590 {
20.591 QString s;
20.592 if (!ti) return s;
20.593 - if (ti->getType() == TreeItem::Branch ||
20.594 - ti->getType() == TreeItem::MapCenter)
20.595 + if (ti->isBranchLikeType())
20.596 {
20.597 TreeItem *par=ti->parent();
20.598 if (par)
21.1 --- a/vymmodel.h Wed Jun 03 20:37:17 2009 +0000
21.2 +++ b/vymmodel.h Mon Jun 08 11:36:56 2009 +0000
21.3 @@ -5,7 +5,7 @@
21.4 #include <QtNetwork>
21.5
21.6 #include "file.h"
21.7 -#include "floatimageobj.h"
21.8 +#include "imageitem.h"
21.9 #include "mapeditor.h"
21.10 #include "parser.h"
21.11 #include "treeitem.h"
21.12 @@ -107,8 +107,8 @@
21.13 void addMapReplaceInt(const QString & undoSel, const QString & path);
21.14 void addMapInsertInt (const QString & path, int pos);
21.15
21.16 - FloatImageObj* loadFloatImageInt (BranchItem *dst,QString);
21.17 - void saveFloatImageInt (FloatImageObj*, const QString &, const QString &);
21.18 + ImageItem* loadFloatImageInt (BranchItem *dst,QString);
21.19 + void saveFloatImageInt (ImageItem*, const QString &, const QString &);
21.20 public:
21.21 void loadFloatImage ();
21.22 void saveFloatImage ();
21.23 @@ -151,8 +151,8 @@
21.24 Returns heading of a branch or name of an object for use in comment
21.25 of undo/redo history
21.26 */
21.27 - QString getObjectName(const LinkableMapObj*);
21.28 - QString getObjectName(const TreeItem*);
21.29 + QString getObjectName(LinkableMapObj*);
21.30 + QString getObjectName(TreeItem*);
21.31
21.32 void redo(); //!< Redo last action
21.33 bool isRedoAvailable(); //!< True, if redo is available
21.34 @@ -282,7 +282,7 @@
21.35 // The create methods are used to quickly parse a XML file
21.36 BranchItem* createMapCenter(); //!< Create MapCenter
21.37 BranchItem* createBranch(BranchItem *dst); //!< Create Branch
21.38 - TreeItem* createImage(BranchItem *dst); //!< Create image
21.39 + ImageItem* createImage(BranchItem *dst); //!< Create image
21.40
21.41 /*! \brief Add new mapcenter
21.42
21.43 @@ -323,11 +323,12 @@
21.44 */
21.45 bool relinkBranch (BranchItem* branch, BranchItem* dst, int pos =-1);
21.46
21.47 - void deleteSelection(); //!< Delete selection
21.48 - void deleteKeepChildren(); //!< remove branch, but keep children
21.49 - void deleteChildren(); //!< keep branch, but remove children
21.50 + void deleteSelection(); //!< Delete selection
21.51 + void deleteKeepChildren(); //!< remove branch, but keep children
21.52 + void deleteChildren(); //!< keep branch, but remove children
21.53
21.54 private:
21.55 + TreeItem* deleteItem(TreeItem*); //!< Delete item and return parent (if parent!= rootItem)
21.56 bool scrollBranch(BranchItem *);
21.57 bool unscrollBranch(BranchItem *);
21.58 public:
21.59 @@ -578,11 +579,11 @@
21.60 public:
21.61 TreeItem::Type selectionType();
21.62 LinkableMapObj* getSelectedLMO();
21.63 - BranchObj* getSelectedBranchObj(); // FIXME-2 replace by item...
21.64 + BranchObj* getSelectedBranchObj(); // FIXME-3 replace by item...
21.65 BranchItem* getSelectedBranchItem();
21.66 TreeItem* getSelectedItem();
21.67 QModelIndex getSelectedIndex();
21.68 - FloatImageObj* getSelectedFloatImage();
21.69 + ImageItem* getSelectedImageItem();
21.70 QString getSelectString ();
21.71 QString getSelectString (LinkableMapObj *lmo);
21.72 QString getSelectString (TreeItem *item);
22.1 --- a/xml-freemind.cpp Wed Jun 03 20:37:17 2009 +0000
22.2 +++ b/xml-freemind.cpp Mon Jun 08 11:36:56 2009 +0000
22.3 @@ -70,10 +70,7 @@
22.4 //FIXME-3 TreeItem *ti=model->first(); // this will be NULL !!!
22.5 TreeItem *ti=NULL;
22.6
22.7 - BranchObj *bo;
22.8 - if (ti->getType()==TreeItem::MapCenter)
22.9 - bo=(BranchObj*)(ti->getLMO());
22.10 - else
22.11 + if (ti->getType()!=TreeItem::MapCenter)
22.12 qWarning ("parseFreeMindHandler::startElement no mapCenter!!");
22.13
22.14 //cout <<"model="<<model<<" first="<<model->first()<<endl;
23.1 --- a/xml-vym.cpp Wed Jun 03 20:37:17 2009 +0000
23.2 +++ b/xml-vym.cpp Mon Jun 08 11:36:56 2009 +0000
23.3 @@ -13,8 +13,8 @@
23.4 #include "mainwindow.h"
23.5 #include "version.h"
23.6
23.7 -static FloatObj *lastFloat;
23.8 -static OrnamentedObj *lastOO;
23.9 +static ImageItem *lastImageItem;
23.10 +static MapItem *lastMI;
23.11
23.12 extern Main *mainWindow;
23.13 extern Settings settings;
23.14 @@ -54,7 +54,7 @@
23.15 {
23.16 // Create mapCenter
23.17 model->clear();
23.18 - lastBranchItem=NULL;
23.19 + lastBranch=NULL;
23.20
23.21 if (!atts.value( "author").isEmpty() )
23.22 model->setAuthor(atts.value( "author" ) );
23.23 @@ -140,7 +140,7 @@
23.24 {
23.25 // Really use the found mapcenter as MCO in a new map
23.26
23.27 - lastBranchItem=(BranchItem*)model->createMapCenter();
23.28 + lastBranch=model->createMapCenter();
23.29 } else
23.30 {
23.31 // Treat the found mapcenter as a branch
23.32 @@ -148,10 +148,10 @@
23.33 BranchItem *bi=model->getSelectedBranchItem();
23.34 if (bi)
23.35 {
23.36 - lastBranchItem=bi;
23.37 + lastBranch=bi;
23.38 if (loadMode==ImportAdd)
23.39 {
23.40 - lastBranchItem=model->createBranch(lastBranchItem);
23.41 + lastBranch=model->createBranch(lastBranch);
23.42 } //else
23.43 //FIXME-3 lastBranch->clear();
23.44 } else
23.45 @@ -170,7 +170,7 @@
23.46 if (!atts.value( "textColor").isEmpty() )
23.47 {
23.48 col.setNamedColor(atts.value("textColor"));
23.49 - lastBranchItem->setHeadingColor(col );
23.50 + lastBranch->setHeadingColor(col );
23.51 }
23.52 } else if ( eName == "note" &&
23.53 (state == StateMapCenter ||state==StateBranch))
23.54 @@ -184,10 +184,9 @@
23.55 } else if ( eName == "floatimage" &&
23.56 (state == StateMapCenter ||state==StateBranch))
23.57 {
23.58 - state=StateFloatImage;
23.59 - //FIXME-2 lastBranch->addFloatImage();
23.60 - //FIXME-2 lastFloat=lastBranch->getLastFloatImage();
23.61 - if (!readFloatImageAttr(atts)) return false;
23.62 + state=StateImage;
23.63 + lastImage=model->createImage(lastBranch);
23.64 + if (!readImageAttr(atts)) return false;
23.65 } else if ( (eName == "branch"||eName=="floatimage") && state == StateMap)
23.66 {
23.67 // This is used in vymparts, which have no mapcenter!
23.68 @@ -205,29 +204,28 @@
23.69 }
23.70 if (ti && ti->isBranchLikeType() )
23.71 {
23.72 - lastBranchItem=(BranchItem*)ti;
23.73 + lastBranch=(BranchItem*)ti;
23.74 if (eName=="branch")
23.75 {
23.76 state=StateBranch;
23.77 if (loadMode==ImportAdd)
23.78 {
23.79 - lastBranchItem=model->createBranch(lastBranchItem);
23.80 + lastBranch=model->createBranch(lastBranch);
23.81
23.82 } else
23.83 //FIXME-2 lastBranch->clear();
23.84 readBranchAttr (atts);
23.85 } else if (eName=="floatimage")
23.86 {
23.87 - state=StateFloatImage;
23.88 - //FIXME-2 lastBranch->addFloatImage();
23.89 - //FIXME-2 lastFloat=lastBranch->getLastFloatImage();
23.90 - if (!readFloatImageAttr(atts)) return false;
23.91 + state=StateImage;
23.92 + lastImage=model->createImage (lastBranch);
23.93 + if (!readImageAttr(atts)) return false;
23.94 } else return false;
23.95 } else return false;
23.96 } else if ( eName == "branch" && state == StateMapCenter)
23.97 {
23.98 state=StateBranch;
23.99 - lastBranchItem=model->createBranch(lastBranchItem);
23.100 + lastBranch=model->createBranch(lastBranch);
23.101 readBranchAttr (atts);
23.102 } else if ( eName == "htmlnote" && state == StateBranch)
23.103 {
23.104 @@ -247,7 +245,7 @@
23.105 if (!readXLinkAttr (atts)) return false;
23.106 } else if ( eName == "branch" && state == StateBranch )
23.107 {
23.108 - lastBranchItem=model->createBranch(lastBranchItem);
23.109 + lastBranch=model->createBranch(lastBranch);
23.110 readBranchAttr (atts);
23.111 } else if ( eName == "html" && state == StateHtmlNote )
23.112 {
23.113 @@ -282,15 +280,15 @@
23.114 break;
23.115 case StateMapCenter:
23.116 model->selectParent();
23.117 - model->emitDataHasChanged (lastBranchItem);
23.118 - lastBranchItem=(BranchItem*)(lastBranchItem->parent());
23.119 - lastBranchItem->setLastSelectedBranch (0); // Reset last selected to first child branch
23.120 + model->emitDataHasChanged (lastBranch);
23.121 + lastBranch=(BranchItem*)(lastBranch->parent());
23.122 + lastBranch->setLastSelectedBranch (0); // Reset last selected to first child branch
23.123 break;
23.124 case StateBranch:
23.125 model->selectParent();
23.126 - model->emitDataHasChanged (lastBranchItem);
23.127 - lastBranchItem=(BranchItem*)(lastBranchItem->parent());
23.128 - lastBranchItem->setLastSelectedBranch (0); // Reset last selected to first child branch
23.129 + model->emitDataHasChanged (lastBranch);
23.130 + lastBranch=(BranchItem*)(lastBranch->parent());
23.131 + lastBranch->setLastSelectedBranch (0); // Reset last selected to first child branch
23.132 break;
23.133 case StateHtml:
23.134 htmldata+="</"+eName+">";
23.135 @@ -299,7 +297,7 @@
23.136 state=StateHtmlNote;
23.137 htmldata.replace ("<br></br>","<br />");
23.138 no.setNote (htmldata);
23.139 - lastBranchItem->setNoteObj (no);
23.140 + lastBranch->setNoteObj (no);
23.141 }
23.142 break;
23.143 default:
23.144 @@ -327,19 +325,19 @@
23.145 case StateMapSetting:break;
23.146 case StateMapCenter: break;
23.147 case StateNote:
23.148 - lastBranchItem->setNote(ch_simplified);
23.149 + lastBranch->setNote(ch_simplified);
23.150 break;
23.151 case StateBranch: break;
23.152 case StateStandardFlag:
23.153 - lastBranchItem->activateStandardFlag(ch_simplified);
23.154 + lastBranch->activateStandardFlag(ch_simplified);
23.155 break;
23.156 - case StateFloatImage: break;
23.157 + case StateImage: break;
23.158 case StateHtmlNote: break;
23.159 case StateHtml:
23.160 htmldata+=ch_org;
23.161 break;
23.162 case StateHeading:
23.163 - lastBranchItem->setHeading(ch_simplified);
23.164 + lastBranch->setHeading(ch_simplified);
23.165 break;
23.166 default:
23.167 return false;
23.168 @@ -356,10 +354,12 @@
23.169 {
23.170 mainWindow->setProgressValue (branchesCurrent++);
23.171
23.172 + lastMI=lastBranch;
23.173 +
23.174 if (!readOOAttr(a)) return false;
23.175
23.176 if (!a.value( "scrolled").isEmpty() )
23.177 - lastBranchItem->toggleScroll();
23.178 + lastBranch->toggleScroll();
23.179 /*
23.180 if (!a.value( "frameType").isEmpty() )
23.181 lastOO->setFrameType (a.value("frameType")); //Compatibility 1.8.1
23.182 @@ -386,7 +386,7 @@
23.183 {
23.184 bool ok;
23.185 int x;
23.186 - if (lastOO)
23.187 + /* FIXME-2 if (lastOO)
23.188 {
23.189 if (!a.value( "frameType").isEmpty() )
23.190 lastOO->setFrameType (a.value("frameType"));
23.191 @@ -405,12 +405,13 @@
23.192 if (ok) lastOO->setFrameBorderWidth(x);
23.193 }
23.194 }
23.195 + */
23.196 return true;
23.197 }
23.198
23.199 bool parseVYMHandler::readOOAttr (const QXmlAttributes& a)
23.200 {
23.201 - if (lastBranchItem)
23.202 + if (lastMI)
23.203 {
23.204 bool okx,oky;
23.205 float x,y;
23.206 @@ -421,7 +422,7 @@
23.207 x=a.value("relPosX").toFloat (&okx);
23.208 y=a.value("relPosY").toFloat (&oky);
23.209 if (okx && oky )
23.210 - lastBranchItem->setRelPos (QPointF(x,y));
23.211 + lastBranch->setRelPos (QPointF(x,y));
23.212 else
23.213 return false; // Couldn't read relPos
23.214 }
23.215 @@ -433,21 +434,21 @@
23.216 x=a.value("absPosX").toFloat (&okx);
23.217 y=a.value("absPosY").toFloat (&oky);
23.218 if (okx && oky )
23.219 - lastBranchItem->setAbsPos (QPointF(x,y));
23.220 + lastBranch->setAbsPos (QPointF(x,y));
23.221 else
23.222 return false; // Couldn't read absPos
23.223 }
23.224 }
23.225 //if (!a.value( "id").isEmpty() )
23.226 - // lastBranchItem->setID (a.value ("id"));
23.227 + // lastBranch->setID (a.value ("id"));
23.228
23.229 if (!a.value( "url").isEmpty() )
23.230 - lastBranchItem->setURL (a.value ("url"));
23.231 + lastBranch->setURL (a.value ("url"));
23.232 if (!a.value( "vymLink").isEmpty() )
23.233 - lastBranchItem->setVymLink (a.value ("vymLink"));
23.234 + lastBranch->setVymLink (a.value ("vymLink"));
23.235 if (!a.value( "hideInExport").isEmpty() )
23.236 if (a.value("hideInExport")=="true")
23.237 - lastBranchItem->setHideInExport(true);
23.238 + lastBranch->setHideInExport(true);
23.239
23.240 /* FIXME-2
23.241 if (!a.value( "hideLink").isEmpty())
23.242 @@ -490,46 +491,39 @@
23.243 }
23.244 if (!a.value( "fonthint").isEmpty() )
23.245 no.setFontHint(a.value ("fonthint") );
23.246 - lastBranchItem->setNoteObj(no);
23.247 + lastBranch->setNoteObj(no);
23.248 return true;
23.249 }
23.250
23.251 -bool parseVYMHandler::readFloatImageAttr (const QXmlAttributes& a)
23.252 +bool parseVYMHandler::readImageAttr (const QXmlAttributes& a)
23.253 {
23.254 - lastOO=lastFloat;
23.255 + lastMI=lastImage;
23.256
23.257 //if (!readOOAttr(a)) return false;
23.258
23.259 - if (!a.value( "useOrientation").isEmpty() )
23.260 + /* FIXME-1 if (!a.value( "useOrientation").isEmpty() )
23.261 {
23.262 if (a.value ("useOrientation") =="true")
23.263 - lastFloat->setUseOrientation (true);
23.264 + lastImage->setUseOrientation (true);
23.265 else
23.266 - lastFloat->setUseOrientation (false);
23.267 + lastImage->setUseOrientation (false);
23.268 }
23.269 + */
23.270 if (!a.value( "href").isEmpty() )
23.271 {
23.272 - // Load FloatImage
23.273 - if (!lastFloat->load (parseHREF(a.value ("href") ) ))
23.274 + // Load Image
23.275 + if (!lastImage->load (parseHREF(a.value ("href") ) ))
23.276 {
23.277 QMessageBox::warning( 0, "Warning: " ,
23.278 - "Couldn't load float image\n"+parseHREF(a.value ("href") ));
23.279 - //FIXME-2 lastBranch->removeFloatImage(((FloatImageObj*)(lastFloat)));
23.280 - lastFloat=NULL;
23.281 + "Couldn't load image\n"+parseHREF(a.value ("href") ));
23.282 + //FIXME-0 lastBranch->removeFloatImage(((FloatImageObj*)(lastFloat)));
23.283 + lastImage=NULL;
23.284 return true;
23.285 }
23.286
23.287 }
23.288 - if (!a.value( "floatExport").isEmpty() )
23.289 - {
23.290 - // Only for compatibility. THis is not used since 1.7.11
23.291 - if (a.value ("floatExport") =="true")
23.292 - lastFloat->setFloatExport(true);
23.293 - else
23.294 - lastFloat->setFloatExport (false);
23.295 - }
23.296 if (!a.value( "zPlane").isEmpty() )
23.297 - lastFloat->setZValue (a.value("zPlane").toInt ());
23.298 + lastImage->setZValue (a.value("zPlane").toInt ());
23.299 float x,y;
23.300 bool okx,oky;
23.301 if (!a.value( "relPosX").isEmpty() )
23.302 @@ -542,9 +536,9 @@
23.303 if (okx && oky)
23.304
23.305 {
23.306 - lastFloat->setRelPos (QPointF (x,y) );
23.307 + lastImage->setRelPos (QPointF (x,y) );
23.308 // make sure floats in mapcenter are repositioned to relative pos
23.309 - //FIXME-2 if (lastBranchItem->depth()==0) lastBranch->positionContents();
23.310 + //FIXME-0 if (lastBranch->depth()==0) lastBranch->positionContents();
23.311 }
23.312 else
23.313 // Couldn't read relPos
23.314 @@ -554,9 +548,9 @@
23.315
23.316 if (!readOOAttr(a)) return false;
23.317
23.318 - if (!a.value ("orgName").isEmpty() )
23.319 + if (!a.value ("originalName").isEmpty() )
23.320 {
23.321 - ((FloatImageObj*)(lastFloat))->setOriginalFilename (a.value("orgName"));
23.322 + lastImage->setOriginalFilename (a.value("originalName"));
23.323 }
23.324 return true;
23.325 }
24.1 --- a/xml-vym.h Wed Jun 03 20:37:17 2009 +0000
24.2 +++ b/xml-vym.h Mon Jun 08 11:36:56 2009 +0000
24.3 @@ -20,7 +20,7 @@
24.4 bool readFrameAttr (const QXmlAttributes&);
24.5 bool readOOAttr (const QXmlAttributes&);
24.6 bool readNoteAttr (const QXmlAttributes&);
24.7 - bool readFloatImageAttr (const QXmlAttributes&);
24.8 + bool readImageAttr (const QXmlAttributes&);
24.9 bool readXLinkAttr (const QXmlAttributes&);
24.10 bool readHtmlAttr (const QXmlAttributes&);
24.11 bool readSettingAttr (const QXmlAttributes&);
24.12 @@ -40,7 +40,7 @@
24.13 StateFrame,
24.14 StateStandardFlag,
24.15 StateNote,
24.16 - StateFloatImage,
24.17 + StateImage,
24.18 StateHeading
24.19 };
24.20
24.21 @@ -53,6 +53,7 @@
24.22 QString htmldata;
24.23 NoteObj no;
24.24
24.25 - BranchItem* lastBranchItem;
24.26 + BranchItem* lastBranch;
24.27 + ImageItem* lastImage;
24.28 };
24.29 #endif