1.6.1 Port to QGraphics
authorinsilmaril
Fri, 08 Dec 2006 20:18:56 +0000
changeset 408c2a05fa925a1
parent 407 5db8dfd30ea2
child 409 81ffad43d53f
1.6.1 Port to QGraphics
branchobj.cpp
branchobj.h
demos/todo.vym
exportxhtmldialog.cpp
file.cpp
flagobj.cpp
flagobj.h
flagrowobj.cpp
flagrowobj.h
floatimageobj.cpp
floatimageobj.h
floatobj.cpp
floatobj.h
frameobj.cpp
frameobj.h
headingobj.cpp
headingobj.h
imageobj.cpp
imageobj.h
linkablemapobj.cpp
linkablemapobj.h
mainwindow.cpp
mainwindow.h
mapcenterobj.cpp
mapcenterobj.h
mapeditor.cpp
mapeditor.h
mapobj.cpp
mapobj.h
misc.cpp
misc.h
options.cpp
options.h
ornamentedobj.cpp
ornamentedobj.h
process.cpp
process.h
version.h
xlinkobj.cpp
xlinkobj.h
xml.cpp
xsltproc.cpp
     1.1 --- a/branchobj.cpp	Thu Nov 23 16:18:26 2006 +0000
     1.2 +++ b/branchobj.cpp	Fri Dec 08 20:18:56 2006 +0000
     1.3 @@ -37,25 +37,25 @@
     1.4      depth=-1;
     1.5  }
     1.6  
     1.7 -BranchObj::BranchObj (Q3Canvas* c):OrnamentedObj (c)
     1.8 +BranchObj::BranchObj (QGraphicsScene* s):OrnamentedObj (s)
     1.9  {
    1.10 -//    cout << "Const BranchObj (c)  called from MapCenterObj (c)\n";
    1.11 +//    cout << "Const BranchObj (s)  called from MapCenterObj (s)\n";
    1.12  	parObj=NULL;
    1.13 -    canvas=c;
    1.14 +    scene=s;
    1.15  }
    1.16  
    1.17 -BranchObj::BranchObj (Q3Canvas* c, LinkableMapObj* p):OrnamentedObj (c)
    1.18 +BranchObj::BranchObj (QGraphicsScene* s, LinkableMapObj* p):OrnamentedObj (s)
    1.19  {
    1.20 -//    cout << "Const BranchObj (c,p)\n";
    1.21 -    canvas=c;
    1.22 +//    cout << "Const BranchObj (s,p)\n";
    1.23 +    scene=s;
    1.24      setParObj (p);	
    1.25      depth=p->getDepth()+1;
    1.26  	if (depth==1)
    1.27  		// Calc angle to mapCenter if I am a mainbranch
    1.28  		// needed for reordering the mainbranches clockwise 
    1.29  		// around mapcenter 
    1.30 -		angle=getAngle (QPoint ((int)(x() - parObj->getChildPos().x() ), 
    1.31 -								(int)(y() - parObj->getChildPos().y() ) ) );
    1.32 +		angle=getAngle (QPointF (x() - parObj->getChildPos().x() , 
    1.33 +								(y() - parObj->getChildPos().y() ) ) );
    1.34      init();
    1.35  }
    1.36  
    1.37 @@ -93,7 +93,7 @@
    1.38  		absPos+=parObj->getChildPos();
    1.39  	}
    1.40  
    1.41 -    lastSelectedBranch=-1;
    1.42 +    lastSelectedBranch=0;
    1.43  
    1.44      setChildObj(this);
    1.45  
    1.46 @@ -171,7 +171,7 @@
    1.47  	return xlink.count();
    1.48  }
    1.49  
    1.50 -void BranchObj::setParObjTmp(LinkableMapObj* lmo, QPoint m, int off)
    1.51 +void BranchObj::setParObjTmp(LinkableMapObj* lmo, QPointF m, int off)
    1.52  {
    1.53  	// Temporary link to lmo
    1.54  	// m is position of mouse pointer 
    1.55 @@ -202,17 +202,17 @@
    1.56  	if (depth==1)
    1.57  	{	// new parent is the mapcenter itself
    1.58  
    1.59 -		QPoint p= normalise ( QPoint (m.x() - o->getChildPos().x(),
    1.60 +		QPointF p= normalise ( QPointF (m.x() - o->getChildPos().x(),
    1.61  									  m.y() - o->getChildPos().y() ));
    1.62  		if (p.x()<0) p.setX( p.x()-bbox.width() );
    1.63  		move2RelPos (p);
    1.64  	} else
    1.65  	{	
    1.66 -		int y;
    1.67 +		qreal y;
    1.68  		if (off==0)
    1.69  		{
    1.70  			// new parent is just a branch, link to it
    1.71 -			QRect t=o->getBBoxSizeWithChilds();
    1.72 +			QRectF t=o->getBBoxSizeWithChilds();
    1.73  			if (o->getLastBranch())
    1.74  				y=t.y() + t.height() ;
    1.75  			else
    1.76 @@ -547,7 +547,7 @@
    1.77      positionBBox();
    1.78  }
    1.79  
    1.80 -void BranchObj::move (QPoint p)
    1.81 +void BranchObj::move (QPointF p)
    1.82  {
    1.83  	move (p.x(), p.y());
    1.84  }
    1.85 @@ -560,7 +560,7 @@
    1.86      positionBBox();
    1.87  }
    1.88  	
    1.89 -void BranchObj::moveBy (QPoint p)
    1.90 +void BranchObj::moveBy (QPointF p)
    1.91  {
    1.92  	moveBy (p.x(), p.y());
    1.93  }
    1.94 @@ -568,13 +568,13 @@
    1.95  
    1.96  void BranchObj::positionBBox()
    1.97  {
    1.98 -	QPoint ap=getAbsPos();
    1.99 +	QPointF ap=getAbsPos();
   1.100  	bbox.moveTopLeft (ap);
   1.101  	positionContents();
   1.102  	setSelBox();
   1.103  
   1.104  	// set the frame
   1.105 -	frame->setRect(QRect(bbox.x(),bbox.y(),bbox.width(),bbox.height() ) );
   1.106 +	frame->setRect(QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ) );
   1.107  
   1.108  	// Update links to other branches
   1.109  	for (int i=0; i<xlink.size(); ++i)
   1.110 @@ -583,17 +583,17 @@
   1.111  
   1.112  void BranchObj::calcBBoxSize()
   1.113  {
   1.114 -    QSize heading_r=heading->getSize();
   1.115 -    int heading_w=(int) heading_r.width() ;
   1.116 -    int heading_h=(int) heading_r.height() ;
   1.117 -    QSize sysflags_r=systemFlags->getSize();
   1.118 -	int sysflags_h=sysflags_r.height();
   1.119 -	int sysflags_w=sysflags_r.width();
   1.120 -    QSize stanflags_r=standardFlags->getSize();
   1.121 -	int stanflags_h=stanflags_r.height();
   1.122 -	int stanflags_w=stanflags_r.width();
   1.123 -    int w;
   1.124 -    int h;
   1.125 +    QSizeF heading_r=heading->getSize();
   1.126 +    qreal heading_w=(qreal) heading_r.width() ;
   1.127 +    qreal heading_h=(qreal) heading_r.height() ;
   1.128 +    QSizeF sysflags_r=systemFlags->getSize();
   1.129 +	qreal sysflags_h=sysflags_r.height();
   1.130 +	qreal sysflags_w=sysflags_r.width();
   1.131 +    QSizeF stanflags_r=standardFlags->getSize();
   1.132 +	qreal stanflags_h=stanflags_r.height();
   1.133 +	qreal stanflags_w=stanflags_r.width();
   1.134 +    qreal w;
   1.135 +    qreal h;
   1.136  
   1.137  	// set width to sum of all widths
   1.138  	w=heading_w + sysflags_w + stanflags_w;
   1.139 @@ -602,13 +602,13 @@
   1.140  	h=max (h,heading_h);
   1.141  
   1.142  	// Save the dimension of flags and heading
   1.143 -	ornamentsBBox.setSize ( QSize(w,h));
   1.144 +	ornamentsBBox.setSize ( QSizeF(w,h));
   1.145  
   1.146  	// clickBox includes Flags and Heading
   1.147      clickBox.setSize (ornamentsBBox.size() );
   1.148  
   1.149  	// Floatimages 
   1.150 -	QPoint rp;
   1.151 +	QPointF rp;
   1.152  
   1.153  	topPad=botPad=leftPad=rightPad=0;
   1.154  	if (includeImagesVer || includeImagesHor)
   1.155 @@ -652,7 +652,7 @@
   1.156      h+=frame->getBorder();
   1.157  	
   1.158  	// Finally set size
   1.159 -    bbox.setSize (QSize (w,h));
   1.160 +    bbox.setSize (QSizeF (w,h));
   1.161  }
   1.162  
   1.163  void BranchObj::setDockPos()
   1.164 @@ -660,16 +660,16 @@
   1.165  	// Sets childpos and parpos depending on orientation
   1.166  	if (getOrientation()==OrientLeftOfCenter )
   1.167      {
   1.168 -		childPos=QPoint (ornamentsBBox.bottomLeft().x(), ornamentsBBox.bottomLeft().y() );
   1.169 -		parPos=QPoint (ornamentsBBox.bottomRight().x(),ornamentsBBox.bottomRight().y() );
   1.170 +		childPos=QPointF (ornamentsBBox.bottomLeft().x(), ornamentsBBox.bottomLeft().y() );
   1.171 +		parPos=QPointF (ornamentsBBox.bottomRight().x(),ornamentsBBox.bottomRight().y() );
   1.172      } else
   1.173      {
   1.174 -		childPos=QPoint (ornamentsBBox.bottomRight().x(), ornamentsBBox.bottomRight().y() );
   1.175 -		parPos=QPoint (ornamentsBBox.bottomLeft().x(),ornamentsBBox.bottomLeft().y() );
   1.176 +		childPos=QPointF (ornamentsBBox.bottomRight().x(), ornamentsBBox.bottomRight().y() );
   1.177 +		parPos=QPointF (ornamentsBBox.bottomLeft().x(),ornamentsBBox.bottomLeft().y() );
   1.178      }
   1.179  }
   1.180  
   1.181 -LinkableMapObj* BranchObj::findMapObj(QPoint p, LinkableMapObj* excludeLMO)
   1.182 +LinkableMapObj* BranchObj::findMapObj(QPointF p, LinkableMapObj* excludeLMO)
   1.183  {
   1.184  	// Search branches
   1.185      LinkableMapObj *lmo;
   1.186 @@ -735,7 +735,7 @@
   1.187  		return false;
   1.188  }
   1.189  
   1.190 -QString BranchObj::saveToDir (const QString &tmpdir,const QString &prefix, const QPoint& offset)
   1.191 +QString BranchObj::saveToDir (const QString &tmpdir,const QString &prefix, const QPointF& offset)
   1.192  {
   1.193  	if (hidden) return "";
   1.194  
   1.195 @@ -757,10 +757,10 @@
   1.196  	if (!((BranchObj*)(parObj))->isScrolled() )
   1.197  	{
   1.198  		areaAttr=
   1.199 -			attribut("x1",QString().setNum(absPos.x()-offset.x(),10)) +
   1.200 -			attribut("y1",QString().setNum(absPos.y()-offset.y(),10)) +
   1.201 -			attribut("x2",QString().setNum(absPos.x()+width()-offset.x(),10)) +
   1.202 -			attribut("y2",QString().setNum(absPos.y()+height()-offset.y(),10));
   1.203 +			attribut("x1",QString().setNum(absPos.x()-offset.x())) +
   1.204 +			attribut("y1",QString().setNum(absPos.y()-offset.y())) +
   1.205 +			attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
   1.206 +			attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
   1.207  
   1.208  	} else
   1.209  		areaAttr="";
   1.210 @@ -913,7 +913,7 @@
   1.211  
   1.212  FloatImageObj* BranchObj::addFloatImage ()
   1.213  {
   1.214 -	FloatImageObj *newfi=new FloatImageObj (canvas,this);
   1.215 +	FloatImageObj *newfi=new FloatImageObj (scene,this);
   1.216  	floatimage.append (newfi);
   1.217  	if (hasScrolledParent(this) )
   1.218  		newfi->setVisibility (false);
   1.219 @@ -929,7 +929,7 @@
   1.220  
   1.221  FloatImageObj* BranchObj::addFloatImage (FloatImageObj *fio)
   1.222  {
   1.223 -	FloatImageObj *newfi=new FloatImageObj (canvas,this);
   1.224 +	FloatImageObj *newfi=new FloatImageObj (scene,this);
   1.225  	floatimage.append (newfi);
   1.226  	newfi->copy (fio);
   1.227  	if (hasScrolledParent(this) )
   1.228 @@ -1000,7 +1000,7 @@
   1.229  
   1.230  BranchObj* BranchObj::addBranch()
   1.231  {
   1.232 -    BranchObj* newbo=new BranchObj(canvas,this);
   1.233 +    BranchObj* newbo=new BranchObj(scene,this);
   1.234      branch.append (newbo);
   1.235      newbo->setParObj(this);
   1.236  	newbo->setDefAttr(NewBranch);
   1.237 @@ -1016,7 +1016,7 @@
   1.238  
   1.239  BranchObj* BranchObj::addBranch(BranchObj* bo)
   1.240  {
   1.241 -    BranchObj* newbo=new BranchObj(canvas,this);
   1.242 +    BranchObj* newbo=new BranchObj(scene,this);
   1.243      branch.append (newbo);
   1.244      newbo->copy(bo);
   1.245      newbo->setParObj(this);
   1.246 @@ -1129,22 +1129,25 @@
   1.247  
   1.248  BranchObj* BranchObj::getLastSelectedBranch ()
   1.249  {
   1.250 -    if (lastSelectedBranch>=0) 
   1.251 -	{
   1.252 -		BranchObj* bo=branch.at(lastSelectedBranch);
   1.253 -		if (bo) return bo;
   1.254 -    }	
   1.255 -    return branch.first();
   1.256 +    if (lastSelectedBranch>=0 && branch.size()>0) 
   1.257 +		return branch.at(lastSelectedBranch);
   1.258 +    return NULL;
   1.259  }
   1.260  
   1.261  BranchObj* BranchObj::getFirstBranch ()
   1.262  {
   1.263 -    return branch.first();
   1.264 +	if (branch.size()>0)
   1.265 +		return branch.first();
   1.266 +	else
   1.267 +		return NULL;
   1.268  }
   1.269  
   1.270  BranchObj* BranchObj::getLastBranch ()
   1.271  {
   1.272 -    return branch.last();
   1.273 +	if (branch.size()>0)
   1.274 +		return branch.last();
   1.275 +	else
   1.276 +		return NULL;
   1.277  }
   1.278  
   1.279  BranchObj* BranchObj::getBranchNum (int i)
   1.280 @@ -1238,9 +1241,9 @@
   1.281  	}	
   1.282  }
   1.283  
   1.284 -void BranchObj::alignRelativeTo (QPoint ref)
   1.285 +void BranchObj::alignRelativeTo (QPointF ref)
   1.286  {
   1.287 -	int th = bboxTotal.height();	
   1.288 +	qreal th = bboxTotal.height();	
   1.289  // TODO testing
   1.290  /*
   1.291  	cout << "BO::alignRelTo "<<getHeading().ascii()<<endl;
   1.292 @@ -1269,7 +1272,7 @@
   1.293  			// Calc angle to mapCenter if I am a mainbranch
   1.294  			// needed for reordering the mainbranches clockwise 
   1.295  			// around mapcenter 
   1.296 -			angle=getAngle (QPoint ((int)(x() - parObj->getChildPos().x() ), 
   1.297 +			angle=getAngle (QPointF ((int)(x() - parObj->getChildPos().x() ), 
   1.298  									(int)(y() - parObj->getChildPos().y() ) ) );
   1.299  		}							
   1.300  	} 
   1.301 @@ -1296,7 +1299,7 @@
   1.302  	if (scrolled) return;
   1.303  
   1.304      // Set reference point for alignment of childs
   1.305 -    QPoint ref2;
   1.306 +    QPointF ref2;
   1.307      if (orientation==OrientLeftOfCenter)
   1.308  		ref2.setX(bbox.topLeft().x() - linkwidth);
   1.309      else	
   1.310 @@ -1336,11 +1339,11 @@
   1.311  		// changes its height,
   1.312  		// all upper LMOs have to change, too.
   1.313  		calcBBoxSizeWithChilds();
   1.314 -		updateLink();	// This update is needed if the canvas is resized 
   1.315 +		updateLink();	// This update is needed if the scene is resized 
   1.316  						// due to excessive moving of a FIO
   1.317  						// FIXME really needed? reposition is also called from updateLink...
   1.318  
   1.319 -	    alignRelativeTo ( QPoint (absPos.x(),
   1.320 +	    alignRelativeTo ( QPointF (absPos.x(),
   1.321  			absPos.y()-(bboxTotal.height()-bbox.height())/2) );
   1.322  		//FIXME branch.sort();	
   1.323  		positionBBox();	// Reposition bbox and contents
   1.324 @@ -1348,7 +1351,7 @@
   1.325  	{
   1.326  		// This is only important for moving branches:
   1.327  		// For editing a branch it isn't called...
   1.328 -	    alignRelativeTo ( QPoint (absPos.x(),
   1.329 +	    alignRelativeTo ( QPointF (absPos.x(),
   1.330  							absPos.y()-(bboxTotal.height()-bbox.height())/2) );
   1.331  	}
   1.332  }
   1.333 @@ -1361,9 +1364,9 @@
   1.334  }
   1.335  
   1.336  
   1.337 -QRect BranchObj::getTotalBBox()
   1.338 +QRectF BranchObj::getTotalBBox()
   1.339  {
   1.340 -	QRect r=bbox;
   1.341 +	QRectF r=bbox;
   1.342  
   1.343  	if (scrolled) return r;
   1.344  
   1.345 @@ -1378,7 +1381,7 @@
   1.346  	return r;
   1.347  }
   1.348  
   1.349 -QRect BranchObj::getBBoxSizeWithChilds()
   1.350 +QRectF BranchObj::getBBoxSizeWithChilds()
   1.351  {
   1.352  	return bboxTotal;
   1.353  }
   1.354 @@ -1419,8 +1422,8 @@
   1.355  		return;
   1.356  	}
   1.357  	
   1.358 -	QRect r(0,0,0,0);
   1.359 -	QRect br;
   1.360 +	QRectF r(0,0,0,0);
   1.361 +	QRectF br;
   1.362  	// Now calculate recursivly
   1.363  	// sum of heights 
   1.364  	// maximum of widths 
     2.1 --- a/branchobj.h	Thu Nov 23 16:18:26 2006 +0000
     2.2 +++ b/branchobj.h	Fri Dec 08 20:18:56 2006 +0000
     2.3 @@ -14,8 +14,8 @@
     2.4  class BranchObj:public OrnamentedObj {
     2.5  public:
     2.6      BranchObj ();
     2.7 -    BranchObj (Q3Canvas*);
     2.8 -    BranchObj (Q3Canvas*, LinkableMapObj* parent);
     2.9 +    BranchObj (QGraphicsScene*);
    2.10 +    BranchObj (QGraphicsScene*, LinkableMapObj* parent);
    2.11      ~BranchObj ();
    2.12  	bool operator< ( const BranchObj & );
    2.13  	bool operator== ( const BranchObj & );
    2.14 @@ -28,7 +28,7 @@
    2.15  	virtual int countBranches();		
    2.16  	virtual int countFloatImages();		
    2.17  	virtual int countXLinks();		
    2.18 -    virtual void setParObjTmp (LinkableMapObj*,QPoint,int);// Only for moving Obj around
    2.19 +    virtual void setParObjTmp (LinkableMapObj*,QPointF,int);// Only for moving Obj around
    2.20  	virtual void unsetParObjTmp();			// reuse original ParObj
    2.21  
    2.22  	virtual void unScroll();				
    2.23 @@ -50,19 +50,19 @@
    2.24  
    2.25  	virtual void positionContents();
    2.26      virtual void move (double x,double y);
    2.27 -    virtual void move (QPoint);
    2.28 +    virtual void move (QPointF);
    2.29      virtual void moveBy (double x,double y);
    2.30 -    virtual void moveBy (QPoint);
    2.31 +    virtual void moveBy (QPointF);
    2.32      virtual void positionBBox();
    2.33      virtual void calcBBoxSize();
    2.34  	virtual void setDockPos();
    2.35 -    virtual LinkableMapObj* findMapObj(QPoint,LinkableMapObj*);	// find MapObj 
    2.36 +    virtual LinkableMapObj* findMapObj(QPointF,LinkableMapObj*);	// find MapObj 
    2.37      virtual void setHeading (QString);
    2.38  
    2.39  	virtual void setHideTmp (HideTmpMode);
    2.40  	virtual bool hasHiddenExportParent (BranchObj*);
    2.41  
    2.42 -	virtual QString saveToDir (const QString&,const QString&, const QPoint&);// Save data recursivly to tempdir
    2.43 +	virtual QString saveToDir (const QString&,const QString&, const QPointF&);// Save data recursivly to tempdir
    2.44  	virtual void addXLink (XLinkObj*);
    2.45  	virtual void removeXLinkRef (XLinkObj*);// Remove ref in list
    2.46  	virtual void deleteXLink (XLinkObj*);	// remove references and delete XLinkObj 
    2.47 @@ -105,12 +105,12 @@
    2.48      virtual bool canMoveBranchDown();
    2.49      virtual BranchObj* moveBranchDown(BranchObj*);
    2.50      virtual BranchObj* moveBranchTo (BranchObj*, int);
    2.51 -    virtual void alignRelativeTo(const QPoint );
    2.52 +    virtual void alignRelativeTo(const QPointF );
    2.53  	virtual void reposition();
    2.54  	virtual void unsetAllRepositionRequests();
    2.55  
    2.56 -	virtual QRect getTotalBBox();			// return BBox including childs			
    2.57 -	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
    2.58 +	virtual QRectF getTotalBBox();			// return BBox including childs			
    2.59 +	virtual QRectF getBBoxSizeWithChilds();	// return size of BBox including childs  
    2.60  	virtual void calcBBoxSizeWithChilds();	// calc size of  BBox including childs recursivly
    2.61  
    2.62      virtual void select();
     3.1 Binary file demos/todo.vym has changed
     4.1 --- a/exportxhtmldialog.cpp	Thu Nov 23 16:18:26 2006 +0000
     4.2 +++ b/exportxhtmldialog.cpp	Fri Dec 08 20:18:56 2006 +0000
     4.3 @@ -386,17 +386,16 @@
     4.4  	spath.replace ("%f",fpath);
     4.5  	QStringList args=QStringList::split (' ',spath,false);
     4.6  		
     4.7 -	scriptProc->clearArguments();
     4.8 -	scriptProc->setArguments (args);	
     4.9 -	p.addOutput ("vym is executing: \n" + scriptProc->arguments().join(" ") );	
    4.10 -	if (!scriptProc->start() )
    4.11 +	p.addOutput ("vym is executing: \n" + spath+" "+args.join(" ") );	
    4.12 +	scriptProc->start (spath,args);
    4.13 +	if (!scriptProc->waitForStarted() )
    4.14  	{
    4.15  		QMessageBox::critical( 0, tr( "Critical Error" ),
    4.16  					   tr("Could not start %1").arg(spath) );
    4.17  	} else
    4.18  	{
    4.19  		scriptProc->waitFinished();
    4.20 -		if (!scriptProc->normalExit() )
    4.21 +		if (scriptProc->exitStatus()!=QProcess::NormalExit )
    4.22  			QMessageBox::critical( 0, tr( "Critical Error" ),
    4.23  			   tr("%1 didn't exit normally").arg(spath) +
    4.24  			   scriptProc->getErrout() );
     5.1 --- a/file.cpp	Thu Nov 23 16:18:26 2006 +0000
     5.2 +++ b/file.cpp	Fri Dec 08 20:18:56 2006 +0000
     5.3 @@ -1,6 +1,4 @@
     5.4 -#include <qobject.h>
     5.5 -#include <qmessagebox.h>
     5.6 -//Added by qt3to4:
     5.7 +#include <QMessageBox>
     5.8  #include <QPixmap>
     5.9  #include <QLabel>
    5.10  #include <QTextStream>
    5.11 @@ -141,15 +139,15 @@
    5.12  	ErrorCode err=success;
    5.13  	
    5.14  	// zip the temporary directory
    5.15 +	QStringList args;
    5.16  	Process *zipProc=new Process ();
    5.17 -	zipProc->clearArguments();
    5.18 -	zipProc->setWorkingDirectory (QDir(zipDir));
    5.19 -	zipProc->addArgument ("zip");
    5.20 -	zipProc->addArgument ("-r");
    5.21 -	zipProc->addArgument (zipName);
    5.22 -	zipProc->addArgument (".");
    5.23 +	zipProc->setWorkingDirectory (zipDir.path());
    5.24 +	args <<"-r";
    5.25 +	args <<zipName;
    5.26 +	args <<".";
    5.27  
    5.28 -	if (!zipProc->start() )
    5.29 +	zipProc->start ("zip",args);
    5.30 +	if (!zipProc->waitForStarted() )
    5.31  	{	
    5.32  		// zip could not be started
    5.33  		QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
    5.34 @@ -158,8 +156,8 @@
    5.35  	} else
    5.36  	{
    5.37  		// zip could be started
    5.38 -		zipProc->waitFinished();
    5.39 -		if (!zipProc->normalExit() )
    5.40 +		zipProc->waitForFinished();
    5.41 +		if (zipProc->exitStatus()!=QProcess::NormalExit )
    5.42  		{
    5.43  			QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
    5.44  						   QObject::tr("zip didn't exit normally")+
    5.45 @@ -167,10 +165,10 @@
    5.46  			err=aborted;
    5.47  		} else
    5.48  		{
    5.49 -			if (zipProc->exitStatus()>0)
    5.50 +			if (zipProc->exitCode()>0)
    5.51  			{
    5.52  				QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
    5.53 -						   QString("zip exit code:  %1").arg(zipProc->exitStatus() )+
    5.54 +						   QString("zip exit code:  %1").arg(zipProc->exitCode() )+
    5.55  						   "\n" + zipProc->getErrout() );
    5.56  				err=aborted;
    5.57  			}
    5.58 @@ -184,16 +182,16 @@
    5.59  	ErrorCode err=success;
    5.60  
    5.61  	// Try to unzip file
    5.62 +	QStringList args;
    5.63  	Process *zipProc=new Process ();
    5.64 -	zipProc->clearArguments();
    5.65 -	zipProc->setWorkingDirectory (zipDir);
    5.66 -	zipProc->addArgument ("unzip");
    5.67 -	zipProc->addArgument ("-o");	// overwrite existing files!
    5.68 -	zipProc->addArgument (zipName );
    5.69 -	zipProc->addArgument ("-d");
    5.70 -	zipProc->addArgument (zipDir.path());
    5.71 +	zipProc->setWorkingDirectory (zipDir.path());
    5.72 +	args << "-o";	// overwrite existing files!
    5.73 +	args << zipName ;
    5.74 +	args << "-d";
    5.75 +	args << zipDir.path();
    5.76  
    5.77 -	if (!zipProc->start() )
    5.78 +	zipProc->start ("unzip",args);
    5.79 +	if (!zipProc->waitForStarted() )
    5.80  	{
    5.81  		QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
    5.82  					   QObject::tr("Couldn't start unzip to decompress data."));
    5.83 @@ -201,8 +199,8 @@
    5.84  		
    5.85  	} else
    5.86  	{
    5.87 -		zipProc->waitFinished();
    5.88 -		if (!zipProc->normalExit() )
    5.89 +		zipProc->waitForFinished();
    5.90 +		if (zipProc->exitStatus()!=QProcess::NormalExit )
    5.91  		{
    5.92  			QMessageBox::critical( 0,QObject::tr( "Critical Error" ),
    5.93  						   QObject::tr("unzip didn't exit normally") +
    5.94 @@ -210,7 +208,7 @@
    5.95  			err=aborted;
    5.96  		} else
    5.97  		{
    5.98 -			if (zipProc->exitStatus()>0)
    5.99 +			if (zipProc->exitCode()>0)
   5.100  			{
   5.101  				if (zipProc->exitStatus()==9)
   5.102  					// no zipped file, but maybe .xml or old version? Try again.
   5.103 @@ -218,7 +216,7 @@
   5.104  				else	
   5.105  				{
   5.106  					QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
   5.107 -								   QString("unzip exit code:  %1").arg(zipProc->exitStatus() ) +
   5.108 +								   QString("unzip exit code:  %1").arg(zipProc->exitCode() ) +
   5.109  								   zipProc->getErrout() );
   5.110  					err=aborted;
   5.111  				}
     6.1 --- a/flagobj.cpp	Thu Nov 23 16:18:26 2006 +0000
     6.2 +++ b/flagobj.cpp	Fri Dec 08 20:18:56 2006 +0000
     6.3 @@ -9,9 +9,9 @@
     6.4      init ();
     6.5  }
     6.6  
     6.7 -FlagObj::FlagObj(Q3Canvas* c):MapObj(c) 
     6.8 +FlagObj::FlagObj(QGraphicsScene* s):MapObj(s) 
     6.9  {
    6.10 -//	cout << "Const FlagObj  canvas="<<c<<endl;
    6.11 +//	cout << "Const FlagObj  this="<<this<<"  scene="<<s<<endl;
    6.12      init ();
    6.13  }
    6.14  
    6.15 @@ -22,7 +22,7 @@
    6.16  
    6.17  FlagObj::~FlagObj()
    6.18  {
    6.19 -//    cout << "Destr FlagObj  " << name.ascii() << "\n";
    6.20 +//    cout << "Destr FlagObj  this="<<this <<"  " << name.ascii() << "\n";
    6.21  	if (icon) delete (icon);
    6.22  }
    6.23  
    6.24 @@ -32,8 +32,8 @@
    6.25  	name="undefined";
    6.26  	group="undefined";
    6.27  
    6.28 -	icon=new ImageObj (canvas);
    6.29 -	icon->move (absPos.x(), absPos.y() );
    6.30 +	icon=new ImageObj (scene);
    6.31 +	icon->setPos (absPos.x(), absPos.y() );
    6.32  	state=false;
    6.33  	action=NULL;
    6.34  }
    6.35 @@ -53,7 +53,7 @@
    6.36  void FlagObj::move(double x, double y)
    6.37  {
    6.38      MapObj::move(x,y);
    6.39 -	icon->move(x,y);
    6.40 +	icon->setPos(x,y);
    6.41  	positionBBox();
    6.42  }
    6.43  
    6.44 @@ -117,7 +117,7 @@
    6.45  
    6.46  QPixmap FlagObj::getPixmap()
    6.47  {
    6.48 -	return icon->getPixmap();
    6.49 +	return icon->pixmap();
    6.50  }
    6.51  
    6.52  void FlagObj::setAction (QAction* a)
    6.53 @@ -150,6 +150,8 @@
    6.54  	if (visible) 
    6.55  	{
    6.56  		icon->setVisibility (true);
    6.57 +		//icon->setPos (100,100);
    6.58 +		//icon->setPos (rand()%100,rand()%130);
    6.59  		calcBBoxSize();
    6.60  	}	
    6.61  }
    6.62 @@ -191,12 +193,12 @@
    6.63  {
    6.64  	if (visible && state)
    6.65  	{
    6.66 -		bbox.setSize (	QSize(
    6.67 +		bbox.setSize (	QSizeF(
    6.68  			icon->boundingRect().width(), 
    6.69  			icon->boundingRect().height() ) );
    6.70  	} else
    6.71  	{
    6.72 -		bbox.setSize (QSize(0,0));
    6.73 +		bbox.setSize (QSizeF(0,0));
    6.74  	}
    6.75  	clickBox.setSize (bbox.size());
    6.76  }
     7.1 --- a/flagobj.h	Thu Nov 23 16:18:26 2006 +0000
     7.2 +++ b/flagobj.h	Fri Dec 08 20:18:56 2006 +0000
     7.3 @@ -2,9 +2,7 @@
     7.4  #define FLAGOBJ_H
     7.5  
     7.6  
     7.7 -#include <q3canvas.h>
     7.8 -#include <qaction.h>
     7.9 -//Added by qt3to4:
    7.10 +#include <QAction>
    7.11  #include <QPixmap>
    7.12  
    7.13  #include "mapobj.h"
    7.14 @@ -14,7 +12,7 @@
    7.15  class FlagObj:public MapObj {
    7.16  public:
    7.17      FlagObj ();
    7.18 -    FlagObj (Q3Canvas*);
    7.19 +    FlagObj (QGraphicsScene*);
    7.20      FlagObj (FlagObj*);
    7.21      ~FlagObj ();
    7.22      virtual void init ();
     8.1 --- a/flagrowobj.cpp	Thu Nov 23 16:18:26 2006 +0000
     8.2 +++ b/flagrowobj.cpp	Fri Dec 08 20:18:56 2006 +0000
     8.3 @@ -11,9 +11,9 @@
     8.4      init ();
     8.5  }
     8.6  
     8.7 -FlagRowObj::FlagRowObj(Q3Canvas* c):MapObj(c) 
     8.8 +FlagRowObj::FlagRowObj(QGraphicsScene* s):MapObj(s) 
     8.9  {
    8.10 -//    cout << "Const FlagRowObj\n";
    8.11 +//    cout << "Const FlagRowObj (s)\n";
    8.12      init ();
    8.13  }
    8.14  
    8.15 @@ -53,11 +53,11 @@
    8.16  void FlagRowObj::move(double x, double y)
    8.17  {
    8.18      MapObj::move(x,y);
    8.19 -	int dx=0;
    8.20 +	qreal dx=0;
    8.21  	for (int i=0; i<flag.size(); ++i)
    8.22  	{
    8.23  		flag.at(i)->move(x+dx,y);
    8.24 -		dx+=QSize(flag.at(i)->getSize() ).width();
    8.25 +		dx+=QSizeF(flag.at(i)->getSize() ).width();
    8.26  	}
    8.27  }
    8.28  
    8.29 @@ -75,9 +75,9 @@
    8.30  
    8.31  FlagObj* FlagRowObj::addFlag (FlagObj *fo)
    8.32  {
    8.33 -	FlagObj *newfo=new FlagObj (canvas);
    8.34 +	FlagObj *newfo=new FlagObj (scene);
    8.35 +	newfo->copy (fo);	// create a deep copy of fo
    8.36  	newfo->move (absPos.x() + bbox.width(), absPos.y() );
    8.37 -	newfo->copy (fo);	// create a deep copy of fo
    8.38  	flag.append(newfo);
    8.39  	calcBBoxSize();
    8.40  	positionBBox();
    8.41 @@ -92,8 +92,8 @@
    8.42  
    8.43  void FlagRowObj::calcBBoxSize()
    8.44  {
    8.45 -	QSize size(0,0);
    8.46 -	QSize boxsize(0,0);
    8.47 +	QSizeF size(0,0);
    8.48 +	QSizeF boxsize(0,0);
    8.49  	for (int i=0; i<flag.size(); ++i)
    8.50  	{
    8.51  		size=flag.at(i)->getSize();
    8.52 @@ -107,7 +107,7 @@
    8.53  	clickBox.setSize (boxsize);
    8.54  }
    8.55  
    8.56 -QString FlagRowObj::getFlagName (const QPoint &p)
    8.57 +QString FlagRowObj::getFlagName (const QPointF &p)
    8.58  {
    8.59  	if (!inBox (p)) return "";
    8.60  	for (int i=0; i<flag.size(); ++i)
    8.61 @@ -135,6 +135,7 @@
    8.62  		// FlagObj is here, it will be active, too.
    8.63  		// Deactivate it by removing it from this row.
    8.64  		flag.remove (fo);
    8.65 +		delete (fo);
    8.66  	} else
    8.67  	{
    8.68  		// FlagObj is not present in this row.
    8.69 @@ -197,7 +198,11 @@
    8.70  void FlagRowObj::deactivate (const QString &foname)
    8.71  {
    8.72  	FlagObj *fo=findFlag (foname);
    8.73 -	if (fo) flag.remove(fo);
    8.74 +	if (fo) 
    8.75 +	{
    8.76 +		flag.remove(fo);
    8.77 +		delete (fo);
    8.78 +	}	
    8.79  	calcBBoxSize();
    8.80  	positionBBox();
    8.81  }
    8.82 @@ -207,7 +212,7 @@
    8.83  	if (!parentRow)
    8.84  	{
    8.85  		for (int i=0; i<flag.size(); ++i)
    8.86 -			flag.at(i)->deactivate();
    8.87 +			if (flag.at(i)->isActive()) flag.at(i)->deactivate();
    8.88  	} else
    8.89  		qWarning ("FlagRowObj::deactivateAll mustn't be called for ordinary rows");
    8.90  }
    8.91 @@ -222,7 +227,11 @@
    8.92  		{
    8.93  			for (int i=0; i<flag.size(); ++i)
    8.94  				if (g==flag.at(i)->getGroup() && keepfo!=flag.at(i)) 
    8.95 +				{
    8.96  					flag.remove(flag.at(i));
    8.97 +					//FIXME also delete flags
    8.98 +					//and better only delete flags that are really set
    8.99 +				}	
   8.100  		}		
   8.101  	}	
   8.102  }
     9.1 --- a/flagrowobj.h	Thu Nov 23 16:18:26 2006 +0000
     9.2 +++ b/flagrowobj.h	Fri Dec 08 20:18:56 2006 +0000
     9.3 @@ -9,7 +9,7 @@
     9.4  class FlagRowObj:public QObject,public MapObj {
     9.5  public:
     9.6      FlagRowObj ();
     9.7 -    FlagRowObj (Q3Canvas*);
     9.8 +    FlagRowObj (QGraphicsScene *);
     9.9      ~FlagRowObj ();
    9.10      virtual void init ();
    9.11      virtual void copy (FlagRowObj*);
    9.12 @@ -20,7 +20,7 @@
    9.13      virtual FlagObj* addFlag (FlagObj *fo);			// make deep copy of FlagObj
    9.14      virtual void positionBBox();
    9.15      virtual void calcBBoxSize();
    9.16 -	virtual QString getFlagName (const QPoint &p);	// Find flag by position
    9.17 +	virtual QString getFlagName (const QPointF &p);	// Find flag by position
    9.18  	bool isActive(const QString&);
    9.19  	void toggle (const QString&,bool);
    9.20  	void activate(const QString&);
    10.1 --- a/floatimageobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    10.2 +++ b/floatimageobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    10.3 @@ -1,8 +1,8 @@
    10.4 +#include <QImageReader>
    10.5 +#include <QPixmap>
    10.6 +
    10.7  #include "floatimageobj.h"
    10.8  #include "branchobj.h"
    10.9 -//Added by qt3to4:
   10.10 -#include <QPixmap>
   10.11 -
   10.12  
   10.13  /////////////////////////////////////////////////////////////////
   10.14  // FloatImageObj
   10.15 @@ -19,15 +19,15 @@
   10.16      depth=-1;
   10.17  }
   10.18  
   10.19 -FloatImageObj::FloatImageObj (Q3Canvas* c):FloatObj(c)
   10.20 +FloatImageObj::FloatImageObj (QGraphicsScene* s):FloatObj(s)
   10.21  {
   10.22 - //   cout << "Const FloatImageObj (c)  called from MapCenterObj (c)\n";
   10.23 + //   cout << "Const FloatImageObj (s)  called from MapCenterObj (s)\n";
   10.24      setParObj (this);	
   10.25      init();
   10.26      depth=-1;
   10.27  }
   10.28  
   10.29 -FloatImageObj::FloatImageObj (Q3Canvas* c, OrnamentedObj* p):FloatObj(c,p)
   10.30 +FloatImageObj::FloatImageObj (QGraphicsScene *s, OrnamentedObj* p):FloatObj(s,p)
   10.31  {
   10.32   //   cout << "Const FloatImageObj (c,p)\n";
   10.33      init();
   10.34 @@ -41,13 +41,12 @@
   10.35  
   10.36  void FloatImageObj::init () 
   10.37  {
   10.38 -	icon=new ImageObj (canvas);
   10.39 -	icon->move (absPos.x(), absPos.y() );
   10.40 +	icon=new ImageObj (scene);
   10.41 +	icon->setPos (absPos.x(), absPos.y() );
   10.42  	icon->setVisibility (true);
   10.43 -	setZ (Z_FLOATIMG);
   10.44 -	bbox.setSize (QSize(icon->size().width(), icon->size().height()));
   10.45 -	clickBox.setSize (QSize(icon->size().width(), icon->size().height()));
   10.46 -	filename="";
   10.47 +	setZValue (Z_FLOATIMG);
   10.48 +	bbox.setSize (QSizeF(icon->boundingRect().width(), icon->boundingRect().height()));
   10.49 +	clickBox.setSize (QSizeF(icon->boundingRect().width(), icon->boundingRect().height()));filename="";
   10.50  	originalFilename="no original name available";
   10.51  	filetype="";
   10.52  	saveInMap=true;
   10.53 @@ -68,35 +67,41 @@
   10.54      positionBBox();
   10.55  }
   10.56  
   10.57 -void FloatImageObj::setZ (const int &i)
   10.58 +void FloatImageObj::setZValue (const int &i)
   10.59  {
   10.60 -	icon->setZ (i);
   10.61 +	icon->setZValue (i);
   10.62  	zPlane=i;
   10.63  }
   10.64  
   10.65  int FloatImageObj::z ()
   10.66  {
   10.67 -	return qRound (icon->z());
   10.68 +	return qRound (icon->zValue());
   10.69  }
   10.70  
   10.71  void FloatImageObj::load (const QPixmap &pixmap)
   10.72  {
   10.73 -  icon->load(pixmap);
   10.74 -  bbox.setSize (QSize(icon->size().width()+8, icon->size().height()+8));
   10.75 -  clickBox.setSize (QSize(icon->size().width()+8, icon->size().height()+8));
   10.76 -  positionBBox();
   10.77 -  filetype="PNG";
   10.78 -  filename="No filename given";
   10.79 +	icon->load(pixmap);
   10.80 +	bbox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
   10.81 +	clickBox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
   10.82 +	selbox->setRect(0,0,clickBox.width(),clickBox.height());
   10.83 +	positionBBox();
   10.84 +	filetype="PNG";
   10.85 +	filename="No filename given";
   10.86  }
   10.87  
   10.88  bool FloatImageObj::load (const QString &fn)
   10.89  {	
   10.90 -	if( icon->load (fn))
   10.91 +	QImageReader reader (fn);
   10.92 +	QImage img;
   10.93 +
   10.94 +	if( reader.read (&img))
   10.95  	{
   10.96 -		bbox.setSize (QSize(icon->size().width()+8, icon->size().height()+8));
   10.97 +		icon->setPixmap(QPixmap::fromImage(img));
   10.98 +		bbox.setSize (QSizeF(icon->boundingRect().width()+8, icon->boundingRect().height()+8));
   10.99 +		selbox->setRect(0,0,clickBox.width(),clickBox.height());
  10.100  		positionBBox();
  10.101  		filename=fn;
  10.102 -//FIXME QT3 was		filetype=QPixmap::imageFormat (fn);
  10.103 +		filetype=reader.format();
  10.104  		setOriginalFilename (fn);
  10.105  		return true;
  10.106  	} else
  10.107 @@ -135,18 +140,19 @@
  10.108  void FloatImageObj::move (double x, double y)
  10.109  {
  10.110  	FloatObj::move(x,y);
  10.111 -	icon->move (x+4,y+4);
  10.112 +	icon->setPos (x+4,y+4);
  10.113      positionBBox();
  10.114  }
  10.115  
  10.116 -void FloatImageObj::move (QPoint p)
  10.117 +void FloatImageObj::move (QPointF p)
  10.118  {
  10.119 -	move (p.x(), p.y());
  10.120 +	OrnamentedObj::move (p.x(),p.y());
  10.121  }
  10.122  
  10.123  void FloatImageObj::positionBBox()
  10.124  {
  10.125  	clickBox=bbox;
  10.126 +	setSelBox();
  10.127  }
  10.128  
  10.129  void FloatImageObj::calcBBoxSize()
  10.130 @@ -206,12 +212,12 @@
  10.131  }
  10.132  
  10.133  
  10.134 -QRect FloatImageObj::getTotalBBox()
  10.135 +QRectF FloatImageObj::getTotalBBox()
  10.136  {
  10.137  	return bbox;
  10.138  }
  10.139  
  10.140 -QRect FloatImageObj::getBBoxSizeWithChilds()
  10.141 +QRectF FloatImageObj::getBBoxSizeWithChilds()
  10.142  {
  10.143  	//FIXME  abstract in linkablemapobj.h, not calculated
  10.144  	return bboxTotal;
    11.1 --- a/floatimageobj.h	Thu Nov 23 16:18:26 2006 +0000
    11.2 +++ b/floatimageobj.h	Fri Dec 08 20:18:56 2006 +0000
    11.3 @@ -9,12 +9,12 @@
    11.4  class FloatImageObj:public FloatObj {
    11.5  public:
    11.6      FloatImageObj ();
    11.7 -    FloatImageObj (Q3Canvas*);
    11.8 -    FloatImageObj (Q3Canvas*, OrnamentedObj* parent);
    11.9 +    FloatImageObj (QGraphicsScene*);
   11.10 +    FloatImageObj (QGraphicsScene*, OrnamentedObj* parent);
   11.11      ~FloatImageObj ();
   11.12      virtual void init ();
   11.13      virtual void copy (FloatImageObj*);
   11.14 -	virtual void setZ (const int&);
   11.15 +	virtual void setZValue (const int&);
   11.16  	virtual int z();
   11.17  
   11.18  	virtual void load (const QPixmap &);
   11.19 @@ -24,11 +24,11 @@
   11.20  	virtual QString getOriginalFilename();
   11.21      virtual void setVisibility(bool);	    // set vis. for w
   11.22      virtual void move (double x,double y);
   11.23 -    virtual void move (QPoint);
   11.24 +    virtual void move (QPointF);
   11.25  	virtual void positionBBox();
   11.26  	virtual void calcBBoxSize();
   11.27 -	virtual QRect getTotalBBox();			// return BBox including childs			
   11.28 -	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
   11.29 +	virtual QRectF getTotalBBox();			// return BBox including childs			
   11.30 +	virtual QRectF getBBoxSizeWithChilds();	// return size of BBox including childs  
   11.31  	virtual void calcBBoxSizeWithChilds();	// calc size of  BBox including childs recursivly
   11.32  	virtual QString saveToDir(const QString &,const QString&);
   11.33  	virtual void resetSaveCounter();
    12.1 --- a/floatobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    12.2 +++ b/floatobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    12.3 @@ -14,17 +14,17 @@
    12.4      depth=-1;
    12.5  }
    12.6  
    12.7 -FloatObj::FloatObj (Q3Canvas* c):OrnamentedObj(c)
    12.8 +FloatObj::FloatObj (QGraphicsScene* s):OrnamentedObj(s)
    12.9  {
   12.10 -//	cout << "Const FloatObj (c)  called from MapCenterObj (c)\n";
   12.11 +//	cout << "Const FloatObj (s)  called from MapCenterObj (s)\n";
   12.12      setParObj (this);	
   12.13      init();
   12.14      depth=-1;
   12.15  }
   12.16  
   12.17 -FloatObj::FloatObj (Q3Canvas* c, LinkableMapObj* p):OrnamentedObj (c)
   12.18 +FloatObj::FloatObj (QGraphicsScene* s, LinkableMapObj* p):OrnamentedObj (s)
   12.19  {
   12.20 -//    cout << "Const FloatObj (c,p)\n";
   12.21 +//    cout << "Const FloatObj (s,p)\n";
   12.22      setParObj (p);	
   12.23      depth=p->getDepth()+1;
   12.24      init();
   12.25 @@ -50,12 +50,12 @@
   12.26  	setVisibility (other->visible);
   12.27  }
   12.28  
   12.29 -void FloatObj::setZ(const int &i)
   12.30 +void FloatObj::setZValue(const int &i)
   12.31  {
   12.32  	zPlane=i;
   12.33  }
   12.34  
   12.35 -int FloatObj::z()
   12.36 +int FloatObj::zValue()
   12.37  {
   12.38  	return zPlane;
   12.39  }
   12.40 @@ -73,12 +73,14 @@
   12.41  void FloatObj::move (double x, double y)
   12.42  {
   12.43  	MapObj::move(x,y);
   12.44 -	selbox->move(x,y);
   12.45 +	//selbox->setPos(x,y);
   12.46 +	selbox->rect().moveTo (QPointF (x,y));
   12.47  }
   12.48  
   12.49 -void FloatObj::move (QPoint p)
   12.50 +void FloatObj::move (QPointF p)
   12.51  {
   12.52 -	move (p.x(), p.y());
   12.53 +	MapObj::move (p);
   12.54 +	selbox->rect().moveTo (p);
   12.55  }
   12.56  
   12.57  void FloatObj::setDockPos()
   12.58 @@ -93,12 +95,12 @@
   12.59  	updateLink();	
   12.60  }
   12.61  
   12.62 -QRect FloatObj::getTotalBBox()
   12.63 +QRectF FloatObj::getTotalBBox()
   12.64  {
   12.65  	return bbox;
   12.66  }
   12.67  
   12.68 -QRect FloatObj::getBBoxSizeWithChilds()
   12.69 +QRectF FloatObj::getBBoxSizeWithChilds()
   12.70  {
   12.71  	return bboxTotal;
   12.72  }
    13.1 --- a/floatobj.h	Thu Nov 23 16:18:26 2006 +0000
    13.2 +++ b/floatobj.h	Fri Dec 08 20:18:56 2006 +0000
    13.3 @@ -7,24 +7,24 @@
    13.4  class FloatObj:public OrnamentedObj {
    13.5  public:
    13.6      FloatObj ();
    13.7 -    FloatObj (Q3Canvas*);
    13.8 -    FloatObj (Q3Canvas*, LinkableMapObj* parent);
    13.9 +    FloatObj (QGraphicsScene*);
   13.10 +    FloatObj (QGraphicsScene*, LinkableMapObj* parent);
   13.11      ~FloatObj ();
   13.12      virtual void init ();
   13.13      virtual void copy (FloatObj*);
   13.14  	virtual bool load (const QString&)=0;
   13.15 -	virtual void setZ(const int&);		// set zPlane
   13.16 -	virtual int z();
   13.17 +	virtual void setZValue(const int&);		// set zPlane
   13.18 +	virtual int zValue();
   13.19  	virtual void setFloatExport (const bool &);
   13.20  	virtual bool getFloatExport ();
   13.21  
   13.22  	virtual void move (double,double);
   13.23 -	virtual void move (QPoint);
   13.24 +	virtual void move (QPointF);
   13.25  	virtual void setDockPos();
   13.26  	virtual void reposition();
   13.27  											
   13.28 -	virtual QRect getTotalBBox();			// return BBox including childs			
   13.29 -	virtual QRect getBBoxSizeWithChilds();	// return size of BBox including childs  
   13.30 +	virtual QRectF getTotalBBox();			// return BBox including childs			
   13.31 +	virtual QRectF getBBoxSizeWithChilds();	// return size of BBox including childs  
   13.32  
   13.33  	virtual void resetSaveCounter()=0;
   13.34  
    14.1 --- a/frameobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    14.2 +++ b/frameobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    14.3 @@ -11,7 +11,7 @@
    14.4      init ();
    14.5  }
    14.6  
    14.7 -FrameObj::FrameObj(Q3Canvas* c) :MapObj(c)
    14.8 +FrameObj::FrameObj(QGraphicsScene *s) :MapObj(s)
    14.9  {
   14.10  //    cout << "Const FrameObj\n";
   14.11      init ();
   14.12 @@ -49,7 +49,7 @@
   14.13  		case NoFrame:
   14.14  			break;
   14.15  		case Rectangle:
   14.16 -			rectFrame->move (x,y);
   14.17 +			rectFrame->setPos (x,y);
   14.18  			break;
   14.19      }
   14.20  }
   14.21 @@ -67,7 +67,7 @@
   14.22  {
   14.23  }
   14.24  
   14.25 -void FrameObj::setRect(const QRect &r)
   14.26 +void FrameObj::setRect(const QRectF &r)
   14.27  {
   14.28  	bbox=r;
   14.29      switch (type)
   14.30 @@ -75,9 +75,7 @@
   14.31  		case NoFrame:
   14.32  			break;
   14.33  		case Rectangle:
   14.34 -			rectFrame->setX (bbox.x() );
   14.35 -			rectFrame->setY (bbox.y() );
   14.36 -			rectFrame->setSize (bbox.width(),bbox.height() );
   14.37 +			rectFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
   14.38  			break;
   14.39      }
   14.40  }
   14.41 @@ -117,10 +115,9 @@
   14.42  				break;
   14.43  			case Rectangle:
   14.44  				border=10;
   14.45 -				rectFrame = new Q3CanvasRectangle (canvas);
   14.46 -				rectFrame->setZ(Z_FRAME);
   14.47 -				rectFrame->setBrush( QColor("white") );
   14.48 -				rectFrame->setPen( QPen(QColor("black") ));
   14.49 +				rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(QColor("black") ), QColor("white"));
   14.50 +				rectFrame->setZValue(Z_FRAME);
   14.51 +
   14.52  				break;
   14.53  		}
   14.54  		setVisibility (visible);
    15.1 --- a/frameobj.h	Thu Nov 23 16:18:26 2006 +0000
    15.2 +++ b/frameobj.h	Fri Dec 08 20:18:56 2006 +0000
    15.3 @@ -8,7 +8,7 @@
    15.4  class FrameObj:public MapObj {
    15.5  public:
    15.6      FrameObj();
    15.7 -    FrameObj(Q3Canvas*);
    15.8 +    FrameObj(QGraphicsScene*);
    15.9      ~FrameObj();
   15.10      void init();
   15.11      void clear();
   15.12 @@ -16,7 +16,7 @@
   15.13      void moveBy (double x,double y);  // move to relative Position
   15.14  	void positionBBox();			 
   15.15  	void calcBBoxSize();			
   15.16 -	void setRect (const QRect &);	  // set dimensions			
   15.17 +	void setRect (const QRectF &);	  // set dimensions			
   15.18      int getBorder();
   15.19      FrameType getFrameType ();
   15.20      QString getFrameTypeName ();
   15.21 @@ -26,7 +26,7 @@
   15.22  
   15.23  protected:
   15.24      FrameType type;
   15.25 -    Q3CanvasRectangle* rectFrame;
   15.26 +    QGraphicsRectItem * rectFrame;
   15.27      int border;									// distance text - frame
   15.28  };
   15.29  #endif
    16.1 --- a/headingobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    16.2 +++ b/headingobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    16.3 @@ -10,9 +10,9 @@
    16.4      init ();
    16.5  }
    16.6  
    16.7 -HeadingObj::HeadingObj(Q3Canvas* c) :MapObj(c)
    16.8 +HeadingObj::HeadingObj(QGraphicsScene *s) :MapObj(s)
    16.9  {
   16.10 -//    cout << "Const HeadingObj\n";
   16.11 +//    cout << "Const HeadingObj (s)\n";
   16.12      init ();
   16.13  }
   16.14  
   16.15 @@ -44,8 +44,8 @@
   16.16  {
   16.17      MapObj::move(x,y);
   16.18  
   16.19 -    int h;	// height of a textline
   16.20 -    int ho;	// offset of height while drawing all lines
   16.21 +    qreal h;	// height of a textline
   16.22 +    qreal ho;	// offset of height while drawing all lines
   16.23  
   16.24      if (!textline.isEmpty() )
   16.25  		h=textline.first()->boundingRect().height();
   16.26 @@ -54,7 +54,7 @@
   16.27      ho=0;
   16.28  	for (int i=0; i<textline.size(); ++i)
   16.29      {
   16.30 -		textline.at(i)->move(x,y+ho);
   16.31 +		textline.at(i)->setPos(x,y+ho);
   16.32  		ho=ho+h;
   16.33      }	
   16.34  }
   16.35 @@ -73,8 +73,8 @@
   16.36  
   16.37  void HeadingObj::calcBBoxSize()
   16.38  {	
   16.39 -	int w=0;
   16.40 -	int h=0;
   16.41 +	qreal w=0;
   16.42 +	qreal h=0;
   16.43  	// Using Backspace an empty heading might easily be created, then there
   16.44  	// would be textline.first()==NULL This can be worked around by the following, but
   16.45  	// then no selection would be visible, thus we prevent it in ::setText()
   16.46 @@ -87,18 +87,17 @@
   16.47  				w=textline.at(i)->boundingRect().width();
   16.48  		}	
   16.49  	} 
   16.50 -    bbox.setSize (QSize(w,h));
   16.51 +    bbox.setSize (QSizeF(w,h));
   16.52  }
   16.53  
   16.54 -Q3CanvasText* HeadingObj::newLine(QString s)
   16.55 +QGraphicsTextItem* HeadingObj::newLine(QString s)
   16.56  {
   16.57 -    Q3CanvasText *t;
   16.58 -    t = new Q3CanvasText(canvas);
   16.59 +    QGraphicsTextItem *t=scene->addText("");
   16.60      t->setFont (font);
   16.61 -    t->setColor (color);
   16.62 -    t->setZ(Z_TEXT);
   16.63 -    t->setText(s);
   16.64 -	t->setTextFlags(Qt::AlignLeft);
   16.65 +    t->setZValue(Z_TEXT);
   16.66 +    t->setDefaultTextColor(color);
   16.67 +    t->setPlainText(s);
   16.68 +	//t->setTextFlags(Qt::AlignLeft);
   16.69      t->show();
   16.70      return t;
   16.71  }
   16.72 @@ -221,7 +220,7 @@
   16.73      {
   16.74  		color=c;
   16.75  		for (int i=0; i<textline.size(); ++i)
   16.76 -			textline.at(i)->setColor(c);
   16.77 +			textline.at(i)->setDefaultTextColor(c);
   16.78      }	    
   16.79  }
   16.80  
   16.81 @@ -240,12 +239,12 @@
   16.82  			textline.at(i)->hide();
   16.83  }
   16.84  
   16.85 -int HeadingObj::getHeight ()
   16.86 +qreal HeadingObj::getHeight ()
   16.87  {
   16.88  	return bbox.height();
   16.89  }
   16.90  
   16.91 -int HeadingObj::getWidth()
   16.92 +qreal HeadingObj::getWidth()
   16.93  {
   16.94  	return bbox.width();
   16.95  }
    17.1 --- a/headingobj.h	Thu Nov 23 16:18:26 2006 +0000
    17.2 +++ b/headingobj.h	Fri Dec 08 20:18:56 2006 +0000
    17.3 @@ -6,7 +6,7 @@
    17.4  class HeadingObj:public MapObj {
    17.5  public:
    17.6      HeadingObj();
    17.7 -    HeadingObj(Q3Canvas*);
    17.8 +    HeadingObj(QGraphicsScene*);
    17.9      virtual ~HeadingObj();
   17.10      virtual void init();
   17.11      virtual void copy(HeadingObj*);
   17.12 @@ -15,7 +15,7 @@
   17.13      virtual void positionBBox();
   17.14  	virtual void calcBBoxSize();
   17.15  private:
   17.16 -    Q3CanvasText* newLine(QString);				// generate new textline
   17.17 +    QGraphicsTextItem* newLine(QString);		// generate new textline
   17.18  public:    
   17.19      virtual void setText(QString);
   17.20      virtual QString text();
   17.21 @@ -24,13 +24,13 @@
   17.22      virtual void setColor(QColor);
   17.23      virtual QColor getColor();
   17.24      virtual void setVisibility(bool);
   17.25 -	virtual int getHeight();
   17.26 -	virtual int getWidth();
   17.27 +	virtual qreal getHeight();
   17.28 +	virtual qreal getWidth();
   17.29  
   17.30  protected:
   17.31      QString heading;
   17.32      int textwidth;								// width for formatting text
   17.33 -    QList <Q3CanvasText*> textline;				// a part of e.g. the parabel
   17.34 +    QList <QGraphicsTextItem*> textline;		// a part of e.g. the parabel
   17.35      QColor color;
   17.36      QFont font;
   17.37  };
    18.1 --- a/imageobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    18.2 +++ b/imageobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    18.3 @@ -1,16 +1,17 @@
    18.4  #include "imageobj.h"
    18.5 -//Added by qt3to4:
    18.6 -#include <QPixmap>
    18.7 +#include "mapobj.h"
    18.8  
    18.9  /////////////////////////////////////////////////////////////////
   18.10  // ImageObj
   18.11  /////////////////////////////////////////////////////////////////
   18.12 -ImageObj::ImageObj( Q3Canvas *canvas )
   18.13 -    : Q3CanvasRectangle( canvas )
   18.14 +ImageObj::ImageObj( QGraphicsScene *scene) : QGraphicsPixmapItem (NULL,scene )
   18.15  {
   18.16 -//	cout << "Const ImageObj (canvas)\n";
   18.17 -    setZ(Z_ICON);	
   18.18 -	type=undef;
   18.19 +//	cout << "Const ImageObj (scene)\n";
   18.20 +
   18.21 +	setShapeMode (QGraphicsPixmapItem::BoundingRectShape);
   18.22 +    setZValue(Z_ICON);	
   18.23 +	mapScene=scene;
   18.24 +	hide();
   18.25  }
   18.26  
   18.27  ImageObj::~ImageObj()
   18.28 @@ -20,13 +21,9 @@
   18.29  
   18.30  void ImageObj::copy(ImageObj* other)
   18.31  {
   18.32 -	setSize (other->width(), other->height() );
   18.33  	setVisibility (other->isVisible() );
   18.34 -	type=other->type;
   18.35 -//	if (type==qimage)
   18.36 -		image=other->image;
   18.37 -//	if (type==qpixmap)
   18.38 -		pixmap=other->pixmap;
   18.39 +	setPixmap (other->QGraphicsPixmapItem::pixmap());	
   18.40 +	setPos (other->pos());
   18.41  }
   18.42  
   18.43  void ImageObj::setVisibility (bool v)
   18.44 @@ -39,64 +36,24 @@
   18.45  
   18.46  void ImageObj::save(const QString &fn, const char *format)
   18.47  {
   18.48 -	switch (type)
   18.49 -	{
   18.50 -		case undef: qWarning("Warning: ImageObj::save() type=undef");break;
   18.51 -		case qimage: image.save (fn,format,-1);break;
   18.52 -		case qpixmap: pixmap.save (fn,format,-1);break;
   18.53 -	}
   18.54 +	pixmap().save (fn,format,-1);
   18.55  }
   18.56  
   18.57  bool ImageObj::load (const QString &fn)
   18.58  {
   18.59 -	if (!image.load( fn) )
   18.60 -		//cout << "Fatal Error in ImageObj::load ("<<fn<<")\n";
   18.61 -		return false;
   18.62 -    setSize( image.width(), image.height() );
   18.63 -	type=qimage;
   18.64 +	QPixmap pixmap;
   18.65 +    if (pixmap.load (fn)) 
   18.66 +	{
   18.67 +		setPixmap (pixmap);
   18.68 +		return true;
   18.69 +	}	
   18.70 +	return false;
   18.71 +}
   18.72  
   18.73 -#if !defined(Q_WS_QWS)
   18.74 -    pixmap.convertFromImage(image, Qt::OrderedAlphaDither);
   18.75 -#endif
   18.76 +bool ImageObj::load (const QPixmap &pm)
   18.77 +{
   18.78 +	setPixmap (pm);
   18.79  	return true;
   18.80  }
   18.81  
   18.82 -bool ImageObj::load (QPixmap pm)
   18.83 -{
   18.84 -#if !defined(Q_WS_QWS)
   18.85 -    //pixmap.convertFromImage(image, OrderedAlphaDither);
   18.86 -	type=qpixmap;
   18.87 -	pixmap=pm;
   18.88 -    setSize( pm.width(), pm.height() );
   18.89 -#else
   18.90 -	type=qimage;
   18.91 -	image=pm;
   18.92 -    setSize( image.width(), image.height() );
   18.93 -#endif
   18.94 -	return true;
   18.95 -}
   18.96  
   18.97 -void ImageObj::setImage(QImage img)
   18.98 -{
   18.99 -	type=qimage;
  18.100 -	image=img;
  18.101 -    pixmap.convertFromImage(image, Qt::OrderedAlphaDither);
  18.102 -}
  18.103 -
  18.104 -QPixmap ImageObj::getPixmap()
  18.105 -{
  18.106 -	return pixmap;
  18.107 -}
  18.108 -
  18.109 -void ImageObj::drawShape( QPainter &p )
  18.110 -{
  18.111 -// On Qt/Embedded, we can paint a QImage as fast as a QPixmap,
  18.112 -// but on other platforms, we need to use a QPixmap.
  18.113 -#if defined(Q_WS_QWS)
  18.114 -    p.drawImage( int(x()), int(y()), image, 0, 0, -1, -1, Qt::OrderedAlphaDither );
  18.115 -#else
  18.116 -    p.drawPixmap( int(x()), int(y()), pixmap );
  18.117 -#endif
  18.118 -}
  18.119 -
  18.120 -
    19.1 --- a/imageobj.h	Thu Nov 23 16:18:26 2006 +0000
    19.2 +++ b/imageobj.h	Fri Dec 08 20:18:56 2006 +0000
    19.3 @@ -1,33 +1,20 @@
    19.4  #ifndef IMAGEOBJ_H
    19.5  #define IMAGEOBJ_H
    19.6  
    19.7 -#include <qimage.h>
    19.8 -#include <q3canvas.h>
    19.9 -#include <qpainter.h>
   19.10 -//Added by qt3to4:
   19.11 -#include <QPixmap>
   19.12 +#include <QGraphicsScene>
   19.13 +#include <QGraphicsPixmapItem>
   19.14  
   19.15 -#include "mapobj.h"
   19.16 -
   19.17 -enum ImageType {qimage,qpixmap,undef};
   19.18 -
   19.19 -class ImageObj: public Q3CanvasRectangle
   19.20 +class ImageObj: public QGraphicsPixmapItem
   19.21  {
   19.22  public:
   19.23 -    ImageObj( Q3Canvas *canvas );
   19.24 +    ImageObj( QGraphicsScene *);
   19.25      ~ImageObj();
   19.26 -	virtual void copy (ImageObj*);
   19.27 -    virtual void setVisibility(bool);
   19.28 +	void copy (ImageObj*);
   19.29 +    void setVisibility(bool);
   19.30  	void save (const QString &, const char *);
   19.31  	bool load (const QString &);
   19.32 -	bool load (QPixmap);
   19.33 -	void setImage(QImage img);
   19.34 -	QPixmap getPixmap();
   19.35 -protected:
   19.36 -    void drawShape( QPainter & );
   19.37 +	bool load (const QPixmap &);
   19.38  private:
   19.39 -    QImage image;
   19.40 -    QPixmap pixmap;
   19.41 -	ImageType type;
   19.42 +	QGraphicsScene *mapScene;
   19.43  };
   19.44  #endif
    20.1 --- a/linkablemapobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    20.2 +++ b/linkablemapobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    20.3 @@ -4,10 +4,6 @@
    20.4  #include "branchobj.h"
    20.5  #include "mapeditor.h"
    20.6  
    20.7 -//Added by qt3to4:
    20.8 -#include <Q3PointArray>
    20.9 -
   20.10 -
   20.11  /////////////////////////////////////////////////////////////////
   20.12  // LinkableMapObj
   20.13  /////////////////////////////////////////////////////////////////
   20.14 @@ -18,13 +14,13 @@
   20.15      init ();
   20.16  }
   20.17  
   20.18 -LinkableMapObj::LinkableMapObj(Q3Canvas* c) :MapObj(c)
   20.19 +LinkableMapObj::LinkableMapObj(QGraphicsScene* s) :MapObj(s)
   20.20  {
   20.21 -//    cout << "Const LinkableMapObj\n";
   20.22 +//    cout << "Const LinkableMapObj (s)\n";
   20.23      init ();
   20.24  }
   20.25  
   20.26 -LinkableMapObj::LinkableMapObj (LinkableMapObj* lmo) : MapObj (lmo->canvas)
   20.27 +LinkableMapObj::LinkableMapObj (LinkableMapObj* lmo) : MapObj (lmo->scene)
   20.28  {
   20.29      copy (lmo);
   20.30  }
   20.31 @@ -49,11 +45,9 @@
   20.32  			break;
   20.33  		case StylePolyLine:
   20.34  			delete (p);
   20.35 -			delete (l);
   20.36  			break;
   20.37  		case StylePolyParabel:
   20.38  			delete (p);
   20.39 -			while (!segment.isEmpty()) delete segment.takeFirst();
   20.40  			break;
   20.41  		default:
   20.42  			break;
   20.43 @@ -67,8 +61,8 @@
   20.44      childObj=NULL;
   20.45      parObj=NULL;
   20.46      parObjTmpBuf=NULL;
   20.47 -    parPos=QPoint(0,0);
   20.48 -    childPos=QPoint(0,0);
   20.49 +    parPos=QPointF(0,0);
   20.50 +    childPos=QPointF(0,0);
   20.51  	link2ParPos=false;
   20.52      l=NULL;
   20.53      orientation=OrientUndef;
   20.54 @@ -77,18 +71,18 @@
   20.55      style=StyleUndef;
   20.56  	linkpos=LinkBottom;
   20.57      arcsegs=13;
   20.58 -	Q3PointArray pa(arcsegs*2+2);
   20.59      
   20.60 -    bottomline=new Q3CanvasLine(canvas);
   20.61 -    bottomline->setPen( QPen(linkcolor, 1) );
   20.62 -    bottomline->setZ(Z_LINK);
   20.63 +// FIXME instead of linkcolor pen.color() could be used	
   20.64 +	pen.setWidth (1);
   20.65 +	pen.setColor (linkcolor);
   20.66 +	pen.setCapStyle ( Qt::RoundCap );
   20.67 +	bottomline=scene->addLine(QLineF(1,1,1,1),pen);
   20.68 +    bottomline->setZValue(Z_LINK);
   20.69      bottomline->show();
   20.70  
   20.71      // Prepare showing the selection of a MapObj
   20.72 -    selbox = new Q3CanvasRectangle (canvas);
   20.73 -    selbox->setZ(Z_SELBOX);
   20.74 -    selbox->setBrush( QColor(255,255,0) );
   20.75 -    selbox->setPen( QPen(QColor(255,255,0) ));
   20.76 +    selbox = scene->addRect(QRectF(0,0,0,0), QPen(QColor(255,255,0) ), QColor(255,255,0));
   20.77 +    selbox->setZValue(Z_SELBOX);
   20.78      selbox->hide();
   20.79      selected=false;
   20.80  
   20.81 @@ -97,12 +91,12 @@
   20.82  	topPad=botPad=leftPad=rightPad=0;
   20.83  
   20.84  	// initialize frame
   20.85 -	frame = new FrameObj (canvas);
   20.86 +	frame = new FrameObj (scene);
   20.87  	
   20.88  	repositionRequest=false;
   20.89  
   20.90  	// Rel Positions
   20.91 -	relPos=QPoint(0,0);
   20.92 +	relPos=QPointF(0,0);
   20.93  	useRelPos=false;
   20.94  	useOrientation=true;
   20.95  }
   20.96 @@ -129,7 +123,7 @@
   20.97  	mapEditor=parObj->getMapEditor();
   20.98  }
   20.99  
  20.100 -void LinkableMapObj::setParObjTmp(LinkableMapObj*,QPoint,int)
  20.101 +void LinkableMapObj::setParObjTmp(LinkableMapObj*,QPointF,int)
  20.102  {
  20.103  }
  20.104  
  20.105 @@ -161,7 +155,7 @@
  20.106  	}
  20.107  }
  20.108  
  20.109 -void LinkableMapObj::setRelPos(const QPoint &p)
  20.110 +void LinkableMapObj::setRelPos(const QPointF &p)
  20.111  {
  20.112  	relPos=p;
  20.113  	if (parObj)
  20.114 @@ -174,23 +168,23 @@
  20.115  	}
  20.116  }
  20.117  
  20.118 -QPoint LinkableMapObj::getRelPos()
  20.119 +QPointF LinkableMapObj::getRelPos()
  20.120  {
  20.121 -	if (!parObj) return QPoint();
  20.122 +	if (!parObj) return QPointF();
  20.123  	return relPos;
  20.124  }
  20.125  
  20.126 -int LinkableMapObj::getTopPad()
  20.127 +qreal LinkableMapObj::getTopPad()
  20.128  {
  20.129  	return topPad;
  20.130  }
  20.131  
  20.132 -int LinkableMapObj::getLeftPad()
  20.133 +qreal LinkableMapObj::getLeftPad()
  20.134  {
  20.135  	return leftPad;
  20.136  }
  20.137  
  20.138 -int LinkableMapObj::getRightPad()
  20.139 +qreal LinkableMapObj::getRightPad()
  20.140  {
  20.141  	return rightPad;
  20.142  }
  20.143 @@ -234,29 +228,25 @@
  20.144  
  20.145      if (childObj!=NULL && parObj != NULL)
  20.146      {
  20.147 -		int i;
  20.148 -		Q3CanvasLine* cl;
  20.149 +		QGraphicsLineItem *cl;
  20.150  		switch (style)
  20.151  		{
  20.152  			case StyleUndef:
  20.153  				bottomline->hide();
  20.154  				break;
  20.155  			case StyleLine: 
  20.156 -				l = new Q3CanvasLine(canvas);
  20.157 -				l->setPen( QPen(linkcolor, 1) );
  20.158 -				l->setZ(Z_LINK);
  20.159 +				l = scene->addLine(QLineF(1,1,1,1),pen);
  20.160 +				l->setZValue(Z_LINK);
  20.161  				if (visible)
  20.162  					l->show();
  20.163  				else
  20.164  					l->hide();
  20.165  				break;
  20.166  			case StyleParabel:
  20.167 -				for (i=0;i<arcsegs;i++)
  20.168 +				for (int i=0;i<arcsegs;i++)
  20.169  				{
  20.170 -					cl = new Q3CanvasLine(canvas);
  20.171 -					cl->setPen( QPen(linkcolor, 1) );
  20.172 -					cl->setPoints( i*5,0,i*10,100);
  20.173 -					cl->setZ(Z_LINK);
  20.174 +					cl = scene->addLine(QLineF(i*5,0,i*10,100),pen);
  20.175 +					cl->setZValue(Z_LINK);
  20.176  					if (visible)
  20.177  						cl->show();
  20.178  					else
  20.179 @@ -266,28 +256,17 @@
  20.180  				pa0.resize (arcsegs+1);
  20.181  				break;
  20.182  			case StylePolyLine:	
  20.183 -				p = new Q3CanvasPolygon(canvas);
  20.184 -				p->setBrush( linkcolor );
  20.185 -				p->setZ(Z_LINK);
  20.186 +				p =scene->addPolygon(QPolygonF(),pen,linkcolor);
  20.187 +				p->setZValue(Z_LINK);
  20.188  				if (visible)
  20.189  					p->show();
  20.190  				else
  20.191  					p->hide();
  20.192  				pa0.resize (3);
  20.193 -				// TODO a bit awkward: draw the lines additionally to polygon, to avoid
  20.194 -				// missing pixels, when polygon is extremly flat
  20.195 -				l = new Q3CanvasLine(canvas);
  20.196 -				l->setPen( QPen(linkcolor, 1) );
  20.197 -				l->setZ(Z_LINK);
  20.198 -				if (visible)
  20.199 -					l->show();
  20.200 -				else
  20.201 -					l->hide();
  20.202  				break;
  20.203  			case StylePolyParabel:	
  20.204 -				p = new Q3CanvasPolygon(canvas);
  20.205 -				p->setBrush( linkcolor );
  20.206 -				p->setZ(Z_LINK);
  20.207 +				p = scene->addPolygon(QPolygonF(),pen,linkcolor);
  20.208 +				p->setZValue(Z_LINK);
  20.209  				if (visible)
  20.210  					p->show();
  20.211  				else
  20.212 @@ -295,22 +274,6 @@
  20.213  				pa0.resize (arcsegs*2+2);
  20.214  				pa1.resize (arcsegs+1);
  20.215  				pa2.resize (arcsegs+1);
  20.216 -
  20.217 -				// TODO a bit awkward: draw the lines additionally 
  20.218 -				// to polygon, to avoid missing pixels, 
  20.219 -				// if polygon is extremly flat
  20.220 -				for (i=0;i<arcsegs;i++)
  20.221 -				{
  20.222 -					cl = new Q3CanvasLine(canvas);
  20.223 -					cl->setPen( QPen(linkcolor, 1) );
  20.224 -					cl->setPoints( 5*i,0,i*10,100);
  20.225 -					cl->setZ(Z_LINK);
  20.226 -					if (visible)
  20.227 -						cl->show();
  20.228 -					else
  20.229 -						cl->hide();
  20.230 -					segment.append(cl);
  20.231 -				}
  20.232  				break;
  20.233  			default: 
  20.234  				break;	
  20.235 @@ -357,24 +320,22 @@
  20.236  void LinkableMapObj::setLinkColor(QColor col)
  20.237  {
  20.238  	linkcolor=col;
  20.239 -    bottomline->setPen( QPen(linkcolor, 1) );
  20.240 +	pen.setColor(col);
  20.241 +    bottomline->setPen( pen );
  20.242  	switch (style)
  20.243  	{
  20.244  		case StyleLine:
  20.245 -			l->setPen( QPen(col,1));
  20.246 +			l->setPen( pen);
  20.247  			break;	
  20.248  		case StyleParabel:	
  20.249  			for (int i=0; i<segment.size(); ++i)
  20.250 -				segment.at(i)->setPen( QPen(col,1));
  20.251 +				segment.at(i)->setPen( pen);
  20.252  			break;
  20.253  		case StylePolyLine:
  20.254  			p->setBrush( QBrush(col));
  20.255 -			l->setPen( QPen(col,1));
  20.256  			break;
  20.257  		case StylePolyParabel:	
  20.258  			p->setBrush( QBrush(col));
  20.259 -			for (int i=0; i<segment.size(); ++i)
  20.260 -				segment.at(i)->setPen( QPen(col,1));
  20.261  			break;
  20.262  		default:
  20.263  			break;
  20.264 @@ -430,11 +391,8 @@
  20.265  				break;	
  20.266  			case StylePolyLine:
  20.267  				if (p) p->show();
  20.268 -				if (l) l->show();
  20.269  				break;
  20.270  			case StylePolyParabel:	
  20.271 -				for (int i=0; i<segment.size(); ++i)
  20.272 -					segment.at(i)->show();
  20.273  				if (p) p->show();
  20.274  				break;
  20.275  			default:
  20.276 @@ -454,11 +412,8 @@
  20.277  				break;	
  20.278  			case StylePolyLine:
  20.279  				if (p) p->hide();
  20.280 -				if (l) l->hide();
  20.281  				break;
  20.282  			case StylePolyParabel:	
  20.283 -				for (int i=0; i<segment.size(); ++i)
  20.284 -					segment.at(i)->hide();
  20.285  				if (p) p->hide();
  20.286  				break;
  20.287  			default:
  20.288 @@ -484,7 +439,7 @@
  20.289      else
  20.290      {
  20.291  		// calc orientation depending on position rel to parent
  20.292 -		if (absPos.x() < QPoint(parObj->getChildPos() ).x() )
  20.293 +		if (absPos.x() < QPointF(parObj->getChildPos() ).x() )
  20.294  			orientation=OrientLeftOfCenter; 
  20.295  		else
  20.296  			orientation=OrientRightOfCenter;
  20.297 @@ -527,12 +482,12 @@
  20.298      double p2x,p2y;								// Set P2 Before setting
  20.299  	if (!link2ParPos)
  20.300  	{
  20.301 -		p2x=QPoint( parObj->getChildPos() ).x();	// P1, we have to look at
  20.302 -		p2y=QPoint( parObj->getChildPos() ).y();	// orientation
  20.303 +		p2x=QPointF( parObj->getChildPos() ).x();	// P1, we have to look at
  20.304 +		p2y=QPointF( parObj->getChildPos() ).y();	// orientation
  20.305  	} else	
  20.306  	{
  20.307 -		p2x=QPoint( parObj->getParPos() ).x();	
  20.308 -		p2y=QPoint( parObj->getParPos() ).y();
  20.309 +		p2x=QPointF( parObj->getParPos() ).x();	
  20.310 +		p2y=QPointF( parObj->getParPos() ).y();
  20.311  	} 
  20.312  
  20.313  	setDockPos(); // Call overloaded method
  20.314 @@ -545,10 +500,10 @@
  20.315  	double vy=p2y - p1y;
  20.316  
  20.317  	// Draw the horizontal line below heading (from ChildPos to ParPos)
  20.318 -	bottomline->setPoints (qRound(childPos.x()),
  20.319 +	bottomline->setLine (QLine (qRound(childPos.x()),
  20.320  		qRound(childPos.y()),
  20.321  		qRound(p1x),
  20.322 -		qRound(p1y) );
  20.323 +		qRound(p1y) ));
  20.324  
  20.325  	double a;	// angle
  20.326  	if (vx > -0.000001 && vx < 0.000001)
  20.327 @@ -556,45 +511,38 @@
  20.328  	else
  20.329  		a=atan( vy / vx );
  20.330  	// "turning point" for drawing polygonal links
  20.331 -	QPoint tp (-qRound(sin (a)*thickness_start), qRound(cos (a)*thickness_start));	
  20.332 +	QPointF tp (-qRound(sin (a)*thickness_start), qRound(cos (a)*thickness_start));	
  20.333  	
  20.334      // Draw the link
  20.335  	switch (style)
  20.336  	{
  20.337  		case StyleLine:
  20.338 -			l->setPoints( qRound (parPos.x()),
  20.339 +			l->setLine( QLine(qRound (parPos.x()),
  20.340  				qRound(parPos.y()),
  20.341  				qRound(p2x),
  20.342 -				qRound(p2y) );
  20.343 +				qRound(p2y) ));
  20.344  			break;	
  20.345  		case StyleParabel:	
  20.346  			parabel (pa0, p1x,p1y,p2x,p2y);
  20.347  			for (int i=0; i<segment.size(); ++i)
  20.348 -				segment.at(i)->setPoints( pa0.point(i).x(), pa0.point(i).y(),pa0.point(i+1).x(),pa0.point(i+1).y());
  20.349 +				segment.at(i)->setLine(QLineF( pa0.at(i).x(), pa0.at(i).y(),pa0.at(i+1).x(),pa0.at(i+1).y()));
  20.350  			break;
  20.351  		case StylePolyLine:
  20.352 -			pa0[0]=QPoint (qRound(p2x+tp.x()), qRound(p2y+tp.y()));
  20.353 -			pa0[1]=QPoint (qRound(p2x-tp.x()), qRound(p2y-tp.y()));
  20.354 -			pa0[2]=QPoint (qRound (parPos.x()), qRound(parPos.y()) );
  20.355 -			p->setPoints (pa0);
  20.356 -			// here too, draw line to avoid missing pixels
  20.357 -			l->setPoints( qRound (parPos.x()),
  20.358 -				qRound(parPos.y()),
  20.359 -				qRound(p2x),
  20.360 -				qRound(p2y) );
  20.361 +			pa0.clear();
  20.362 +			pa0<<QPointF (qRound(p2x+tp.x()), qRound(p2y+tp.y()));
  20.363 +			pa0<<QPointF (qRound(p2x-tp.x()), qRound(p2y-tp.y()));
  20.364 +			pa0<<QPointF (qRound (parPos.x()), qRound(parPos.y()) );
  20.365 +			p->setPolygon(QPolygonF (pa0));
  20.366  			break;
  20.367  		case StylePolyParabel:	
  20.368  			parabel (pa1, p1x,p1y,p2x+tp.x(),p2y+tp.y());
  20.369  			parabel (pa2, p1x,p1y,p2x-tp.x(),p2y-tp.y());
  20.370 +			pa0.clear();
  20.371  			for (int i=0;i<=arcsegs;i++)
  20.372 -			{
  20.373 -				// Combine the arrays to a single one
  20.374 -				pa0[i]=pa1[i];
  20.375 -				pa0[i+arcsegs+1]=pa2[arcsegs-i];
  20.376 -			}	
  20.377 -			p->setPoints (pa0);
  20.378 -			for (int i=0; i<segment.size(); ++i)
  20.379 -				segment.at(i)->setPoints( pa1.point(i).x(), pa1.point(i).y(),pa1.point(i+1).x(),pa1.point(i+1).y());
  20.380 +				pa0 << QPointF (pa1.at(i));
  20.381 +			for (int i=0;i<=arcsegs;i++)
  20.382 +				pa0 << QPointF (pa2.at(arcsegs-i));
  20.383 +			p->setPolygon(QPolygonF (pa0));
  20.384  			break;
  20.385  		default:
  20.386  			break;
  20.387 @@ -644,12 +592,12 @@
  20.388  	return lmo;
  20.389  }
  20.390  
  20.391 -QPoint LinkableMapObj::getChildPos()
  20.392 +QPointF LinkableMapObj::getChildPos()
  20.393  {
  20.394      return childPos;
  20.395  }
  20.396  
  20.397 -QPoint LinkableMapObj::getParPos()
  20.398 +QPointF LinkableMapObj::getParPos()
  20.399  {
  20.400      return parPos;
  20.401  }
  20.402 @@ -683,16 +631,16 @@
  20.403  	return mapEditor;
  20.404  }
  20.405  
  20.406 -QPoint LinkableMapObj::getRandPos()
  20.407 +QPointF LinkableMapObj::getRandPos()
  20.408  {
  20.409  	// Choose a random position with given distance to parent:
  20.410  	double a=rand()%360 * 2 * M_PI / 360;
  20.411 -    return QPoint ( (int)( + 150*cos (a)),
  20.412 +    return QPointF ( (int)( + 150*cos (a)),
  20.413                      (int)( + 150*sin (a)));
  20.414  }
  20.415  
  20.416  /*
  20.417 -void LinkableMapObj::alignRelativeTo (QPoint ref)
  20.418 +void LinkableMapObj::alignRelativeTo (QPointF ref)
  20.419  {
  20.420  	// Overloaded, only called for BO, FIO, ...
  20.421  	// FIXME not needed?
  20.422 @@ -702,7 +650,7 @@
  20.423  void LinkableMapObj::reposition()
  20.424  {
  20.425  	cout << "LMO::reposition\n";
  20.426 -	// FIXME not needed? Is overloaded in BranchObj...
  20.427 +	// FIXME LMO::reposition not needed? Is overloaded in BranchObj...
  20.428  	/*
  20.429  	if (depth==0)
  20.430  	{
  20.431 @@ -710,14 +658,14 @@
  20.432  		// all upper LMOs have to change, too.
  20.433  		calcBBoxSizeWithChilds();
  20.434  
  20.435 -	    alignRelativeTo ( QPoint (absPos.x(),
  20.436 +	    alignRelativeTo ( QPointF (absPos.x(),
  20.437  							absPos.y()-(bboxTotal.height()-bbox.height())/2) );
  20.438  	} else
  20.439  	{
  20.440  		// This is only important for moving branches:
  20.441  		// For editing a branch it isn't called...
  20.442  		cout << "  reposition to abs "<<absPos<<endl;
  20.443 -	    alignRelativeTo ( QPoint (absPos.x(),
  20.444 +	    alignRelativeTo ( QPointF (absPos.x(),
  20.445  							absPos.y()-(bboxTotal.height()-bbox.height())/2) );
  20.446  	}
  20.447  	*/
  20.448 @@ -762,9 +710,7 @@
  20.449  
  20.450  void LinkableMapObj::setSelBox()
  20.451  {
  20.452 -    selbox->setX (clickBox.x() );
  20.453 -    selbox->setY (clickBox.y() );
  20.454 -    selbox->setSize (clickBox.width(), clickBox.height() );
  20.455 +	selbox->setRect (clickBox);
  20.456  }
  20.457  
  20.458  void LinkableMapObj::select()
  20.459 @@ -785,7 +731,7 @@
  20.460  	setVisibility (visible);
  20.461  }
  20.462  
  20.463 -void LinkableMapObj::parabel (Q3PointArray &ya, double p1x, double p1y, double p2x, double p2y)
  20.464 +void LinkableMapObj::parabel (QPolygonF &ya, double p1x, double p1y, double p2x, double p2y)
  20.465  
  20.466  {
  20.467  	double vx=p2x - p1x;	// V=P2-P1
  20.468 @@ -802,13 +748,13 @@
  20.469  	else	
  20.470  		m=(vy / (vx*vx));
  20.471  	dx=vx/(arcsegs);
  20.472 -	int i;
  20.473 -	ya.setPoint (0,QPoint (qRound(p1x),qRound(p1y)));
  20.474 -	for (i=1;i<=arcsegs;i++)
  20.475 +	ya.clear();
  20.476 +	ya<<QPointF (qRound(p1x),qRound(p1y));
  20.477 +	for (int i=1;i<=arcsegs;i++)
  20.478  	{	
  20.479  		pnx=p1x+dx;
  20.480  		pny=m*(pnx-parPos.x())*(pnx-parPos.x())+parPos.y();
  20.481 -		ya.setPoint (i,QPoint (qRound(pnx),qRound(pny)));
  20.482 +		ya<<QPointF (qRound(pnx),qRound(pny));
  20.483  		p1x=pnx;
  20.484  		p1y=pny;
  20.485  	}	
    21.1 --- a/linkablemapobj.h	Thu Nov 23 16:18:26 2006 +0000
    21.2 +++ b/linkablemapobj.h	Fri Dec 08 20:18:56 2006 +0000
    21.3 @@ -5,8 +5,7 @@
    21.4  #include "noteobj.h"
    21.5  #include "headingobj.h"
    21.6  #include "flagrowobj.h"
    21.7 -//Added by qt3to4:
    21.8 -#include <Q3PointArray>
    21.9 +
   21.10  
   21.11  #define MAX_DEPTH 999
   21.12  
   21.13 @@ -25,7 +24,7 @@
   21.14  	Q_OBJECT
   21.15  public:
   21.16      LinkableMapObj ();
   21.17 -    LinkableMapObj (Q3Canvas*);
   21.18 +    LinkableMapObj (QGraphicsScene*);
   21.19      LinkableMapObj (LinkableMapObj*);
   21.20      ~LinkableMapObj ();
   21.21  	virtual void delLink();
   21.22 @@ -33,20 +32,20 @@
   21.23      virtual void copy (LinkableMapObj*);
   21.24      void setChildObj (LinkableMapObj*);
   21.25      virtual void setParObj (LinkableMapObj*);
   21.26 -    virtual void setParObjTmp (LinkableMapObj*,QPoint,int);	// Only for moving Obj around
   21.27 +    virtual void setParObjTmp (LinkableMapObj*,QPointF,int);	// Only for moving Obj around
   21.28  	virtual void unsetParObjTmp();						// reuse original ParObj
   21.29  	virtual bool hasParObjTmp();
   21.30  
   21.31  	virtual void setUseRelPos (const bool&);
   21.32  	virtual void setRelPos();				// set relPos to current parentPos
   21.33 -	virtual void setRelPos(const QPoint&);	
   21.34 -	virtual QPoint getRelPos();
   21.35 +	virtual void setRelPos(const QPointF&);	
   21.36 +	virtual QPointF getRelPos();
   21.37  	virtual void setUseOrientation (const bool &);
   21.38  
   21.39  
   21.40 -	virtual int getTopPad();
   21.41 -	virtual int getLeftPad();
   21.42 -	virtual int getRightPad();
   21.43 +	virtual qreal getTopPad();
   21.44 +	virtual qreal getLeftPad();
   21.45 +	virtual qreal getRightPad();
   21.46  	LinkStyle getDefLinkStyle();
   21.47      void setLinkStyle(LinkStyle);            
   21.48  	LinkStyle getLinkStyle();
   21.49 @@ -70,71 +69,72 @@
   21.50      LinkableMapObj* getParObj();			// returns pointer to toObj
   21.51      virtual LinkableMapObj* findObjBySelect(QString s);	// find obj by selectstring
   21.52  	virtual void setDockPos()=0;				// sets childPos and parPos
   21.53 -    QPoint getChildPos();					// returns pos where childs dock
   21.54 -    QPoint getParPos();						// returns pos where parents dock
   21.55 +    QPointF getChildPos();					// returns pos where childs dock
   21.56 +    QPointF getParPos();						// returns pos where parents dock
   21.57      LinkOrient getOrientation();			// get orientation
   21.58      virtual int getDepth();					// return depth
   21.59  	virtual void setMapEditor(MapEditor*);	// set MapEditor (needed in LMO::updateNoteFlag)
   21.60  	virtual MapEditor* getMapEditor();		// get MapEditor (usually from parent);
   21.61 -	virtual QPoint getRandPos();			// make randomised position
   21.62 +	virtual QPointF getRandPos();			// make randomised position
   21.63  
   21.64 -    //virtual void alignRelativeTo(const QPoint );
   21.65 +    //virtual void alignRelativeTo(const QPointF );
   21.66  	virtual void reposition();
   21.67  	virtual void requestReposition();		// do reposition after next user event
   21.68  	virtual void forceReposition();			// to force a reposition now (outside
   21.69  											// of mapeditor e.g. in noteeditor
   21.70  	virtual bool repositionRequested();
   21.71  
   21.72 -	//virtual QRect getTotalBBox();			// return BBox including childs			
   21.73 -	//virtual QRect getBBoxSizeWithChilds();// return size of BBox including childs  
   21.74 +	//virtual QRectF getTotalBBox();			// return BBox including childs			
   21.75 +	//virtual QRectF getBBoxSizeWithChilds();// return size of BBox including childs  
   21.76  	virtual void calcBBoxSizeWithChilds()=0;// calc size of  BBox including childs recursivly
   21.77  
   21.78  	virtual void setSelBox();
   21.79      virtual void select();
   21.80      virtual void unselect();
   21.81  	virtual	QString getSelectString()=0;
   21.82 -	//virtual QString saveToDir (const QString&,const QString&, const QPoint&);// Save data to XML
   21.83 +	//virtual QString saveToDir (const QString&,const QString&, const QPointF&);// Save data to XML
   21.84  
   21.85  protected:
   21.86 -	void parabel(Q3PointArray &,double,double,double,double);	// Create Parabel connecting two points
   21.87 +	void parabel(QPolygonF &,double,double,double,double);	// Create Parabel connecting two points
   21.88  	QString getLinkAttr();
   21.89  
   21.90 -    QPoint childPos;
   21.91 -    QPoint parPos;
   21.92 +    QPointF childPos;
   21.93 +    QPointF parPos;
   21.94  	bool link2ParPos;				// While moving around, sometimes link to parent
   21.95  	MapEditor* mapEditor;			// for updateNoteFlag() and toggleScroll()
   21.96      LinkOrient orientation;     
   21.97 -    int linkwidth;					// width of a link
   21.98 +    qreal linkwidth;				// width of a link
   21.99      int depth;						// depth: undef=-1 mapCenter=0 branch=1..n
  21.100 -	QRect bboxTotal;				// bounding box including childs
  21.101 +	QRectF bboxTotal;				// bounding box including childs
  21.102  
  21.103      LinkableMapObj* childObj;
  21.104      LinkableMapObj* parObj;
  21.105      LinkableMapObj* parObjTmpBuf;	// temporary buffer the original parent
  21.106 -    int bottomlineY;                // vertical offset of dockpos to pos
  21.107 +    qreal bottomlineY;              // vertical offset of dockpos to pos
  21.108  
  21.109  	int thickness_start;			// for StylePoly*	
  21.110      LinkStyle style;				// Current style
  21.111  	LinkPos linkpos;				// Link at bottom of object or middle of height
  21.112      QColor linkcolor;               // Link color
  21.113 -    Q3CanvasLine* l;                 // line style
  21.114 -	Q3CanvasPolygon* p;				// poly styles
  21.115 +	QPen pen;
  21.116 +    QGraphicsLineItem* l;           // line style
  21.117 +	QGraphicsPolygonItem* p;		// poly styles
  21.118      int arcsegs;                    // arc: number of segments
  21.119 -    QList <Q3CanvasLine*> segment; // a part of e.g. the parabel
  21.120 -	Q3PointArray pa0;				// For drawing of PolyParabel and PolyLine
  21.121 -	Q3PointArray pa1;				// For drawing of PolyParabel 
  21.122 -	Q3PointArray pa2;				// For drawing of PolyParabel	
  21.123 -    Q3CanvasLine* bottomline;        // on bottom of BBox
  21.124 +    QList <QGraphicsLineItem*> segment; // a part of e.g. the parabel
  21.125 +	QPolygonF pa0;					// For drawing of PolyParabel and PolyLine
  21.126 +	QPolygonF pa1;					// For drawing of PolyParabel 
  21.127 +	QPolygonF pa2;					// For drawing of PolyParabel	
  21.128 +    QGraphicsLineItem* bottomline;  // on bottom of BBox
  21.129  	bool repositionRequest;			// 
  21.130  
  21.131  	bool selected;					// Used for marking the selection
  21.132  	bool hideLinkUnselected;		// to hide links if unselected
  21.133 -	Q3CanvasRectangle* selbox;
  21.134 +	QGraphicsRectItem* selbox;
  21.135  	FrameObj *frame;				// frame around object
  21.136 -	int topPad, botPad,
  21.137 +	qreal topPad, botPad,
  21.138  		leftPad, rightPad;          // padding within bbox
  21.139  
  21.140 -	QPoint relPos;					// position relative to childPos of parent
  21.141 +	QPointF relPos;					// position relative to childPos of parent
  21.142  	bool useRelPos;
  21.143  	bool useOrientation;
  21.144  };
    22.1 --- a/mainwindow.cpp	Thu Nov 23 16:18:26 2006 +0000
    22.2 +++ b/mainwindow.cpp	Fri Dec 08 20:18:56 2006 +0000
    22.3 @@ -169,9 +169,10 @@
    22.4  	// Save Settings
    22.5  	settings.setValue ( "/mainwindow/geometry/size", size() );
    22.6  	settings.setValue ( "/mainwindow/geometry/pos", pos() );
    22.7 -
    22.8  	settings.setValue ("/mainwindow/state",saveState(0));
    22.9  
   22.10 +	settings.setValue ("/mainwindow/view/AntiAlias",actionViewToggleAntiAlias->isOn());
   22.11 +	settings.setValue ("/mainwindow/view/SmoothPixmapTransform",actionViewToggleSmoothPixmapTransform->isOn());
   22.12  	settings.setValue( "/version/version", vymVersion );
   22.13  	settings.setValue( "/version/builddate", vymBuildDate );
   22.14  
   22.15 @@ -891,6 +892,12 @@
   22.16  	formatMenu->addAction (a);
   22.17      connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectBackColor() ) );
   22.18      actionFormatBackColor=a;
   22.19 +
   22.20 +    a= new QAction( pix, tr( "Set &Background image" )+QString("..."), this );
   22.21 +	a->setStatusTip (tr( "Set Background image" ));
   22.22 +	formatMenu->addAction (a);
   22.23 +    connect( a, SIGNAL( triggered() ), this, SLOT( formatSelectBackImage() ) );
   22.24 +    actionFormatBackImage=a;
   22.25  }
   22.26  
   22.27  // View Actions
   22.28 @@ -946,14 +953,30 @@
   22.29      connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleHistory() ) );
   22.30  	actionViewToggleHistoryWindow=a;
   22.31  
   22.32 +    a = new QAction(tr( "Antialiasing","View action" ),this );
   22.33 +	a->setStatusTip ( tr( "Antialiasing" ));
   22.34 +	a->setToggleAction(true);
   22.35 +	a->setOn (settings.value("/mainwindow/view/AntiAlias",true).toBool());
   22.36 +	viewMenu->addAction (a);
   22.37 +    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleAntiAlias() ) );
   22.38 +	actionViewToggleAntiAlias=a;
   22.39 +
   22.40 +    a = new QAction(tr( "Smooth pixmap transformations","View action" ),this );
   22.41 +	a->setStatusTip (a->text());
   22.42 +	a->setToggleAction(true);
   22.43 +	a->setOn (settings.value("/mainwindow/view/SmoothPixmapTransformation",true).toBool());
   22.44 +	viewMenu->addAction (a);
   22.45 +    connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleSmoothPixmap() ) );
   22.46 +	actionViewToggleSmoothPixmapTransform=a;
   22.47 +
   22.48      a = new QAction(tr( "Next Window","View action" ), this);
   22.49 -	a->setStatusTip ( tr( "&Next Window" ) );
   22.50 +	a->setStatusTip (a->text());
   22.51  	a->setShortcut (Qt::ALT + Qt::Key_N );
   22.52  	viewMenu->addAction (a);
   22.53      connect( a, SIGNAL( triggered() ), this, SLOT(windowNextEditor() ) );
   22.54  
   22.55      a = new QAction (tr( "Previous Window","View action" ), this );
   22.56 -	a->setStatusTip (tr( "&Previous Window" ));
   22.57 +	a->setStatusTip (a->text());
   22.58  	a->setShortcut (Qt::ALT + Qt::Key_P );
   22.59  	viewMenu->addAction (a);
   22.60      connect( a, SIGNAL( triggered() ), this, SLOT(windowPreviousEditor() ) );
   22.61 @@ -1041,7 +1064,7 @@
   22.62  	standardFlagsDefault->setName ("standardFlagsDef");
   22.63  	standardFlagsDefault->setToolBar (tb);
   22.64  
   22.65 -	fo->load(QPixmap(flagsPath+"flag-exclamationmark.png"));
   22.66 +	fo->load(flagsPath+"flag-exclamationmark.png");
   22.67  	fo->setName ("exclamationmark");
   22.68  	fo->setGroup("standard-mark");
   22.69  	QAction *a=new QAction (fo->getPixmap(),fo->getName(),this);
   22.70 @@ -1053,7 +1076,7 @@
   22.71  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
   22.72  	standardFlagsDefault->addFlag (fo);	// makes deep copy
   22.73  	
   22.74 -	fo->load(QPixmap(flagsPath+"flag-questionmark.png"));
   22.75 +	fo->load(flagsPath+"flag-questionmark.png");
   22.76  	fo->setName("questionmark");
   22.77  	fo->setGroup("standard-mark");
   22.78  	a=new QAction (fo->getPixmap(),fo->getName(),this);
   22.79 @@ -1065,7 +1088,7 @@
   22.80  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
   22.81  	standardFlagsDefault->addFlag (fo);	
   22.82  
   22.83 -	fo->load(QPixmap(flagsPath+"flag-hook-green.png"));
   22.84 +	fo->load(flagsPath+"flag-hook-green.png");
   22.85  	fo->setName("hook-green");
   22.86  	fo->setGroup("standard-hook");
   22.87  	a=new QAction (fo->getPixmap(),fo->getName(),this);
   22.88 @@ -1077,7 +1100,7 @@
   22.89  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
   22.90  	standardFlagsDefault->addFlag (fo);	
   22.91  
   22.92 -	fo->load(QPixmap(flagsPath+"flag-cross-red.png"));
   22.93 +	fo->load(flagsPath+"flag-cross-red.png");
   22.94  	fo->setName("cross-red");
   22.95  	fo->setGroup("standard-hook");
   22.96  	a=new QAction (fo->getPixmap(),fo->getName(),this);
   22.97 @@ -1089,7 +1112,7 @@
   22.98  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
   22.99  	standardFlagsDefault->addFlag (fo);	
  22.100  
  22.101 -	fo->load(QPixmap(flagsPath+"flag-stopsign.png"));
  22.102 +	fo->load(flagsPath+"flag-stopsign.png");
  22.103  	fo->setName("stopsign");
  22.104  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.105  	tb->addAction (a);
  22.106 @@ -1100,7 +1123,7 @@
  22.107  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.108  	standardFlagsDefault->addFlag (fo);	
  22.109  
  22.110 -	fo->load(QPixmap(flagsPath+"flag-smiley-good.png"));
  22.111 +	fo->load(flagsPath+"flag-smiley-good.png");
  22.112  	fo->setName("smiley-good");
  22.113  	fo->setGroup("standard-smiley");
  22.114  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.115 @@ -1112,7 +1135,7 @@
  22.116  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.117  	standardFlagsDefault->addFlag (fo);	
  22.118  
  22.119 -	fo->load(QPixmap(flagsPath+"flag-smiley-sad.png"));
  22.120 +	fo->load(flagsPath+"flag-smiley-sad.png");
  22.121  	fo->setName("smiley-sad");
  22.122  	fo->setGroup("standard-smiley");
  22.123  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.124 @@ -1124,7 +1147,7 @@
  22.125  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.126  	standardFlagsDefault->addFlag (fo);	
  22.127  
  22.128 -	fo->load(QPixmap(flagsPath+"flag-smiley-omg.png"));
  22.129 +	fo->load(flagsPath+"flag-smiley-omg.png");
  22.130  	// Original omg.png (in KDE emoticons)
  22.131  	fo->setName("smiley-omg");
  22.132  	fo->setGroup("standard-smiley");
  22.133 @@ -1137,7 +1160,7 @@
  22.134  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.135  	standardFlagsDefault->addFlag (fo);	
  22.136  
  22.137 -	fo->load(QPixmap(flagsPath+"flag-kalarm.png"));
  22.138 +	fo->load(flagsPath+"flag-kalarm.png");
  22.139  	fo->setName("clock");
  22.140  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.141  	tb->addAction (a);
  22.142 @@ -1148,7 +1171,7 @@
  22.143  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.144  	standardFlagsDefault->addFlag (fo);	
  22.145  
  22.146 -	fo->load(QPixmap(flagsPath+"flag-phone.png"));
  22.147 +	fo->load(flagsPath+"flag-phone.png");
  22.148  	fo->setName("phone");
  22.149  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.150  	tb->addAction (a);
  22.151 @@ -1159,7 +1182,7 @@
  22.152  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.153  	standardFlagsDefault->addFlag (fo);	
  22.154  
  22.155 -	fo->load(QPixmap(flagsPath+"flag-lamp.png"));
  22.156 +	fo->load(flagsPath+"flag-lamp.png");
  22.157  	fo->setName("lamp");
  22.158  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.159  	tb->addAction (a);
  22.160 @@ -1170,7 +1193,7 @@
  22.161  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.162  	standardFlagsDefault->addFlag (fo);	
  22.163  
  22.164 -	fo->load(QPixmap(flagsPath+"flag-arrow-up.png"));
  22.165 +	fo->load(flagsPath+"flag-arrow-up.png");
  22.166  	fo->setName("arrow-up");
  22.167  	fo->setGroup("standard-arrow");
  22.168  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.169 @@ -1182,7 +1205,7 @@
  22.170  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.171  	standardFlagsDefault->addFlag (fo);	
  22.172  
  22.173 -	fo->load(QPixmap(flagsPath+"flag-arrow-down.png"));
  22.174 +	fo->load(flagsPath+"flag-arrow-down.png");
  22.175  	fo->setName("arrow-down");
  22.176  	fo->setGroup("standard-arrow");
  22.177  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.178 @@ -1194,7 +1217,7 @@
  22.179  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.180  	standardFlagsDefault->addFlag (fo);	
  22.181  
  22.182 -	fo->load(QPixmap(flagsPath+"flag-arrow-2up.png"));
  22.183 +	fo->load(flagsPath+"flag-arrow-2up.png");
  22.184  	fo->setName("2arrow-up");
  22.185  	fo->setGroup("standard-arrow");
  22.186  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.187 @@ -1206,7 +1229,7 @@
  22.188  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.189  	standardFlagsDefault->addFlag (fo);	
  22.190  
  22.191 -	fo->load(QPixmap(flagsPath+"flag-arrow-2down.png"));
  22.192 +	fo->load(flagsPath+"flag-arrow-2down.png");
  22.193  	fo->setName("2arrow-down");
  22.194  	fo->setGroup("standard-arrow");
  22.195  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.196 @@ -1218,7 +1241,7 @@
  22.197  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.198  	standardFlagsDefault->addFlag (fo);	
  22.199  
  22.200 -	fo->load(QPixmap(flagsPath+"flag-thumb-up.png"));
  22.201 +	fo->load(flagsPath+"flag-thumb-up.png");
  22.202  	fo->setName("thumb-up");
  22.203  	fo->setGroup("standard-thumb");
  22.204  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.205 @@ -1230,7 +1253,7 @@
  22.206  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.207  	standardFlagsDefault->addFlag (fo);	
  22.208  
  22.209 -	fo->load(QPixmap(flagsPath+"flag-thumb-down.png"));
  22.210 +	fo->load(flagsPath+"flag-thumb-down.png");
  22.211  	fo->setName("thumb-down");
  22.212  	fo->setGroup("standard-thumb");
  22.213  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.214 @@ -1242,7 +1265,7 @@
  22.215  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.216  	standardFlagsDefault->addFlag (fo);	
  22.217  	
  22.218 -	fo->load(QPixmap(flagsPath+"flag-rose.png"));
  22.219 +	fo->load(flagsPath+"flag-rose.png");
  22.220  	fo->setName("rose");
  22.221  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.222  	tb->addAction (a);
  22.223 @@ -1253,7 +1276,7 @@
  22.224  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.225  	standardFlagsDefault->addFlag (fo);	
  22.226  
  22.227 -	fo->load(QPixmap(flagsPath+"flag-heart.png"));
  22.228 +	fo->load(flagsPath+"flag-heart.png");
  22.229  	fo->setName("heart");
  22.230  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.231  	tb->addAction (a);
  22.232 @@ -1263,7 +1286,7 @@
  22.233  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.234  	standardFlagsDefault->addFlag (fo);	
  22.235  
  22.236 -	fo->load(QPixmap(flagsPath+"flag-present.png"));
  22.237 +	fo->load(flagsPath+"flag-present.png");
  22.238  	fo->setName("present");
  22.239  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.240  	tb->addAction (a);
  22.241 @@ -1274,7 +1297,7 @@
  22.242  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.243  	standardFlagsDefault->addFlag (fo);	
  22.244  
  22.245 -	fo->load(QPixmap(flagsPath+"flag-flash.png"));
  22.246 +	fo->load(flagsPath+"flag-flash.png");
  22.247  	fo->setName("flash");
  22.248  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.249  	tb->addAction (a);
  22.250 @@ -1285,7 +1308,7 @@
  22.251  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.252  	standardFlagsDefault->addFlag (fo);	
  22.253  	
  22.254 -	fo->load(QPixmap(flagsPath+"flag-info.png"));
  22.255 +	fo->load(flagsPath+"flag-info.png");
  22.256  	// Original: xsldbg_output.png
  22.257  	fo->setName("info");
  22.258  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.259 @@ -1297,7 +1320,7 @@
  22.260  	connect (a, SIGNAL( triggered() ), this, SLOT( standardFlagChanged() ) );
  22.261  	standardFlagsDefault->addFlag (fo);	
  22.262  
  22.263 -	fo->load(QPixmap(flagsPath+"flag-lifebelt.png"));
  22.264 +	fo->load(flagsPath+"flag-lifebelt.png");
  22.265  	// Original khelpcenter.png
  22.266  	fo->setName("lifebelt");
  22.267  	a=new QAction (fo->getPixmap(),fo->getName(),this);
  22.268 @@ -1507,6 +1530,7 @@
  22.269  	actionFormatLinkColorHint->addTo( canvasContextMenu );
  22.270  	actionFormatLinkColor->addTo( canvasContextMenu );
  22.271  	actionFormatBackColor->addTo( canvasContextMenu );
  22.272 +	actionFormatBackImage->addTo( canvasContextMenu );
  22.273  
  22.274  	// Menu for last opened files
  22.275  	// Create actions
  22.276 @@ -1620,12 +1644,15 @@
  22.277  void Main::fileNew()
  22.278  {
  22.279  	QString fn="unnamed";
  22.280 -	MapEditor* medit = new MapEditor ( NULL);
  22.281 -	tabWidget->addTab (medit,fn);
  22.282 -	tabWidget->showPage(medit);
  22.283 -	medit->viewport()->setFocus();
  22.284 +	MapEditor* me = new MapEditor ( NULL);
  22.285 +	tabWidget->addTab (me,fn);
  22.286 +	tabWidget->showPage(me);
  22.287 +	me->viewport()->setFocus();
  22.288 +	me->setAntiAlias (actionViewToggleAntiAlias->isOn());
  22.289 +	me->setSmoothPixmap(actionViewToggleSmoothPixmapTransform->isOn());
  22.290 +	
  22.291  	// For the very first map we do not have flagrows yet...
  22.292 -	medit->select("mc:");
  22.293 +	me->select("mc:");
  22.294  }
  22.295  
  22.296  ErrorCode Main::fileLoad(QString fn, const LoadMode &lmode)
  22.297 @@ -1692,6 +1719,8 @@
  22.298  			tabWidget->addTab (me,fn);
  22.299  			tabIndex=tabWidget->indexOf (me);
  22.300  			tabWidget->setCurrentPage (tabIndex);
  22.301 +			me->setAntiAlias (actionViewToggleAntiAlias->isOn());
  22.302 +			me->setSmoothPixmap(actionViewToggleSmoothPixmapTransform->isOn());
  22.303  		}
  22.304  		
  22.305  		// Check, if file exists (important for creating new files
  22.306 @@ -2629,7 +2658,7 @@
  22.307  			if (ok)
  22.308  			{
  22.309  #if defined(Q_OS_MACX)
  22.310 -				p = currentMapEditor()->mapToGlobal( currentMapEditor()->worldMatrix().map( p));
  22.311 +				p=currentMapEditor()->mapTo (this,p);
  22.312  				QDialog *d =new QDialog(NULL);
  22.313  				QLineEdit *le=new QLineEdit (d);
  22.314  				d->setWindowFlags (Qt::FramelessWindowHint);
  22.315 @@ -2645,7 +2674,7 @@
  22.316  				delete (d);
  22.317  				editHeadingFinished();
  22.318  #else
  22.319 -				p = currentMapEditor()->mapTo(this, currentMapEditor()->worldMatrix().map( p));
  22.320 +				p=currentMapEditor()->mapTo (this,p);
  22.321  				lineedit->setGeometry(p.x(),p.y(),230,25);
  22.322  				lineedit->setText(s);
  22.323  				lineedit->setCursorPosition(1);
  22.324 @@ -3011,6 +3040,12 @@
  22.325  		currentMapEditor()->selectMapBackgroundColor();
  22.326  }
  22.327  
  22.328 +void Main::formatSelectBackImage()
  22.329 +{
  22.330 +	if (currentMapEditor())
  22.331 +		currentMapEditor()->selectMapBackgroundImage();
  22.332 +}
  22.333 +
  22.334  void Main::formatSelectLinkColor()
  22.335  {
  22.336  	if (currentMapEditor())
  22.337 @@ -3058,7 +3093,7 @@
  22.338  	{
  22.339  		QMatrix m;
  22.340  		m.reset();
  22.341 -		currentMapEditor()->setWorldMatrix( m );
  22.342 +		currentMapEditor()->setMatrix( m );
  22.343  		currentMapEditor()->setViewCenter();
  22.344  		currentMapEditor()->adjustCanvasSize();
  22.345  	}	
  22.346 @@ -3068,9 +3103,9 @@
  22.347  {
  22.348  	if (currentMapEditor())
  22.349  	{
  22.350 -		QMatrix m = currentMapEditor()->worldMatrix();
  22.351 +		QMatrix m = currentMapEditor()->matrix();
  22.352  		m.scale( 1.25, 1.25 );
  22.353 -		currentMapEditor()->setWorldMatrix( m );
  22.354 +		currentMapEditor()->setMatrix( m );
  22.355  		currentMapEditor()->setViewCenter();
  22.356  		currentMapEditor()->adjustCanvasSize();
  22.357  	}	
  22.358 @@ -3080,9 +3115,9 @@
  22.359  {
  22.360  	if (currentMapEditor())
  22.361  	{
  22.362 -		QMatrix m = currentMapEditor()->worldMatrix();
  22.363 +		QMatrix m = currentMapEditor()->matrix();
  22.364  		m.scale( 0.8, 0.8 );
  22.365 -		currentMapEditor()->setWorldMatrix( m );
  22.366 +		currentMapEditor()->setMatrix( m );
  22.367  		currentMapEditor()->setViewCenter();
  22.368  		currentMapEditor()->adjustCanvasSize();
  22.369  	}	
  22.370 @@ -3142,6 +3177,31 @@
  22.371  
  22.372  }
  22.373  
  22.374 +void Main::windowToggleAntiAlias()
  22.375 +{
  22.376 +	bool b=actionViewToggleAntiAlias->isOn();
  22.377 +	MapEditor *me;
  22.378 +	for (int i=0;i<tabWidget->count();i++)
  22.379 +	{
  22.380 +		
  22.381 +		me=(MapEditor*)tabWidget->page(i);
  22.382 +		me->setAntiAlias(b);
  22.383 +	}	
  22.384 +
  22.385 +}
  22.386 +
  22.387 +void Main::windowToggleSmoothPixmap()
  22.388 +{
  22.389 +	bool b=actionViewToggleSmoothPixmapTransform->isOn();
  22.390 +	MapEditor *me;
  22.391 +	for (int i=0;i<tabWidget->count();i++)
  22.392 +	{
  22.393 +		
  22.394 +		me=(MapEditor*)tabWidget->page(i);
  22.395 +		me->setSmoothPixmap(b);
  22.396 +	}	
  22.397 +}
  22.398 +
  22.399  void Main::updateHistory(SimpleSettings &undoSet)
  22.400  {
  22.401  	historyWindow->update (undoSet);
  22.402 @@ -3457,12 +3517,12 @@
  22.403  	}
  22.404  	
  22.405  	QString docpath=docdir.path()+"/"+docname;
  22.406 +	QStringList args;
  22.407  	Process *pdfProc = new Process();
  22.408 -	pdfProc->clearArguments();
  22.409 -	pdfProc->addArgument( settings.value("/mainwindow/readerPDF").toString());
  22.410 -	pdfProc->addArgument( docpath);
  22.411 -
  22.412 -	if ( !pdfProc->start() ) 
  22.413 +	args <<docpath;
  22.414 +
  22.415 +	pdfProc->start( settings.value("/mainwindow/readerPDF").toString());
  22.416 +	if ( !pdfProc->waitForStarted() ) 
  22.417  	{
  22.418  		// error handling
  22.419  		QMessageBox::warning(0, 
    23.1 --- a/mainwindow.h	Thu Nov 23 16:18:26 2006 +0000
    23.2 +++ b/mainwindow.h	Fri Dec 08 20:18:56 2006 +0000
    23.3 @@ -143,6 +143,7 @@
    23.4  	void formatLinkStylePolyLine();
    23.5  	void formatLinkStylePolyParabel();
    23.6      void formatSelectBackColor();
    23.7 +    void formatSelectBackImage();
    23.8      void formatSelectLinkColor();
    23.9      void formatToggleLinkColorHint();
   23.10  	void formatFrameNone();
   23.11 @@ -163,6 +164,8 @@
   23.12  	void windowToggleNoteEditor();
   23.13  	void windowToggleHistory();
   23.14  	void updateHistory(SimpleSettings &);
   23.15 +	void windowToggleAntiAlias();
   23.16 +	void windowToggleSmoothPixmap();
   23.17  	void updateNoteFlag();
   23.18  	void updateActions();
   23.19  	ModMode getModMode();
   23.20 @@ -249,6 +252,7 @@
   23.21  	QAction* actionFormatColorSubtree;
   23.22  	QAction* actionFormatLinkColorHint;
   23.23  	QAction* actionFormatBackColor;
   23.24 +	QAction* actionFormatBackImage;
   23.25  	QAction* actionFormatLinkColor;
   23.26  	QAction *actionFormatIncludeImagesVer;
   23.27  	QAction *actionFormatIncludeImagesHor;
   23.28 @@ -271,6 +275,8 @@
   23.29  
   23.30  	QAction *actionViewToggleNoteEditor;
   23.31  	QAction *actionViewToggleHistoryWindow;
   23.32 +	QAction *actionViewToggleAntiAlias;
   23.33 +	QAction *actionViewToggleSmoothPixmapTransform;
   23.34  
   23.35  	QAction* actionSettingsAutoEdit;
   23.36  	QAction* actionSettingsAutoSelectHeading;
    24.1 --- a/mapcenterobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    24.2 +++ b/mapcenterobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    24.3 @@ -12,9 +12,9 @@
    24.4      init();
    24.5  }
    24.6  
    24.7 -MapCenterObj::MapCenterObj(Q3Canvas* c) : BranchObj (c)
    24.8 +MapCenterObj::MapCenterObj(QGraphicsScene* s) : BranchObj (s)
    24.9  {
   24.10 -//    cout << "Const MapCenterObj   canvas="<<c<<"\n";
   24.11 +//    cout << "Const MapCenterObj   canvas="<<s<<"\n";
   24.12      init();
   24.13  }
   24.14  
   24.15 @@ -95,7 +95,7 @@
   24.16  	if (repositionRequest) reposition();
   24.17  }
   24.18  
   24.19 -LinkableMapObj* MapCenterObj::findMapObj(QPoint p, LinkableMapObj *excludeLMO)
   24.20 +LinkableMapObj* MapCenterObj::findMapObj(QPointF p, LinkableMapObj *excludeLMO)
   24.21  	{
   24.22  	LinkableMapObj *lmo;
   24.23  
   24.24 @@ -116,16 +116,16 @@
   24.25  	return NULL;
   24.26  }
   24.27  
   24.28 -QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPoint &offset)
   24.29 +QString MapCenterObj::saveToDir (const QString &tmpdir,const QString &prefix, int verbose, const QPointF &offset)
   24.30  {
   24.31      QString s,a;
   24.32  
   24.33  	// save area, if not scrolled
   24.34  	QString areaAttr=
   24.35 -		attribut("x1",QString().setNum(absPos.x()-offset.x(),10)) +
   24.36 -		attribut("y1",QString().setNum(absPos.y()-offset.y(),10)) +
   24.37 -		attribut("x2",QString().setNum(absPos.x()+width()-offset.x(),10)) +
   24.38 -		attribut("y2",QString().setNum(absPos.y()+height()-offset.y(),10));
   24.39 +		attribut("x1",QString().setNum(absPos.x()-offset.x())) +
   24.40 +		attribut("y1",QString().setNum(absPos.y()-offset.y())) +
   24.41 +		attribut("x2",QString().setNum(absPos.x()+width()-offset.x())) +
   24.42 +		attribut("y2",QString().setNum(absPos.y()+height()-offset.y()));
   24.43  	
   24.44  	// Providing an ID for a branch makes export to XHTML easier
   24.45  	QString idAttr;
    25.1 --- a/mapcenterobj.h	Thu Nov 23 16:18:26 2006 +0000
    25.2 +++ b/mapcenterobj.h	Fri Dec 08 20:18:56 2006 +0000
    25.3 @@ -10,7 +10,7 @@
    25.4  class MapCenterObj:public BranchObj {
    25.5  public:
    25.6      MapCenterObj ();
    25.7 -    MapCenterObj (Q3Canvas*);
    25.8 +    MapCenterObj (QGraphicsScene *);
    25.9      ~MapCenterObj ();
   25.10      void clear();
   25.11      void init();
   25.12 @@ -20,8 +20,8 @@
   25.13      virtual void moveAllBy (double,double);
   25.14      virtual void updateLink();
   25.15      virtual void updateRelPositions();
   25.16 -    LinkableMapObj* findMapObj(QPoint,LinkableMapObj*);	// find MapObj 
   25.17 -	virtual QString saveToDir (const QString&,const QString&,int, const QPoint&);// Save data recursivly to tempdir
   25.18 +    LinkableMapObj* findMapObj(QPointF,LinkableMapObj*);	// find MapObj 
   25.19 +	virtual QString saveToDir (const QString&,const QString&,int, const QPointF&);// Save data recursivly to tempdir
   25.20  	void setVersion(const  QString &);
   25.21  	void setAuthor  (const QString &);
   25.22  	QString getAuthor ();
    26.1 --- a/mapeditor.cpp	Thu Nov 23 16:18:26 2006 +0000
    26.2 +++ b/mapeditor.cpp	Fri Dec 08 20:18:56 2006 +0000
    26.3 @@ -1,5 +1,9 @@
    26.4  #include "mapeditor.h"
    26.5  
    26.6 +#include <q3dragobject.h>
    26.7 +#include <q3urloperator.h>
    26.8 +#include <q3networkprotocol.h>
    26.9 +#include <q3paintdevicemetrics.h>
   26.10  #include <q3filedialog.h>
   26.11  
   26.12  #include <iostream>
   26.13 @@ -53,30 +57,34 @@
   26.14  
   26.15  ///////////////////////////////////////////////////////////////////////
   26.16  ///////////////////////////////////////////////////////////////////////
   26.17 -MapEditor::MapEditor(
   26.18 -	QWidget* parent, const char* name, Qt::WFlags f) :
   26.19 -  Q3CanvasView(parent,name,f), urlOperator(0), imageBuffer(0)
   26.20 +MapEditor::MapEditor( QWidget* parent) :
   26.21 +  QGraphicsView(parent), urlOperator(0), imageBuffer(0)
   26.22  {
   26.23  	//cout << "Constructor ME "<<this<<endl;
   26.24  	mapNum++;
   26.25  
   26.26      viewport()->setAcceptDrops(true);
   26.27  
   26.28 -    mapCanvas = new Q3Canvas(width(),height());
   26.29 -	mapCanvas->setAdvancePeriod(30);
   26.30 -	mapCanvas->setBackgroundColor (Qt::white);
   26.31 -
   26.32 -    setCanvas (mapCanvas);
   26.33 +	mapScene= new QGraphicsScene(parent);
   26.34 +	//mapScene= new QGraphicsScene(QRectF(0,0,width(),height()), parent);
   26.35 +	mapScene->setBackgroundBrush (QBrush(Qt::white, Qt::SolidPattern));
   26.36 +
   26.37 +
   26.38 +    setScene (mapScene);
   26.39  	
   26.40 +    /* FIXME not needed in QT4? 
   26.41 +	// Maybe check QAbstractScrollArea...
   26.42  	// Always show scroll bars (automatic would flicker sometimes)
   26.43 -	setVScrollBarMode ( Q3ScrollView::AlwaysOn );
   26.44 -	setHScrollBarMode ( Q3ScrollView::AlwaysOn );
   26.45 -
   26.46 -    mapCenter = new MapCenterObj(mapCanvas);
   26.47 +	setVScrollBarMode ( QScrollView::AlwaysOn );
   26.48 +	setHScrollBarMode ( QScrollView::AlwaysOn );
   26.49 +	*/
   26.50 +
   26.51 +    mapCenter = new MapCenterObj(mapScene);
   26.52      mapCenter->setVisibility (true);
   26.53  	mapCenter->setMapEditor (this);
   26.54  	mapCenter->setHeading (tr("New Map","Heading of mapcenter in new map"));
   26.55 -	mapCenter->move(mapCanvas->width()/2-mapCenter->width()/2,mapCanvas->height()/2-mapCenter->height()/2);
   26.56 +	//mapCenter->move(mapScene->width()/2-mapCenter->width()/2,mapScene->height()/2-mapCenter->height()/2);
   26.57 +	mapCenter->move(0,0);
   26.58  
   26.59      printer=NULL;
   26.60  
   26.61 @@ -157,60 +165,64 @@
   26.62      return mapCenter;
   26.63  }
   26.64  
   26.65 -Q3Canvas* MapEditor::getCanvas()
   26.66 +QGraphicsScene * MapEditor::getScene()
   26.67  {
   26.68 -    return mapCanvas;
   26.69 +    return mapScene;
   26.70  }
   26.71  
   26.72  void MapEditor::adjustCanvasSize()
   26.73  {
   26.74 -	// To adjust the canvas to map, viewport size and position, we have to
   26.75 +
   26.76 +/* FIXME QT4 probably not needed any longer!
   26.77 +
   26.78 +	// To adjust the scene to map, viewport size and position, we have to
   26.79  	// do some coordinate magic...
   26.80  	//
   26.81  	// Get rectangle of (scroll-)view. 
   26.82 -	// We want to be in canvas coords, so
   26.83 +	// We want to be in scene coords, so
   26.84  	// we map. Important if view is zoomed...
   26.85 -	QRect view = inverseWorldMatrix().mapRect( QRect( contentsX(), contentsY(),
   26.86 +	QRectF view = inverseWorldMatrix().mapRect( QRectF( contentsX(), contentsY(),
   26.87  												visibleWidth(), visibleHeight()) );	
   26.88  												
   26.89 -	// Now we need the bounding box of view AND map to calc the correct canvas size.
   26.90 +	// Now we need the bounding box of view AND map to calc the correct scene size.
   26.91  	// Why? Because if the map itself is moved out of view, the view has to be enlarged
   26.92  	// to avoid jumping aroung...
   26.93 -	QRect map=mapCenter->getTotalBBox();
   26.94 +	QRectF map=mapCenter->getTotalBBox();
   26.95  
   26.96  	// right edge - left edge
   26.97  	int cw= max(map.x() + map.width(),  view.x() + view.width())  - min(map.x(), view.x());
   26.98  	int ch= max(map.y() + map.height(), view.y() + view.height()) - min(map.y(), view.y());
   26.99  
  26.100  
  26.101 -	if ( (cw!=mapCanvas->width()) || (ch!=mapCanvas->height()) ||
  26.102 -		!mapCanvas->onCanvas (map.topLeft()) || !mapCanvas->onCanvas (map.bottomRight())
  26.103 +	if ( (cw!=mapScene->width()) || (ch!=mapScene->height()) ||
  26.104 +		!mapScene->onCanvas (map.topLeft()) || !mapScene->onCanvas (map.bottomRight())
  26.105  	)	
  26.106  	{	
  26.107 -		// move the map on canvas (in order to not move it on screen) this is neccessary
  26.108 -		// a) if topleft corner of canvas is left or above topleft corner of view and also left of
  26.109 +		// move the map on scene (in order to not move it on screen) this is neccessary
  26.110 +		// a) if topleft corner of scene is left or above topleft corner of view and also left of
  26.111  		//    above topleft corner of map. E.g. if map is completly inside view, but it would be possible 
  26.112 -		//    to scroll to an empty area of canvas to the left.
  26.113 -		// b) if topleft corner of map left of or above topleft of canvas
  26.114 +		//    to scroll to an empty area of scene to the left.
  26.115 +		// b) if topleft corner of map left of or above topleft of scene
  26.116  		int dx=0;
  26.117  		int dy=0;
  26.118  
  26.119 -		if (cw > mapCanvas->width() )
  26.120 +		if (cw > mapScene->width() )
  26.121  		{
  26.122  			if (map.x()<0) dx=-map.x();	
  26.123  		}
  26.124 -		if (cw <  mapCanvas->width() )
  26.125 +		if (cw <  mapScene->width() )
  26.126  			dx=-min (view.x(),map.x());
  26.127 -		if (ch > mapCanvas->height() )
  26.128 +		if (ch > mapScene->height() )
  26.129  		{
  26.130  			if (map.y()<0) dy=-map.y();	
  26.131  		}
  26.132 -		if (ch <  mapCanvas->height() )
  26.133 +		if (ch <  mapScene->height() )
  26.134  		{
  26.135  			dy=-min (view.y(),map.y());
  26.136  		}
  26.137  		// We really have to resize now. Let's go...
  26.138 -		mapCanvas->resize (cw,ch);
  26.139 +		// FIXME old code mapScene->resize (cw,ch);
  26.140 +		mapScene->setSceneRect (QRectFF(0,0,cw,ch));
  26.141  		if ( (dx!=0) || (dy!=0) ) 
  26.142  		{
  26.143  			mapCenter->moveAllBy(dx,dy);
  26.144 @@ -221,6 +233,8 @@
  26.145  			scrollBy (dx,dy);
  26.146  		}	
  26.147  	}
  26.148 +
  26.149 +	*/
  26.150  }
  26.151  
  26.152  bool MapEditor::isRepositionBlocked()
  26.153 @@ -257,12 +271,12 @@
  26.154  	d.mkdir (tmpMapDir);
  26.155  }
  26.156  
  26.157 -QString MapEditor::saveToDir(const QString &tmpdir, const QString &prefix, bool writeflags, const QPoint &offset, LinkableMapObj *saveSel)
  26.158 +QString MapEditor::saveToDir(const QString &tmpdir, const QString &prefix, bool writeflags, const QPointF &offset, LinkableMapObj *saveSel)
  26.159  {
  26.160  	// tmpdir		temporary directory to which data will be written
  26.161  	// prefix		mapname, which will be appended to images etc.
  26.162  	// writeflags	Only write flags for "real" save of map, not undo
  26.163 -	// offset		offset of bbox of whole map in canvas. 
  26.164 +	// offset		offset of bbox of whole map in scene. 
  26.165  	//				Needed for XML export
  26.166  	
  26.167  	// Save Header
  26.168 @@ -293,7 +307,7 @@
  26.169  		mapAttr+= attribut("author",mapCenter->getAuthor()) +
  26.170  				  attribut("comment",mapCenter->getComment()) +
  26.171  			      attribut("date",mapCenter->getDate()) +
  26.172 -		          attribut("backgroundColor", mapCanvas->backgroundColor().name() ) +
  26.173 +		          attribut("backgroundColor", mapScene->backgroundBrush().color().name() ) +
  26.174  		          attribut("linkStyle", ls ) +
  26.175  		          attribut("linkColor", defLinkColor.name() ) +
  26.176  		          attribut("defXLinkColor", defXLinkColor.name() ) +
  26.177 @@ -307,7 +321,7 @@
  26.178  	
  26.179  	// Reset the counters before saving
  26.180  	// TODO constr. of FIO creates lots of objects, better do this in some other way...
  26.181 -	FloatImageObj (mapCanvas).resetSaveCounter();
  26.182 +	FloatImageObj (mapScene).resetSaveCounter();
  26.183  
  26.184  	// Build xml recursivly
  26.185  	if (!saveSel || typeid (*saveSel) == typeid (MapCenterObj))
  26.186 @@ -447,7 +461,7 @@
  26.187  
  26.188  	// Save depending on how much needs to be saved	
  26.189  	if (saveSel)
  26.190 -		backupXML=saveToDir (bakMapDir,mapName+"-",false, QPoint (),saveSel);
  26.191 +		backupXML=saveToDir (bakMapDir,mapName+"-",false, QPointF (),saveSel);
  26.192  		
  26.193  	QString undoCommand="";
  26.194  	if (savemode==UndoCommand)
  26.195 @@ -496,8 +510,8 @@
  26.196  	if (saveSel) cout << "    saveSel="<<saveSel->getSelectString().ascii()<<endl;
  26.197  	cout << "    ---------------------------"<<endl;
  26.198  
  26.199 +	mainWindow->updateHistory (undoSet);
  26.200  	setChanged();
  26.201 -	mainWindow->updateHistory (undoSet);
  26.202  	updateActions();
  26.203  }
  26.204  
  26.205 @@ -1136,9 +1150,9 @@
  26.206  
  26.207  	QString saveFile;
  26.208  	if (savemode==CompleteMap || selection==NULL)
  26.209 -		saveFile=saveToDir (fileDir,mapName+"-",true,QPoint(),NULL);
  26.210 +		saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),NULL);
  26.211  	else	
  26.212 -		saveFile=saveToDir (fileDir,mapName+"-",true,QPoint(),selection);
  26.213 +		saveFile=saveToDir (fileDir,mapName+"-",true,QPointF(),selection);
  26.214  
  26.215  	if (!saveStringToDisk(fileDir+fname,saveFile))
  26.216  		return 1;
  26.217 @@ -1172,7 +1186,7 @@
  26.218  		printer->setPrinterName (settings.value("/mainwindow/printerName",printer->printerName()).toString());
  26.219  	}
  26.220  
  26.221 -	QRect totalBBox=mapCenter->getTotalBBox();
  26.222 +	QRectF totalBBox=mapCenter->getTotalBBox();
  26.223  
  26.224  	// Try to set orientation automagically
  26.225  	// Note: Interpretation of generated postscript is amibiguous, if 
  26.226 @@ -1201,15 +1215,18 @@
  26.227  
  26.228  		// Handle sizes of map and paper:
  26.229  		//
  26.230 -		// setWindow defines which part of the canvas will be transformed 
  26.231 +		// setWindow defines which part of the scene will be transformed 
  26.232  		// setViewport defines area on paper in device coordinates (dpi)
  26.233  		// e.g. (0,50,700,700) is upper part on A4
  26.234  		// see also /usr/lib/qt3/doc/html/coordsys.html
  26.235  
  26.236 -		double paperAspect = (double)printer->width()   / (double)printer->height();
  26.237 +		Q3PaintDeviceMetrics metrics (printer);
  26.238 +
  26.239 +		double paperAspect = (double)metrics.width()   / (double)metrics.height();
  26.240  		double   mapAspect = (double)totalBBox.width() / (double)totalBBox.height();
  26.241  
  26.242 -		QRect mapRect=totalBBox;
  26.243 +		QRectF mapRect=totalBBox;
  26.244 +/* FIXME todo for QT4
  26.245  		Q3CanvasRectangle *frame=NULL;
  26.246  		Q3CanvasText *footerFN=NULL;
  26.247  		Q3CanvasText *footerDate=NULL;
  26.248 @@ -1221,32 +1238,31 @@
  26.249  				// Print frame around map
  26.250  				mapRect.setRect (totalBBox.x()-10, totalBBox.y()-10, 
  26.251  					totalBBox.width()+20, totalBBox.height()+20);
  26.252 -				frame=new Q3CanvasRectangle (mapRect,mapCanvas);
  26.253 +				frame=new Q3CanvasRectangle (mapRect,mapScene);
  26.254  				frame->setBrush (QColor(Qt::white));
  26.255  				frame->setPen (QColor(Qt::black));
  26.256  				frame->setZ(0);
  26.257  				frame->show();    
  26.258  			}		
  26.259 -			/* TODO remove after testing 
  26.260 -			QCanvasLine *l=new QCanvasLine (mapCanvas);
  26.261 -			l->setPoints (0,0,mapRect.width(),mapRect.height());
  26.262 -			l->setPen (QPen(QColor(black), 1));
  26.263 -			l->setZ (200);
  26.264 -			l->show();
  26.265 -			*/
  26.266 +			// TODO remove after testing 
  26.267 +			//QCanvasLine *l=new QCanvasLine (mapScene);
  26.268 +			//l->setPoints (0,0,mapRect.width(),mapRect.height());
  26.269 +			//l->setPen (QPen(QColor(black), 1));
  26.270 +			//l->setZ (200);
  26.271 +			//l->show();
  26.272  
  26.273  			if (printFooter) 
  26.274  			{
  26.275  				// Print footer below map
  26.276  				QFont font;		
  26.277  				font.setPointSize(10);
  26.278 -				footerFN=new Q3CanvasText (mapCanvas);
  26.279 +				footerFN=new Q3CanvasText (mapScene);
  26.280  				footerFN->setText ("VYM - " + fileName);
  26.281  				footerFN->setFont(font);
  26.282  				footerFN->move (mapRect.x(), mapRect.y() + mapRect.height() );
  26.283  				footerFN->setZ(Z_TEXT);
  26.284  				footerFN->show();    
  26.285 -				footerDate=new Q3CanvasText (mapCanvas);
  26.286 +				footerDate=new Q3CanvasText (mapScene);
  26.287  				footerDate->setText (QDate::currentDate().toString(Qt::TextDate));
  26.288  				footerDate->setFont(font);
  26.289  				footerDate->move (mapRect.x()+mapRect.width()-footerDate->boundingRect().width(), mapRect.y() + mapRect.height() );
  26.290 @@ -1258,19 +1274,21 @@
  26.291  		{
  26.292  			pp.setWindow (mapRect);
  26.293  		}	
  26.294 +*/
  26.295  
  26.296  		if (mapAspect>=paperAspect)
  26.297  		{
  26.298  			// Fit horizontally to paper width
  26.299 -			pp.setViewport(0,0, printer->width(),(int)(printer->width()/mapAspect) );	
  26.300 +			pp.setViewport(0,0, metrics.width(),(int)(metrics.width()/mapAspect) );	
  26.301  		}	else
  26.302  		{
  26.303  			// Fit vertically to paper height
  26.304 -			pp.setViewport(0,0,(int)(printer->height()*mapAspect),printer->height());	
  26.305 +			pp.setViewport(0,0,(int)(metrics.height()*mapAspect),metrics.height());	
  26.306  		}	
  26.307  
  26.308 -		mapCanvas->drawArea(mapRect, &pp);	// draw Canvas to printer
  26.309 -
  26.310 +		mapScene->render(&pp);	// draw scene to printer
  26.311 +
  26.312 +/*
  26.313  		// Delete Frame and footer
  26.314  		if (footerFN) 
  26.315  		{
  26.316 @@ -1278,6 +1296,7 @@
  26.317  			delete (footerDate);
  26.318  		}	
  26.319  		if (frame)  delete (frame);
  26.320 +*/		
  26.321  
  26.322  		// Restore selection
  26.323  		if (oldselection) 
  26.324 @@ -1291,9 +1310,20 @@
  26.325  	}
  26.326  }
  26.327  
  26.328 +void MapEditor::setAntiAlias (bool b)
  26.329 +{
  26.330 +	setRenderHint(QPainter::Antialiasing,b);
  26.331 +}
  26.332 +
  26.333 +void MapEditor::setSmoothPixmap(bool b)
  26.334 +{
  26.335 +	setRenderHint(QPainter::SmoothPixmapTransform,b);
  26.336 +}
  26.337 +
  26.338  QPixmap MapEditor::getPixmap()
  26.339  {
  26.340 -	QRect mapRect=mapCenter->getTotalBBox();
  26.341 +/* FIXME not ported yet to QT4
  26.342 +	QRectF mapRect=mapCenter->getTotalBBox();
  26.343  	QPixmap pix (mapRect.size());
  26.344  	QPainter pp (&pix);
  26.345  
  26.346 @@ -1307,7 +1337,7 @@
  26.347  
  26.348  	pp.setWindow (mapRect);
  26.349  
  26.350 -	mapCanvas->drawArea(mapRect, &pp);	// draw Canvas to painter
  26.351 +	mapScene->drawArea(mapRect, &pp);	// draw scene to painter
  26.352  
  26.353  
  26.354  	// Restore selection
  26.355 @@ -1318,6 +1348,8 @@
  26.356  	}	
  26.357  	
  26.358  	return pix;
  26.359 +*/
  26.360 +return QPixmap();
  26.361  }
  26.362  
  26.363  void MapEditor::setHideTmpMode (HideTmpMode mode)
  26.364 @@ -1326,7 +1358,7 @@
  26.365  	mapCenter->setHideTmp (hidemode);
  26.366  	mapCenter->reposition();
  26.367  	adjustCanvasSize();
  26.368 -	canvas()->update();
  26.369 +	scene()->update();
  26.370  }
  26.371  
  26.372  HideTmpMode MapEditor::getHideTmpMode()
  26.373 @@ -1424,7 +1456,7 @@
  26.374  	{
  26.375  		// write to directory
  26.376  		QString clipfile="part";
  26.377 -		QString saveFile=saveToDir (fileDir,clipfile+"-",true,QPoint(),selection);
  26.378 +		QString saveFile=saveToDir (fileDir,clipfile+"-",true,QPointF(),selection);
  26.379  		QFile file;
  26.380  
  26.381  		file.setName ( clipboardDir + "/"+clipfile+".xml");
  26.382 @@ -1505,8 +1537,8 @@
  26.383  	undoSet.setEntry ("/history/curStep",QString::number(curStep));
  26.384  	undoSet.writeSettings(histPath);
  26.385  
  26.386 +	mainWindow->updateHistory (undoSet);
  26.387  	updateActions();
  26.388 -	mainWindow->updateHistory (undoSet);
  26.389  
  26.390  	/* TODO remove testing
  26.391  	cout << "ME::redo() end\n";
  26.392 @@ -1747,11 +1779,11 @@
  26.393  {
  26.394  	if (selection)
  26.395  	{
  26.396 -		QString ps=qpointToString (selection->getAbsPos());
  26.397 +		QString ps=qpointfToString (selection->getAbsPos());
  26.398  		QString s=selection->getSelectString();
  26.399  		saveState(
  26.400  			s, "move "+ps, 
  26.401 -			s, "move "+qpointToString (QPoint (x,y)), 
  26.402 +			s, "move "+qpointfToString (QPointF (x,y)), 
  26.403  			QString("Move %1 to  %2").arg(getName(selection)).arg(ps));
  26.404  		selection->move(x,y);
  26.405  		mapCenter->reposition();
  26.406 @@ -1766,11 +1798,11 @@
  26.407  				      typeid(*selection) == typeid(MapCenterObj) ||
  26.408  					  typeid(*selection) == typeid (FloatImageObj))) 
  26.409  	{
  26.410 -		QString ps=qpointToString (selection->getRelPos());
  26.411 +		QString ps=qpointfToString (selection->getRelPos());
  26.412  		QString s=selection->getSelectString();
  26.413  		saveState(
  26.414  			s, "moveRel "+ps, 
  26.415 -			s, "moveRel "+qpointToString (QPoint (x,y)), 
  26.416 +			s, "moveRel "+qpointfToString (QPointF (x,y)), 
  26.417  			QString("Move %1 to relativ position %2").arg(getName(selection)).arg(ps));
  26.418  		((OrnamentedObj*)selection)->move2RelPos (x,y);
  26.419  		mapCenter->reposition();
  26.420 @@ -1822,9 +1854,7 @@
  26.421  	{
  26.422  		ok=true;
  26.423  		ensureSelectionVisible();
  26.424 -		p = ((BranchObj*)selection)->getAbsPos();
  26.425 -		p.setX (p.x() - contentsX());
  26.426 -		p.setY (p.y() - contentsY() + ((BranchObj*)selection)->height()/2);
  26.427 +		p=mapFromScene(selection->getAbsPos());
  26.428  		return ((BranchObj*)selection)->getHeading();
  26.429  	}
  26.430  	ok=false;
  26.431 @@ -1967,7 +1997,7 @@
  26.432  		 // We accept no MapCenterObj here, so we _have_ a parent
  26.433  	{
  26.434  		BranchObj* bo = (BranchObj*) selection;
  26.435 -		QPoint p=bo->getRelPos();
  26.436 +		QPointF p=bo->getRelPos();
  26.437  
  26.438  
  26.439  		BranchObj *parbo=(BranchObj*)(selection->getParObj());
  26.440 @@ -2443,29 +2473,67 @@
  26.441  	}
  26.442  }
  26.443  
  26.444 +void MapEditor::selectMapBackgroundImage ()
  26.445 +{
  26.446 +	Q3FileDialog *fd=new Q3FileDialog( this);
  26.447 +	fd->setMode (Q3FileDialog::ExistingFile);
  26.448 +	fd->addFilter (QString (tr("Images") + " (*.png *.bmp *.xbm *.jpg *.png *.xpm *.gif *.pnm)"));
  26.449 +	ImagePreview *p =new ImagePreview (fd);
  26.450 +	fd->setContentsPreviewEnabled( TRUE );
  26.451 +	fd->setContentsPreview( p, p );
  26.452 +	fd->setPreviewMode( Q3FileDialog::Contents );
  26.453 +	fd->setCaption(vymName+" - " +tr("Load background image"));
  26.454 +	fd->setDir (lastImageDir);
  26.455 +	fd->show();
  26.456 +
  26.457 +	if ( fd->exec() == QDialog::Accepted )
  26.458 +	{
  26.459 +		// FIXME in QT4 use:	lastImageDir=fd->directory();
  26.460 +		lastImageDir=QDir (fd->dirPath());
  26.461 +		setMapBackgroundImage (fd->selectedFile());
  26.462 +	}
  26.463 +}	
  26.464 +
  26.465 +void MapEditor::setMapBackgroundImage (const QString &fn)
  26.466 +{
  26.467 +	QColor oldcol=mapScene->backgroundBrush().color();
  26.468 +	/*
  26.469 +	saveState(
  26.470 +		selection,
  26.471 +		QString ("setMapBackgroundImage (%1)").arg(oldcol.name()),
  26.472 +		selection,
  26.473 +		QString ("setMapBackgroundImage (%1)").arg(col.name()),
  26.474 +		QString("Set background color of map to %1").arg(col.name()));
  26.475 +	*/	
  26.476 +	cout << "Trying to load "<<fn.ascii()<<endl;
  26.477 +	QBrush brush;
  26.478 +	brush.setTextureImage (QPixmap (fn));
  26.479 +	mapScene->setBackgroundBrush(brush);
  26.480 +}
  26.481 +
  26.482  void MapEditor::selectMapBackgroundColor()
  26.483  {
  26.484 -	QColor col = QColorDialog::getColor( mapCanvas->backgroundColor(), this );
  26.485 +	QColor col = QColorDialog::getColor( mapScene->backgroundBrush().color(), this );
  26.486  	if ( !col.isValid() ) return;
  26.487 -	setBackgroundColor( col );
  26.488 +	setMapBackgroundColor( col );
  26.489  }
  26.490  
  26.491  
  26.492  void MapEditor::setMapBackgroundColor(QColor col)
  26.493  {
  26.494 -	QColor oldcol=mapCanvas->backgroundColor();
  26.495 +	QColor oldcol=mapScene->backgroundBrush().color();
  26.496  	saveState(
  26.497  		selection,
  26.498  		QString ("setMapBackgroundColor (%1)").arg(oldcol.name()),
  26.499  		selection,
  26.500  		QString ("setMapBackgroundColor (%1)").arg(col.name()),
  26.501  		QString("Set background color of map to %1").arg(col.name()));
  26.502 -	mapCanvas->setBackgroundColor (col);
  26.503 +	mapScene->setBackgroundBrush(col);
  26.504  }
  26.505  
  26.506  QColor MapEditor::getMapBackgroundColor()
  26.507  {
  26.508 -    return mapCanvas->backgroundColor();
  26.509 +    return mapScene->backgroundBrush().color();
  26.510  }
  26.511  
  26.512  QColor MapEditor::getCurrentHeadingColor()
  26.513 @@ -2557,9 +2625,10 @@
  26.514  
  26.515  void MapEditor::setViewCenter()
  26.516  {
  26.517 -	// transform to CanvasView Coord:
  26.518 -	QPoint p=worldMatrix().map(movingCenter);
  26.519 -	center ( p.x(), p.y());
  26.520 +	// transform to sceneView Coord:
  26.521 +	QPointF p=matrix().map(movingCenter);
  26.522 +	//FIXME not ported yet to QT4 (center ist TextStream there)
  26.523 +	//center ( p.x(), p.y());
  26.524  }
  26.525  
  26.526  
  26.527 @@ -2756,7 +2825,7 @@
  26.528  			updateActions();
  26.529  			mapCenter->reposition();
  26.530  			adjustCanvasSize();
  26.531 -			canvas()->update();
  26.532 +			scene()->update();
  26.533  		}
  26.534  	}
  26.535  }
  26.536 @@ -2778,7 +2847,7 @@
  26.537  		updateActions();
  26.538  		mapCenter->reposition();
  26.539  		adjustCanvasSize();
  26.540 -		canvas()->update();
  26.541 +		scene()->update();
  26.542  	}
  26.543  }
  26.544  
  26.545 @@ -2802,7 +2871,7 @@
  26.546  		updateActions();
  26.547  		mapCenter->reposition();
  26.548  		adjustCanvasSize();
  26.549 -		canvas()->update();
  26.550 +		scene()->update();
  26.551  	}
  26.552  }
  26.553  
  26.554 @@ -2848,7 +2917,7 @@
  26.555  	{		
  26.556  		BranchObj* bo=(BranchObj*)selection;
  26.557  		BranchObj* par=(BranchObj*)(bo->getParObj());
  26.558 -		QPoint p=bo->getRelPos();
  26.559 +		QPointF p=bo->getRelPos();
  26.560  		saveStateChangingPart(
  26.561  			selection->getParObj(),
  26.562  			selection,
  26.563 @@ -2892,11 +2961,7 @@
  26.564  
  26.565  	// Calc some stats
  26.566  	QString stats;
  26.567 -    int i=0;
  26.568 -    Q3CanvasItemList l=canvas()->allItems();
  26.569 -    for (Q3CanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) 
  26.570 -        i++;
  26.571 -    stats+=QString ("%1 items on canvas\n").arg (i,6);
  26.572 +    stats+=tr("%1 items on map\n","Info about map").arg (mapScene->items().size(),6);
  26.573  
  26.574  	uint b=0;
  26.575  	uint f=0;
  26.576 @@ -3109,7 +3174,7 @@
  26.577  		);
  26.578  		bo->toggleScroll();
  26.579  		adjustCanvasSize();
  26.580 -		canvas()->update();
  26.581 +		scene()->update();
  26.582  	}
  26.583  }
  26.584  
  26.585 @@ -3171,7 +3236,7 @@
  26.586  
  26.587  			mapCenter->reposition();
  26.588  			adjustCanvasSize();
  26.589 -			canvas()->update();
  26.590 +			scene()->update();
  26.591  		}
  26.592  		delete (p);
  26.593  		delete (fd);
  26.594 @@ -3335,7 +3400,7 @@
  26.595  			importDirInt (bo,QDir(fd->selectedFile()) );
  26.596  			mapCenter->reposition();
  26.597  			adjustCanvasSize();
  26.598 -			canvas()->update();
  26.599 +			scene()->update();
  26.600  		}
  26.601  	}	
  26.602  }
  26.603 @@ -3386,17 +3451,6 @@
  26.604  
  26.605  void MapEditor::testFunction()
  26.606  {
  26.607 -	cout << "MapEditor::testFunction() called\n";
  26.608 -
  26.609 -	if (selection && 
  26.610 -		(typeid(*selection) == typeid(BranchObj)) || 
  26.611 -		(typeid(*selection) == typeid(MapCenterObj))  )
  26.612 -	{
  26.613 -		BranchObj* bo=(BranchObj*)selection;
  26.614 -		cout << bo->getHeading().ascii() <<" is scrolled: "<<bo->isScrolled()<<endl;
  26.615 -	}
  26.616 -	return;
  26.617 -	
  26.618  	WarningDialog dia;
  26.619  	dia.showCancelButton (true);
  26.620  	dia.setText("This is a longer \nWarning");
  26.621 @@ -3415,18 +3469,18 @@
  26.622  	{
  26.623  		setHideTmpMode (HideExport);
  26.624  		mapCenter->calcBBoxSizeWithChilds();
  26.625 -		QRect totalBBox=mapCenter->getTotalBBox();
  26.626 -		QRect mapRect=totalBBox;
  26.627 +		QRectF totalBBox=mapCenter->getTotalBBox();
  26.628 +		QRectF mapRect=totalBBox;
  26.629  		QCanvasRectangle *frame=NULL;
  26.630  
  26.631  		cout << "  map has =("<<totalBBox.x()<<","<<totalBBox.y()<<","<<totalBBox.width()<<","<<totalBBox.height()<<")\n";
  26.632  	
  26.633  		mapRect.setRect (totalBBox.x(), totalBBox.y(), 
  26.634  			totalBBox.width(), totalBBox.height());
  26.635 -		frame=new QCanvasRectangle (mapRect,mapCanvas);
  26.636 +		frame=new QCanvasRectangle (mapRect,mapScene);
  26.637  		frame->setBrush (QColor(white));
  26.638  		frame->setPen (QColor(black));
  26.639 -		frame->setZ(0);
  26.640 +		frame->setZValue(0);
  26.641  		frame->show();    
  26.642  	}	
  26.643  	else	
  26.644 @@ -3442,32 +3496,35 @@
  26.645  	if (selection)
  26.646  	{
  26.647  		LinkableMapObj* lmo= dynamic_cast <LinkableMapObj*> (selection);
  26.648 -		QPoint p;
  26.649 +		QPointF p;
  26.650  		if (selection->getOrientation() == OrientLeftOfCenter)
  26.651 -			p= worldMatrix().map(QPoint (lmo->x(),lmo->y()));
  26.652 -		else	
  26.653 -			p= worldMatrix().map(QPoint (lmo->x()+lmo->width(),lmo->y()+lmo->height()));
  26.654 -		ensureVisible (p.x(), p.y() );
  26.655 +			p= matrix().map(QPointF (lmo->x(),lmo->y()));
  26.656 +		else   
  26.657 +			p= matrix().map(QPointF (lmo->x()+lmo->width(),lmo->y()+lmo->height()));
  26.658 +		ensureVisible (QRectF(p.x(), p.y(),0,0 ));
  26.659 +
  26.660  	}
  26.661  
  26.662  }
  26.663  
  26.664  void MapEditor::updateViewCenter()
  26.665  {
  26.666 +/* FIXME still to port to QT4 inverseworldmatrix
  26.667  	// Update movingCenter, so that we can zoom comfortably later
  26.668 -	QRect rc = QRect( contentsX(), contentsY(),
  26.669 +	QRectF rc = QRectF( contentsX(), contentsY(),
  26.670  				  visibleWidth(), visibleHeight() );
  26.671 -	QRect canvasRect = inverseWorldMatrix().mapRect(rc);
  26.672 +	QRectF canvasRect = inverseWorldMatrix().mapRect(rc);
  26.673  	movingCenter.setX((canvasRect.right() + canvasRect.left())/2);
  26.674  	movingCenter.setY((canvasRect.top() + canvasRect.bottom())/2);
  26.675 +	*/
  26.676  }
  26.677  
  26.678 -void MapEditor::contentsContextMenuEvent ( QContextMenuEvent * e )
  26.679 +void MapEditor::contextMenuEvent ( QContextMenuEvent * e )
  26.680  {
  26.681  	// Lineedits are already closed by preceding
  26.682  	// mouseEvent, we don't need to close here.
  26.683  
  26.684 -    QPoint p = inverseWorldMatrix().map(e->pos());
  26.685 +    QPointF p = mapToScene(e->pos());
  26.686      LinkableMapObj* lmo=mapCenter->findMapObj(p, NULL);
  26.687  	
  26.688      if (lmo) 
  26.689 @@ -3499,7 +3556,7 @@
  26.690  		}	
  26.691  	} else 
  26.692  	{ // No MapObj found, we are on the Canvas itself
  26.693 -		// Context Menu on Canvas
  26.694 +		// Context Menu on scene
  26.695  		updateActions();
  26.696  		canvasContextMenu->popup(e->globalPos() );
  26.697      } 
  26.698 @@ -3534,7 +3591,7 @@
  26.699  		setCursor (Qt::ArrowCursor);
  26.700  }
  26.701  
  26.702 -void MapEditor::contentsMousePressEvent(QMouseEvent* e)
  26.703 +void MapEditor::mousePressEvent(QMouseEvent* e)
  26.704  {
  26.705  	// Ignore right clicks, these will go to context menus
  26.706  	if (e->button() == Qt::RightButton )
  26.707 @@ -3543,7 +3600,7 @@
  26.708  		return;
  26.709  	}
  26.710  
  26.711 -    QPoint p = inverseWorldMatrix().map(e->pos());
  26.712 +    QPointF p = mapToScene(e->pos());
  26.713      LinkableMapObj* lmo=mapCenter->findMapObj(p, NULL);
  26.714  	
  26.715  	e->accept();
  26.716 @@ -3602,7 +3659,7 @@
  26.717  			{
  26.718  				drawingLink=true;
  26.719  				linkingObj_src=bo_begin;
  26.720 -				tmpXLink=new XLinkObj (mapCanvas);
  26.721 +				tmpXLink=new XLinkObj (mapScene);
  26.722  				tmpXLink->setBegin (bo_begin);
  26.723  				tmpXLink->setEnd   (p);
  26.724  				tmpXLink->setColor(defXLinkColor);
  26.725 @@ -3649,27 +3706,31 @@
  26.726  				toggleScroll();
  26.727  		updateActions();
  26.728  	} else 
  26.729 -	{ // No MapObj found, we are on the Canvas itself
  26.730 -		// Left Button	    move Pos of CanvasView
  26.731 +	{ // No MapObj found, we are on the scene itself
  26.732 +		// Left Button	    move Pos of sceneView
  26.733  		if (e->button() == Qt::LeftButton )
  26.734  		{
  26.735  			movingObj=NULL;	// move Content not Obj
  26.736  			movingObj_start=e->globalPos();
  26.737 -			movingCont_start=QPoint (contentsX(), contentsY() );
  26.738 -			movingVec=QPoint(0,0);
  26.739 +			// FIXME not ported to QT4 yet (move canvasView)
  26.740 +			//movingCont_start=QPointF (contentsX(), contentsY() );
  26.741 +			movingCont_start=QPointF (
  26.742 +				horizontalScrollBar()->value(),
  26.743 +				verticalScrollBar()->value());
  26.744 +			movingVec=QPointF(0,0);
  26.745  			setCursor(HandOpenCursor);
  26.746  		} 
  26.747      } 
  26.748  }
  26.749  
  26.750 -void MapEditor::contentsMouseMoveEvent(QMouseEvent* e)
  26.751 +void MapEditor::mouseMoveEvent(QMouseEvent* e)
  26.752  {
  26.753 -	QPoint p = inverseWorldMatrix().map(e->pos());
  26.754 +    QPointF p = mapToScene(e->pos());
  26.755  
  26.756      // Move the selected MapObj
  26.757      if ( selection && movingObj) 
  26.758      {	
  26.759 -		// To avoid jumping of the CanvasView, only 
  26.760 +		// To avoid jumping of the sceneView, only 
  26.761  		// ensureSelectionVisible, if not tmp linked
  26.762  		if (!selection->hasParObjTmp())
  26.763  			ensureSelectionVisible ();
  26.764 @@ -3691,7 +3752,7 @@
  26.765  			FloatObj *fo=(FloatObj*)selection;
  26.766  			fo->move   (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );		
  26.767  			fo->setRelPos();
  26.768 -			fo->reposition();
  26.769 +			fo->updateLink(); //no need for reposition, if we update link here
  26.770  
  26.771  			// Relink float to new mapcenter or branch, if shift is pressed	
  26.772  			// Only relink, if selection really has a new parent
  26.773 @@ -3703,7 +3764,8 @@
  26.774  			{
  26.775  				if (typeid(*fo) == typeid(FloatImageObj)) 
  26.776  				{
  26.777 -					//TODO undocom
  26.778 +					//FIXME undocom for relinking of floats
  26.779 +
  26.780  					//saveStateComplete(QString("Relink %1 to %2").arg(getName(fo)).arg(getName(lmo) ) );
  26.781  					FloatImageObj *fio=(FloatImageObj*)(fo);
  26.782  					((BranchObj*)(lmo))->addFloatImage (fio);
  26.783 @@ -3769,7 +3831,7 @@
  26.784  
  26.785  		} // no FloatImageObj
  26.786  
  26.787 -		canvas()->update();
  26.788 +		scene()->update();
  26.789  		return;
  26.790  	} // selection && moving_obj
  26.791  		
  26.792 @@ -3780,22 +3842,25 @@
  26.793  		 tmpXLink->updateXLink();
  26.794  	}	 
  26.795  	
  26.796 -    // Move CanvasView 
  26.797 -    if (!movingObj && !pickingColor &&!drawingLink) 
  26.798 +    // Move sceneView 
  26.799 +    //if (!movingObj && !pickingColor &&!drawingLink && e->button() == Qt::LeftButton ) 
  26.800 +    if (e->buttons() == Qt::LeftButton ) 
  26.801  	{
  26.802 -		QPoint p=e->globalPos();
  26.803 +		QPointF p=e->globalPos();
  26.804  		movingVec.setX(-p.x() + movingObj_start.x() );
  26.805  		movingVec.setY(-p.y() + movingObj_start.y() );
  26.806 -		setContentsPos( movingCont_start.x() + movingVec.x(),
  26.807 -	    movingCont_start.y() + movingVec.y());
  26.808 -
  26.809 -		updateViewCenter();
  26.810 +		// FIXME not ported to QT4 yet (move canvasView)
  26.811 +		//setContentsPos( movingCont_start.x() + movingVec.x(),
  26.812 +	    //movingCont_start.y() + movingVec.y();
  26.813 +		horizontalScrollBar()->setSliderPosition((int)( movingCont_start.x()+movingVec.x() ));
  26.814 +		verticalScrollBar()->setSliderPosition((int)( movingCont_start.y()+movingVec.y() ) );
  26.815      }
  26.816  }
  26.817  
  26.818  
  26.819 -void MapEditor::contentsMouseReleaseEvent(QMouseEvent* e)
  26.820 +void MapEditor::mouseReleaseEvent(QMouseEvent* e)
  26.821  {
  26.822 +    QPointF p = mapToScene(e->pos());
  26.823  	LinkableMapObj *dst;
  26.824  	// Have we been picking color?
  26.825  	if (pickingColor)
  26.826 @@ -3803,7 +3868,7 @@
  26.827  		pickingColor=false;
  26.828  		setCursor (Qt::ArrowCursor);
  26.829  		// Check if we are over another branch
  26.830 -		dst=mapCenter->findMapObj(inverseWorldMatrix().map(e->pos() ), NULL);
  26.831 +		dst=mapCenter->findMapObj(p, NULL);
  26.832  		if (dst && selection) 
  26.833  		{	
  26.834  			if (e->state() & Qt::ShiftModifier)
  26.835 @@ -3825,7 +3890,7 @@
  26.836  	{
  26.837  		drawingLink=false;
  26.838  		// Check if we are over another branch
  26.839 -		dst=mapCenter->findMapObj(inverseWorldMatrix().map(e->pos() ), NULL);
  26.840 +		dst=mapCenter->findMapObj(p, NULL);
  26.841  		if (dst && selection) 
  26.842  		{	
  26.843  			tmpXLink->setEnd ( ((BranchObj*)(dst)) );
  26.844 @@ -3847,8 +3912,8 @@
  26.845  		{
  26.846  			// Moved FloatObj. Maybe we need to reposition
  26.847  			FloatImageObj *fo=(FloatImageObj*)selection;
  26.848 -		    QString pold=qpointToString(movingObj_orgRelPos);
  26.849 -		    QString pnow=qpointToString(fo->getRelPos());
  26.850 +		    QString pold=qpointfToString(movingObj_orgRelPos);
  26.851 +		    QString pnow=qpointfToString(fo->getRelPos());
  26.852  			saveState(
  26.853  				selection,
  26.854  				"moveRel "+pold,
  26.855 @@ -3863,7 +3928,7 @@
  26.856  
  26.857  		// Check if we are over another branch, but ignore 
  26.858  		// any found LMOs, which are FloatObjs
  26.859 -		dst=mapCenter->findMapObj(inverseWorldMatrix().map(e->pos() ), 
  26.860 +		dst=mapCenter->findMapObj(mapToScene(e->pos() ), 
  26.861  			((LinkableMapObj*)selection) );
  26.862  
  26.863  		if (dst && (typeid(*dst)!=typeid(BranchObj) && typeid(*dst)!=typeid(MapCenterObj))) 
  26.864 @@ -3878,7 +3943,7 @@
  26.865  		{	// A branch was moved
  26.866  			
  26.867  			// save the position in case we link to mapcenter
  26.868 -			QPoint savePos=QPoint (selection->x(),selection->y() );
  26.869 +			QPointF savePos=QPointF (selection->x(),selection->y() );
  26.870  
  26.871  			// Reset the temporary drawn link to the original one
  26.872  			((LinkableMapObj*)selection)->unsetParObjTmp();
  26.873 @@ -3934,9 +3999,9 @@
  26.874  					// Therefor reposition and then use string of old selection, too
  26.875  					mapCenter->reposition();
  26.876  
  26.877 -					QString ps=qpointToString ( ((BranchObj*)selection)->getRelPos() );
  26.878 +					QString ps=qpointfToString ( ((BranchObj*)selection)->getRelPos() );
  26.879  					saveState(
  26.880 -						selection->getSelectString(), "moveRel "+qpointToString(movingObj_orgRelPos), 
  26.881 +						selection->getSelectString(), "moveRel "+qpointfToString(movingObj_orgRelPos), 
  26.882  						preSelStr, "moveRel "+ps, 
  26.883  						QString("Move %1 to relative position %2").arg(getName(selection)).arg(ps));
  26.884  			
  26.885 @@ -3944,9 +4009,9 @@
  26.886  			// Draw the original link, before selection was moved around
  26.887  			mapCenter->reposition();
  26.888  		}
  26.889 -		// Finally resize canvas, if needed
  26.890 +		// Finally resize scene, if needed
  26.891  		adjustCanvasSize();
  26.892 -		canvas()->update();
  26.893 +		scene()->update();
  26.894  		movingObj=NULL;		
  26.895  
  26.896  		// Just make sure, that actions are still ok,e.g. the move branch up/down buttons...
  26.897 @@ -3957,11 +4022,11 @@
  26.898      
  26.899  }
  26.900  
  26.901 -void MapEditor::contentsMouseDoubleClickEvent(QMouseEvent* e)
  26.902 +void MapEditor::mouseDoubleClickEvent(QMouseEvent* e)
  26.903  {
  26.904  	if (e->button() == Qt::LeftButton )
  26.905  	{
  26.906 -		QPoint p = inverseWorldMatrix().map(e->pos());
  26.907 +		QPointF p = mapToScene(e->pos());
  26.908  		LinkableMapObj *lmo=mapCenter->findMapObj(p, NULL);
  26.909  		if (lmo) {	// MapObj was found
  26.910  			// First select the MapObj than edit heading
  26.911 @@ -3975,74 +4040,57 @@
  26.912  
  26.913  void MapEditor::resizeEvent (QResizeEvent* e)
  26.914  {
  26.915 -	Q3CanvasView::resizeEvent( e );
  26.916 +	QGraphicsView::resizeEvent( e );
  26.917  	adjustCanvasSize();
  26.918  }
  26.919  
  26.920  void MapEditor::contentsDragEnterEvent(QDragEnterEvent *event) 
  26.921  {
  26.922 -	if (selection && 
  26.923 -		(typeid(*selection) == typeid(BranchObj)) || 
  26.924 -		(typeid(*selection) == typeid(MapCenterObj))) 
  26.925 -	{
  26.926 -		if (event->mimeData()->hasFormat("image/png"))
  26.927 -		{
  26.928 -		cout <<"found png in dragenterevent\n";
  26.929 -		event->accept();
  26.930 -		return;
  26.931 -	}
  26.932 -
  26.933 -	if (event->mimeData()->hasFormat("text/uri-list"))
  26.934 -	{
  26.935 -		cout <<"found uri-list in dragenterevent\n";
  26.936 -		event->accept();
  26.937 -		return;
  26.938 -	}
  26.939 -
  26.940 -/*
  26.941 -	// If QImageDrag can decode mime type 
  26.942 -	if (Q3ImageDrag::canDecode(event)) 
  26.943 -	{
  26.944 -		cout << "dragenterevent q3imagedrag\n";
  26.945 -		event->accept();
  26.946 -		return;
  26.947 -	}
  26.948 -*/
  26.949 -	// If image are dragged from firefox 
  26.950 -	if (event->mimeData()->hasFormat("application/x-moz-file-promise-url") && 
  26.951 -		event->mimeData()->hasFormat("application/x-moz-nativeimage")) {
  26.952 -		event->accept(true);
  26.953 -		cout << "dragenterevent firefox\n";
  26.954 -		return;
  26.955 -	}
  26.956 -/*
  26.957 -	// If QUriDrag can decode mime type 
  26.958 -	if (Q3UriDrag::canDecode(event)) {
  26.959 -		event->accept();
  26.960 -		cout << "accepted uri drag\n";	
  26.961 -		return;
  26.962 -	}
  26.963 +	//FIXME not ported to QT4 yet
  26.964 +
  26.965 +//  for (unsigned int i=0;event->format(i);i++) // Debug mime type
  26.966 +//    cerr << event->format(i) << endl;
  26.967 +
  26.968 +  if (selection && 
  26.969 +      (typeid(*selection) == typeid(BranchObj)) || 
  26.970 +      (typeid(*selection) == typeid(MapCenterObj))) {
  26.971 +    
  26.972 +    // If QImageDrag can decode mime type 
  26.973 +    if (Q3ImageDrag::canDecode(event)) {
  26.974 +      event->accept();
  26.975 +      return;
  26.976 +    }
  26.977 +    
  26.978 +    // If image are dragged from firefox 
  26.979 +    if (event->provides("application/x-moz-file-promise-url") && 
  26.980 +	event->provides("application/x-moz-nativeimage")) {
  26.981 +      event->accept(true);
  26.982 +      return;
  26.983 +    }
  26.984 +
  26.985 +    // If QUriDrag can decode mime type 
  26.986 +    if (Q3UriDrag::canDecode(event)) {
  26.987 +      event->accept();
  26.988 +      return;
  26.989 +    }
  26.990 +    
  26.991  	// If Uri are dragged from firefox 
  26.992 -	if (event->provides("_NETSCAPE_URL")){
  26.993 -		event->accept();
  26.994 -		cout << "dragenterevent NETSCAPE\n";
  26.995 -		return;
  26.996 -	}
  26.997 -
  26.998 -	// If QTextDrag can decode mime type
  26.999 -	if (Q3TextDrag::canDecode(event)) {
 26.1000 -		event->accept();
 26.1001 -		cout << "dragenterevent textdrag\n";
 26.1002 -		return;
 26.1003 -	}
 26.1004 -*/
 26.1005 -	}
 26.1006 -	event->ignore();
 26.1007 +    if (event->provides("_NETSCAPE_URL")){
 26.1008 +      event->accept();
 26.1009 +      return;
 26.1010 +    }
 26.1011 +
 26.1012 +    // If QTextDrag can decode mime type
 26.1013 +    if (Q3TextDrag::canDecode(event)) {
 26.1014 +      event->accept();
 26.1015 +      return;
 26.1016 +    }
 26.1017 +
 26.1018 +  }
 26.1019 +  event->ignore();
 26.1020  }
 26.1021  
 26.1022 -
 26.1023 -
 26.1024 -/* FIXME needed in QT4?  bool isUnicode16(const QByteArray &d) 
 26.1025 +bool isUnicode16(const QByteArray &d) 
 26.1026  {
 26.1027    // TODO: make more precise check for unicode 16.
 26.1028    // Guess unicode16 if any of second bytes are zero
 26.1029 @@ -4051,17 +4099,16 @@
 26.1030      if (d.at(i*2+1)==0) return true;
 26.1031    return false;
 26.1032  }
 26.1033 -*/
 26.1034 -
 26.1035 +      
 26.1036  void MapEditor::contentsDropEvent(QDropEvent *event) 
 26.1037  {
 26.1038 +	//FIXME not ported to QT4 yet
 26.1039  	if (selection && 
 26.1040        (typeid(*selection) == typeid(BranchObj)) || 
 26.1041        (typeid(*selection) == typeid(MapCenterObj))) 
 26.1042  	{
 26.1043  		bool update=false;
 26.1044  		QStringList uris;
 26.1045 -		QList <QUrl> urls;
 26.1046  		QString heading;
 26.1047  
 26.1048  
 26.1049 @@ -4069,21 +4116,34 @@
 26.1050  		{
 26.1051              event->acceptProposedAction();
 26.1052  			addFloatImageInt(event->mimeData()->imageData().value<QPixmap>());
 26.1053 -			cout << "Drop png...\n";
 26.1054 -		} else if (event->mimeData()->hasFormat("application/x-moz-file-promise-url")&&
 26.1055 -			 event->mimeData()->hasFormat("application/x-moz-nativeimage")) 
 26.1056 +			cout << "accepted drop\n";
 26.1057 +		}	
 26.1058 +
 26.1059 +		/*
 26.1060 +		if (event->provides("image/png")) 
 26.1061  		{
 26.1062 -			cout << "Drop Mozilla...\n";
 26.1063 +			QPixmap pix;
 26.1064 +			if (Q3ImageDrag::decode(event, pix)) 
 26.1065 +			{
 26.1066 +				addFloatImageInt(pix);
 26.1067 +				event->accept();
 26.1068 +				update=true;
 26.1069 +			} else
 26.1070 +				event->ignore();
 26.1071 +
 26.1072 +		} else if (event->provides("application/x-moz-file-promise-url") && 
 26.1073 +			 event->provides("application/x-moz-nativeimage")) 
 26.1074 +		{
 26.1075  			// Contains url to the img src in unicode16
 26.1076  			QByteArray d = event->encodedData("application/x-moz-file-promise-url");
 26.1077  			QString url = QString((const QChar*)d.data(),d.size()/2);
 26.1078 -			//FIXME fetchImage(url);
 26.1079 -            event->acceptProposedAction();
 26.1080 +			fetchImage(url);
 26.1081 +			event->accept();
 26.1082  			update=true;
 26.1083 -		} else if (event->mimeData()->hasUrls())
 26.1084 -		{
 26.1085 -			urls=event->mimeData()->urls();
 26.1086 -		} /*else if (event->provides ("_NETSCAPE_URL"))
 26.1087 +		} else if (event->provides ("text/uri-list"))
 26.1088 +		{	// Uris provided e.g. by konqueror
 26.1089 +			Q3UriDrag::decode (event,uris);
 26.1090 +		} else if (event->provides ("_NETSCAPE_URL"))
 26.1091  		{	// Uris provided by Mozilla
 26.1092  		  QStringList l = QStringList::split("\n", event->encodedData("_NETSCAPE_URL"));
 26.1093  		  uris.append(l[0]);
 26.1094 @@ -4118,10 +4178,6 @@
 26.1095  		}
 26.1096  		*/
 26.1097  
 26.1098 -		for (int i=0; i<urls.size(); ++i)
 26.1099 -		{
 26.1100 -			cout << "Found URL: "<<urls.at(i).toString().ascii()<<endl;
 26.1101 -		}
 26.1102  		/* FIXME not ported yet  QSTRINGLIST has no next... 
 26.1103  		if (uris.count()>0)
 26.1104  		{
 26.1105 @@ -4165,7 +4221,7 @@
 26.1106  			//saveStateComplete("Drop Event");	//TODO undo Command
 26.1107  			mapCenter->reposition();
 26.1108  			adjustCanvasSize();
 26.1109 -			canvas()->update();
 26.1110 +			scene()->update();
 26.1111  		}	
 26.1112  	}	
 26.1113  }
 26.1114 @@ -4177,7 +4233,6 @@
 26.1115        (typeid(*selection) == typeid(MapCenterObj))  )
 26.1116    {
 26.1117      BranchObj *bo=((BranchObj*)selection);
 26.1118 -	qWarning ("Warning: Image added by drop event: no undo/redo so far.");
 26.1119      //FIXME XXX saveStateChangingPart(selection,QString("Add floatimage to %1").arg(getName(bo)));
 26.1120      //QString fn=fd->selectedFile();
 26.1121      //lastImageDir=fn.left(fn.findRev ("/"));
 26.1122 @@ -4186,13 +4241,12 @@
 26.1123      fio->setOriginalFilename("Image added by Drag and Drop");
 26.1124      mapCenter->reposition();
 26.1125      adjustCanvasSize();
 26.1126 -    canvas()->update();
 26.1127 +    scene()->update();
 26.1128    }
 26.1129  }
 26.1130  
 26.1131  
 26.1132 -//void MapEditor::imageDataFetched(const QByteArray &a, Q3NetworkOperation */*nop*/) 
 26.1133 -/* FIXME not needed in QT4
 26.1134 +void MapEditor::imageDataFetched(const QByteArray &a, Q3NetworkOperation */*nop*/) 
 26.1135  {
 26.1136    if (!imageBuffer) imageBuffer = new QBuffer();
 26.1137    if (!imageBuffer->isOpen()) {
 26.1138 @@ -4235,5 +4289,3 @@
 26.1139  	  this, SLOT(imageDataFetched(const QByteArray &, Q3NetworkOperation *)));
 26.1140    urlOperator->get();
 26.1141  }
 26.1142 -
 26.1143 -*/
    27.1 --- a/mapeditor.h	Thu Nov 23 16:18:26 2006 +0000
    27.2 +++ b/mapeditor.h	Fri Dec 08 20:18:56 2006 +0000
    27.3 @@ -1,8 +1,8 @@
    27.4  #ifndef MAPEDITOR_H
    27.5  #define MAPEDITOR_H
    27.6  
    27.7 -#include <q3canvas.h>
    27.8  #include <QBuffer>
    27.9 +#include <QGraphicsView>
   27.10  
   27.11  #include "mapcenterobj.h"
   27.12  #include "file.h"
   27.13 @@ -10,22 +10,24 @@
   27.14  #include "selection.h"
   27.15  #include "settings.h"
   27.16  
   27.17 +class Q3NetworkOperation;
   27.18 +class Q3UrlOperator;
   27.19  
   27.20 -class MapEditor : public Q3CanvasView , public xmlObj {
   27.21 +class MapEditor : public QGraphicsView, public xmlObj {
   27.22      Q_OBJECT
   27.23  
   27.24  public:
   27.25 -    MapEditor(QWidget* parent=0,  const char* name=0, Qt::WFlags f=0);
   27.26 +    MapEditor(QWidget* parent=0);
   27.27  	~MapEditor();
   27.28      MapCenterObj* getMapCenter();
   27.29 -	Q3Canvas* getCanvas();
   27.30 +	QGraphicsScene * getScene();
   27.31  	void adjustCanvasSize();// adjust canvas size to map and scrollview
   27.32  	bool isRepositionBlocked(); // block while load or undo
   27.33  	
   27.34  private:
   27.35  	QString getName(LinkableMapObj*);	// Get e.g. heading or filename
   27.36  	void makeTmpDirs();		// create temporary directories
   27.37 -    QString saveToDir(const QString&,const QString &,bool, const QPoint &,LinkableMapObj*);
   27.38 +    QString saveToDir(const QString&,const QString &,bool, const QPointF &,LinkableMapObj*);
   27.39      void saveStateChangingPart (LinkableMapObj *, LinkableMapObj *, const QString &, const QString &);
   27.40      void saveStateRemovingPart (LinkableMapObj *, const QString &);
   27.41      void saveState(LinkableMapObj *, const QString &, LinkableMapObj *, const QString &, const QString &);
   27.42 @@ -37,12 +39,11 @@
   27.43      void addFloatImageInt(const QPixmap &img);
   27.44  
   27.45    private slots:
   27.46 -//FIXME not needed QT4    void fetchImage(const QString &img);
   27.47 -//FIXME not needed QT4    void imageDataFetched(const QByteArray &, Q3NetworkOperation *);
   27.48 -//FIXME not needed QT4    void imageDataFinished(Q3NetworkOperation *);
   27.49 +    void fetchImage(const QString &img);
   27.50 +    void imageDataFetched(const QByteArray &, Q3NetworkOperation *);
   27.51 +    void imageDataFinished(Q3NetworkOperation *);
   27.52  
   27.53  public:
   27.54 -	void toggleHistoryWindow();
   27.55  	bool isDefault();		// false, if map was changed once
   27.56      bool isUnsaved();		// save necessary
   27.57      bool hasChanged();		// undo possible
   27.58 @@ -60,6 +61,8 @@
   27.59  	void setZipped(bool);		// save map zipped
   27.60  	bool saveZipped();			// 1 if file will be saved zipped
   27.61      void print();				// print canvas
   27.62 +	void setAntiAlias (bool);
   27.63 +	void setSmoothPixmap(bool);
   27.64  private:
   27.65      QPixmap getPixmap();
   27.66  	void setHideTmpMode (HideTmpMode);	// temporary hide stuff
   27.67 @@ -116,6 +119,8 @@
   27.68      void selectRightBranch();
   27.69      void selectFirstBranch();
   27.70      void selectLastBranch();
   27.71 +    void selectMapBackgroundImage();
   27.72 +    void setMapBackgroundImage(const QString &);
   27.73      void selectMapBackgroundColor();
   27.74      void setMapBackgroundColor(QColor);
   27.75      QColor getMapBackgroundColor();
   27.76 @@ -180,18 +185,18 @@
   27.77  protected:
   27.78  	void ensureSelectionVisible();		
   27.79  	virtual void updateViewCenter();	// needed for zooming
   27.80 -	virtual void contentsContextMenuEvent ( QContextMenuEvent *e );
   27.81 +	virtual void contextMenuEvent ( QContextMenuEvent *e );
   27.82      virtual void keyPressEvent(QKeyEvent*);
   27.83      virtual void keyReleaseEvent(QKeyEvent*);
   27.84 -    virtual void contentsMousePressEvent(QMouseEvent*);
   27.85 -    virtual void contentsMouseReleaseEvent(QMouseEvent*);
   27.86 -    virtual void contentsMouseDoubleClickEvent(QMouseEvent*);
   27.87 -    virtual void contentsMouseMoveEvent(QMouseEvent*);
   27.88 +    virtual void mousePressEvent(QMouseEvent*);
   27.89 +    virtual void mouseReleaseEvent(QMouseEvent*);
   27.90 +    virtual void mouseDoubleClickEvent(QMouseEvent*);
   27.91 +    virtual void mouseMoveEvent(QMouseEvent*);
   27.92  
   27.93 -	virtual void contentsDragEnterEvent(QDragEnterEvent *event);
   27.94 +    virtual void contentsDragEnterEvent(QDragEnterEvent *event);
   27.95      virtual void contentsDropEvent(QDropEvent *event);
   27.96  private:
   27.97 -    Q3Canvas* mapCanvas;
   27.98 +	QGraphicsScene *mapScene;
   27.99      MapCenterObj* mapCenter;
  27.100  
  27.101  	bool adjustCanvasRequested;	// collect requests until end of user event
  27.102 @@ -217,12 +222,12 @@
  27.103      LinkableMapObj* selectionLast;	// last selection 
  27.104      MapObj* movingObj;				// moving a MapObj
  27.105  	MapObj* linkingObj_src;			// part of a link
  27.106 -    QPoint movingObj_orgPos;		// org. pos of mouse before move
  27.107 -    QPoint movingObj_orgRelPos;		// org. relative pos of mouse before move
  27.108 -    QPoint movingObj_start;			// rel. pos of mouse to absPos 
  27.109 -    QPoint movingCont_start;		// inital pos of moving Content or
  27.110 -    QPoint movingVec;				// how far has Content moved
  27.111 -	QPoint movingCenter;			// used when zooming
  27.112 +    QPointF movingObj_orgPos;		// org. pos of mouse before move
  27.113 +    QPointF movingObj_orgRelPos;	// org. relative pos of mouse before move
  27.114 +    QPointF movingObj_start;		// rel. pos of mouse to absPos 
  27.115 +    QPointF movingCont_start;		// inital pos of moving Content or
  27.116 +    QPointF movingVec;				// how far has Content moved
  27.117 +	QPointF movingCenter;			// used when zooming
  27.118      QPrinter* printer;				// Printing
  27.119  
  27.120      bool mapDefault;				// Flag if map is untouched
    28.1 --- a/mapobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    28.2 +++ b/mapobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    28.3 @@ -6,15 +6,15 @@
    28.4  /////////////////////////////////////////////////////////////////
    28.5  MapObj::MapObj ()
    28.6  {
    28.7 -	//qWarning ( "Const MapObj (): Please set canvas somehow!!!");
    28.8 -	canvas=NULL;
    28.9 +	//qWarning ( "Const MapObj (): Please set scene somehow!!!");
   28.10 +	scene=NULL;
   28.11      init ();
   28.12  }
   28.13  
   28.14 -MapObj::MapObj (Q3Canvas* c)
   28.15 +MapObj::MapObj (QGraphicsScene *s)
   28.16  {
   28.17  //  cout << "Const MapObj\n";
   28.18 -    canvas=c;
   28.19 +    scene=s;
   28.20      init ();
   28.21  }
   28.22  
   28.23 @@ -32,91 +32,101 @@
   28.24  
   28.25  void MapObj::init ()
   28.26  {
   28.27 -    absPos=QPoint(0,0);
   28.28 +    absPos=QPointF(0,0);
   28.29      visible=true;
   28.30  }
   28.31  
   28.32  void MapObj::copy(MapObj* other)
   28.33  {
   28.34 -//    canvas=other->canvas;	// already set in constr. of child, use that one...
   28.35 +//    scene=other->scene;	// already set in constr. of child, use that one...
   28.36      absPos=other->absPos;
   28.37  	bbox.setX (other->bbox.x() );
   28.38  	bbox.setY (other->bbox.y() );
   28.39 -	bbox.setSize (QSize(other->bbox.width(), other->bbox.height() ) );
   28.40 +	bbox.setSize (QSizeF(other->bbox.width(), other->bbox.height() ) );
   28.41  }
   28.42  
   28.43 -Q3Canvas* MapObj::getCanvas()
   28.44 +QGraphicsScene* MapObj::getScene()
   28.45  {
   28.46 -	return canvas;
   28.47 +	return scene;
   28.48  }
   28.49  
   28.50 -int MapObj::x() 
   28.51 +qreal MapObj::x() 
   28.52  {
   28.53      return absPos.x();
   28.54  }
   28.55  
   28.56 -int MapObj::y() 
   28.57 +qreal MapObj::y() 
   28.58  {
   28.59      return absPos.y();
   28.60  }
   28.61  
   28.62 -int MapObj::width() 
   28.63 +qreal MapObj::width() 
   28.64  {
   28.65      return bbox.width();
   28.66  }
   28.67  
   28.68 -int MapObj::height() 
   28.69 +qreal MapObj::height() 
   28.70  {
   28.71      return bbox.height();
   28.72  }
   28.73  
   28.74 -QPoint MapObj::getAbsPos() 
   28.75 +QPointF MapObj::getAbsPos() 
   28.76  {
   28.77      return absPos;
   28.78  }
   28.79  
   28.80  QString MapObj::getPos()
   28.81  {
   28.82 -	return qpointToString(absPos);
   28.83 +	return qpointfToString(absPos);
   28.84  }
   28.85  
   28.86  void MapObj::move (double x, double y) 
   28.87  {
   28.88 -    int xi=static_cast <int> (x);
   28.89 -    int yi=static_cast <int> (y);
   28.90 -    absPos.setX( xi);
   28.91 -    absPos.setY( yi);
   28.92 -    bbox.moveTopLeft(QPoint(xi,yi));
   28.93 -    clickBox.moveTopLeft(QPoint(xi,yi));
   28.94 +    absPos.setX( x);
   28.95 +    absPos.setY( y);
   28.96 +    bbox.moveTo(QPointF(x,y));
   28.97 +    clickBox.moveTo(QPointF(x,y));
   28.98 +}
   28.99 +
  28.100 +void MapObj::move (QPointF p)
  28.101 +{
  28.102 +	absPos=p;
  28.103 +	bbox.moveTo (p);
  28.104 +	clickBox.moveTo (p);
  28.105  }
  28.106  
  28.107  void MapObj::moveBy (double x, double y) 
  28.108  {
  28.109 -	int ix=(int)x;
  28.110 -	int iy=(int)y;
  28.111      MapObj::move (x+absPos.x(),y+absPos.y() );
  28.112 -	bbox.moveBy (ix,iy);
  28.113 -	clickBox.moveBy (ix,iy);
  28.114 +	bbox.moveTo (bbox.x()+x,bbox.y()+y);
  28.115 +	clickBox.moveTo (clickBox.x()+x,clickBox.y()+y);
  28.116  }
  28.117  
  28.118 -bool MapObj::inBox(const QPoint &p)
  28.119 +bool MapObj::inBox(const QPointF &p)
  28.120  {
  28.121 +/* FIXME testing QT4 only
  28.122 +	cout << "MO::inBox  "<<p<<"  "<<
  28.123 +		clickBox.left()<<","<<
  28.124 +		clickBox.right()<<","<<
  28.125 +		clickBox.top()<<","<<
  28.126 +		clickBox.bottom()<<endl;
  28.127 +		*/
  28.128      if (p.x() >= clickBox.left() && p.x() <= clickBox.right()  
  28.129  	&& p.y() <= clickBox.bottom() && p.y() >= clickBox.top() )
  28.130  		return true;
  28.131      return false;	
  28.132  }
  28.133  
  28.134 -QRect MapObj::getBBox()
  28.135 +QRectF MapObj::getBBox()
  28.136  {
  28.137      return bbox;
  28.138  }
  28.139  
  28.140 -QRect MapObj::addBBox(QRect r1, QRect r2)
  28.141 +QRectF MapObj::addBBox(QRectF r1, QRectF r2)
  28.142  {	
  28.143 -	// Find smallest QRect containing given rectangles
  28.144 +	// Find smallest QRectF containing given rectangles
  28.145  
  28.146 -	QRect n;
  28.147 +	QRectF n;
  28.148  	// Set left border
  28.149  	if (r1.left() <= r2.left() )
  28.150  		n.setLeft(r1.left() );
  28.151 @@ -143,7 +153,7 @@
  28.152  	return n;
  28.153  }
  28.154  
  28.155 -QSize MapObj::getSize()
  28.156 +QSizeF MapObj::getSize()
  28.157  {
  28.158      return bbox.size();
  28.159  }
    29.1 --- a/mapobj.h	Thu Nov 23 16:18:26 2006 +0000
    29.2 +++ b/mapobj.h	Fri Dec 08 20:18:56 2006 +0000
    29.3 @@ -1,7 +1,8 @@
    29.4  #ifndef MAPOBJ_H
    29.5  #define MAPOBJ_H
    29.6  
    29.7 -#include <q3canvas.h>
    29.8 +#include <QGraphicsScene>
    29.9 +#include <QGraphicsItem>
   29.10  #include <iostream>
   29.11  
   29.12  #include "misc.h"
   29.13 @@ -20,33 +21,34 @@
   29.14  class MapObj:public xmlObj {
   29.15  public:
   29.16      MapObj ();
   29.17 -    MapObj (Q3Canvas*);
   29.18 +    MapObj (QGraphicsScene*);
   29.19      MapObj (MapObj*);
   29.20      virtual ~MapObj ();
   29.21      virtual void init ();
   29.22      virtual void copy (MapObj*);
   29.23 -	virtual Q3Canvas* getCanvas();
   29.24 -    virtual int x();
   29.25 -    virtual int y();
   29.26 -	virtual int width();
   29.27 -	virtual int height();
   29.28 -	virtual QPoint getAbsPos();
   29.29 +	virtual QGraphicsScene* getScene();
   29.30 +    virtual qreal x();
   29.31 +    virtual qreal y();
   29.32 +	virtual qreal width();
   29.33 +	virtual qreal height();
   29.34 +	virtual QPointF getAbsPos();
   29.35  	virtual QString getPos();					// Return position as string (x,y)
   29.36      virtual void move (double x,double y);      // move to absolute Position
   29.37 +    virtual void move (QPointF p);
   29.38      virtual void moveBy (double x,double y);    // move to relative Position
   29.39 -    virtual bool inBox(const QPoint&);			// Check if Point is within clickbox
   29.40 -    virtual QRect getBBox();					// returns bounding box
   29.41 -    virtual QRect addBBox(QRect,QRect);			// returns bbox which includes both boxes
   29.42 -    virtual QSize getSize();					// returns size of bounding box
   29.43 +    virtual bool inBox(const QPointF&);			// Check if Point is within clickbox
   29.44 +    virtual QRectF getBBox();					// returns bounding box
   29.45 +    virtual QRectF addBBox(QRectF,QRectF);			// returns bbox which includes both boxes
   29.46 +    virtual QSizeF getSize();					// returns size of bounding box
   29.47      virtual bool isVisibleObj();
   29.48      virtual void setVisibility(bool);
   29.49      virtual void positionBBox()=0;       
   29.50  	virtual void calcBBoxSize()=0;
   29.51  protected:  
   29.52 -    Q3Canvas* canvas;
   29.53 -    QRect bbox;									// bounding box of MO itself
   29.54 -	QRect clickBox;								// area where mouseclicks are found
   29.55 -    QPoint absPos;							    // Position on canvas
   29.56 +    QGraphicsScene* scene;
   29.57 +    QRectF bbox;									// bounding box of MO itself
   29.58 +	QRectF clickBox;								// area where mouseclicks are found
   29.59 +    QPointF absPos;							    // Position on canvas
   29.60      bool visible;
   29.61  };
   29.62  
    30.1 --- a/misc.cpp	Thu Nov 23 16:18:26 2006 +0000
    30.2 +++ b/misc.cpp	Fri Dec 08 20:18:56 2006 +0000
    30.3 @@ -11,13 +11,25 @@
    30.4  	return "(" + QString("%1").arg(p.x()) +","+ QString ("%1").arg (p.y()) +")";
    30.5  }
    30.6  
    30.7 +QString qpointfToString (const QPointF &p)
    30.8 +{
    30.9 +// FIXME check this QT4
   30.10 +	return "(" + QString("%1").arg(p.x()) +","+ QString ("%1").arg (p.y()) +")";
   30.11 +}
   30.12 +
   30.13  ostream &operator<< (ostream &stream, QPoint const &p)
   30.14  { 
   30.15  	stream << "("<<p.x()<<","<<p.y()<<")";
   30.16  	return stream;
   30.17  }
   30.18  
   30.19 -float getAngle(const QPoint &p)
   30.20 +ostream &operator<< (ostream &stream, QPointF const &p)
   30.21 +{ 
   30.22 +	stream << "("<<p.x()<<","<<p.y()<<")";
   30.23 +	return stream;
   30.24 +}
   30.25 +
   30.26 +qreal getAngle(const QPointF &p)
   30.27  {	
   30.28  	// Calculate angle of vector to y-axis
   30.29  	if (p.y()==0)
   30.30 @@ -29,24 +41,24 @@
   30.31  	} else
   30.32  	{
   30.33  		if (p.y()>0) 
   30.34 -			return (float)(M_PI  - atan ( (double)(p.x()) / (double)(p.y()) ) );
   30.35 +			return (qreal)(M_PI  - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
   30.36  		else	
   30.37  			if (p.x()<0)
   30.38 -				return (float)( 2*M_PI - atan ( (double)(p.x()) / (double)(p.y()) ) );
   30.39 +				return (qreal)( 2*M_PI - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
   30.40  			else	
   30.41 -				return (float)( - atan ( (double)(p.x()) / (double)(p.y()) ) );
   30.42 +				return (qreal)( - atan ( (qreal)(p.x()) / (qreal)(p.y()) ) );
   30.43  	}	
   30.44  }
   30.45  
   30.46 -QPoint normalise(const QPoint &p)
   30.47 +QPointF normalise(const QPointF &p)
   30.48  {	
   30.49  	// Calculate normalised position (fixed length) 
   30.50  
   30.51 -	double px=p.x();
   30.52 -	double py=p.y();
   30.53 -	double x;
   30.54 -	double y;
   30.55 -	double r=150;
   30.56 +	qreal px=p.x();
   30.57 +	qreal py=p.y();
   30.58 +	qreal x;
   30.59 +	qreal y;
   30.60 +	qreal r=150;
   30.61  
   30.62  	if (px==0)
   30.63  	{
   30.64 @@ -57,8 +69,8 @@
   30.65  			y=-r;
   30.66  	} else
   30.67  	{
   30.68 -		double sign;
   30.69 -		double a;
   30.70 +		qreal sign;
   30.71 +		qreal a;
   30.72  		if (px>0) 
   30.73  			sign=1; 
   30.74  		else 
   30.75 @@ -87,7 +99,8 @@
   30.76      return r;
   30.77  }
   30.78  
   30.79 -int max(int a, int b)
   30.80 +
   30.81 +qreal max(qreal a, qreal b)
   30.82  {
   30.83  	if (a>b)
   30.84  		return a;
    31.1 --- a/misc.h	Thu Nov 23 16:18:26 2006 +0000
    31.2 +++ b/misc.h	Fri Dec 08 20:18:56 2006 +0000
    31.3 @@ -10,11 +10,13 @@
    31.4  
    31.5  /////////////////////////////////////////////////////////////////////////////
    31.6  QString qpointToString (const QPoint &p);
    31.7 +QString qpointfToString (const QPointF &p);
    31.8  extern ostream &operator<< (ostream &stream, QPoint const &p);
    31.9 -float getAngle(const QPoint &);
   31.10 -QPoint normalise (const QPoint &);
   31.11 +extern ostream &operator<< (ostream &stream, QPointF const &p);
   31.12 +qreal getAngle(const QPointF &);
   31.13 +QPointF normalise (const QPointF &);
   31.14  QString quotemeta(const QString&);	
   31.15 -int max (int,int);
   31.16 +qreal max (qreal,qreal);
   31.17  class BranchObj;
   31.18  class MapEditor;
   31.19  
    32.1 --- a/options.cpp	Thu Nov 23 16:18:26 2006 +0000
    32.2 +++ b/options.cpp	Fri Dec 08 20:18:56 2006 +0000
    32.3 @@ -1,7 +1,8 @@
    32.4  #include "options.h"
    32.5 +
    32.6  #include <iostream>
    32.7 +#include <QApplication>
    32.8  
    32.9 -#include <qapplication.h>
   32.10  
   32.11  using namespace std;
   32.12  
   32.13 @@ -16,6 +17,14 @@
   32.14  	active=false;
   32.15  }
   32.16  
   32.17 +Option::Option (const QString &n, const OptionType &t, const QString &s, const QString &l)
   32.18 +{
   32.19 +	sName="-"+s;
   32.20 +	lName="--"+l;
   32.21 +	type=t;
   32.22 +	name=n;
   32.23 +}
   32.24 +
   32.25  void Option::set(const QString &n, const OptionType &t, const QString &s, const QString &l)
   32.26  {
   32.27  	sName="-"+s;
   32.28 @@ -40,7 +49,7 @@
   32.29  {
   32.30  	QStringList arglist;
   32.31  	int i=0;
   32.32 -	while (i<qApp->argc())
   32.33 +	while ( i < qApp->argc())
   32.34  	{	
   32.35  		arglist.append (qApp->argv()[i]);
   32.36  		i++;
   32.37 @@ -52,37 +61,32 @@
   32.38  
   32.39  	// Work through rest of options
   32.40  	bool isFile;
   32.41 -	OptionList::iterator itopt;
   32.42 -	QStringList::iterator itarg;
   32.43 -	itarg=arglist.begin();
   32.44 -	while (itarg!=arglist.end())
   32.45 +	for (i=0; i< arglist.size(); ++i)
   32.46  	{
   32.47  		isFile=true;
   32.48 -		if ((*itarg).left(1)=="-")
   32.49 +		if (arglist[i].left(1)=="-")
   32.50  		{
   32.51  			// Compare given option to all defined options
   32.52 -			itopt=optlist.begin();
   32.53 -			while (itopt!=optlist.end())
   32.54 +			for (int j=0; j < optlist.size(); ++j)
   32.55  			{
   32.56 -				if ((*itarg)==(*itopt).getShort() || 
   32.57 -					(*itarg)==(*itopt).getLong())
   32.58 +				if (arglist.at(i)==optlist.value(j).getShort() || 
   32.59 +					arglist.at(i)==optlist.value(j).getLong())
   32.60  				{	
   32.61 -					(*itopt).setActive();
   32.62 +					optlist[j].setActive();
   32.63  					isFile=false;
   32.64 -					if ((*itopt).getType()==StringOption)
   32.65 +					if (optlist[j].getType()==StringOption)
   32.66  					{
   32.67 -						itarg++;
   32.68 -						if (itarg==arglist.end())
   32.69 +						i++;
   32.70 +						if (i==arglist.size())
   32.71  						{
   32.72 -							cout << "Error: argument to option missing\n";
   32.73 +							qWarning ("Error: argument to option missing");
   32.74  							return 1;
   32.75  						}
   32.76 -						(*itopt).setArg (*itarg);
   32.77 +						optlist[j].setArg (arglist[i]);
   32.78  						isFile=false;
   32.79  					}
   32.80  					break;
   32.81  				} 
   32.82 -				itopt++;
   32.83  			}
   32.84  			if (isFile)
   32.85  			{
   32.86 @@ -90,12 +94,16 @@
   32.87  				return 1;
   32.88  			}
   32.89  		} else
   32.90 -			filelist.append (*itarg);
   32.91 -		itarg++;
   32.92 +			filelist.append (arglist[i]);
   32.93  	}
   32.94  	return 0;
   32.95  }
   32.96  
   32.97 +void Options::add (Option o)
   32.98 +{
   32.99 +	optlist.append (o);
  32.100 +}
  32.101 +
  32.102  void Options::add (const QString &n, const OptionType &t=SwitchOption, const QString &s="", const QString &l="")
  32.103  {
  32.104  	Option o;
  32.105 @@ -125,20 +133,15 @@
  32.106  
  32.107  bool Options::isOn(const QString &s)
  32.108  {
  32.109 -	OptionList::iterator it;
  32.110 -	for ( it = optlist.begin(); it != optlist.end(); ++it )
  32.111 -		if ((*it).getName()==s && (*it).isActive() )
  32.112 +	for (int i=0; i<optlist.size(); ++i)
  32.113 +		if (optlist[i].getName()==s && optlist[i].isActive() )
  32.114  			return true;
  32.115  	return false;
  32.116  }
  32.117  
  32.118  QString Options::getArg(const QString &s)
  32.119  {
  32.120 -	OptionList::iterator it;
  32.121 -	for ( it = optlist.begin(); it != optlist.end(); ++it )
  32.122 -	{
  32.123 -		if ((*it).getName()==s)
  32.124 -			return (*it).getArg();
  32.125 -	}	
  32.126 -	return "";
  32.127 +	for (int i=0; i<optlist.size(); ++i)
  32.128 +		if (optlist[i].getName()==s) return optlist[i].getArg();
  32.129 +	return QString();
  32.130  }
    33.1 --- a/options.h	Thu Nov 23 16:18:26 2006 +0000
    33.2 +++ b/options.h	Fri Dec 08 20:18:56 2006 +0000
    33.3 @@ -1,10 +1,7 @@
    33.4  #ifndef OPTIONS_H
    33.5  #define OPTIONS_H
    33.6  
    33.7 -#include <qstring.h>
    33.8 -#include <qstringlist.h>
    33.9 -//Added by qt3to4:
   33.10 -#include <Q3ValueList>
   33.11 +#include <QStringList>
   33.12  
   33.13  enum OptionType  {SwitchOption,StringOption};
   33.14  
   33.15 @@ -12,6 +9,7 @@
   33.16  {
   33.17  public:
   33.18  	Option();
   33.19 +	Option(const QString &, const OptionType &, const QString &, const QString &);
   33.20  	void set (const QString &, const OptionType &, const QString &, const QString &);
   33.21  	QString getName();
   33.22  	QString getShort();
   33.23 @@ -31,14 +29,12 @@
   33.24  };
   33.25  
   33.26  
   33.27 -
   33.28 -typedef Q3ValueList <Option> OptionList;
   33.29 -
   33.30  class Options
   33.31  {
   33.32  public:
   33.33  	Options();
   33.34  	int parse();
   33.35 +	void add (Option );
   33.36  	void add (const QString &,const OptionType &, const QString &, const QString&);
   33.37  	void setHelpText(const QString&);
   33.38  	QString getHelpText();
   33.39 @@ -51,7 +47,7 @@
   33.40  	QString progname;
   33.41  	QString helptext;
   33.42  	QStringList filelist;
   33.43 -    OptionList optlist;
   33.44 +    QList <Option> optlist;
   33.45  };
   33.46  
   33.47  #endif
    34.1 --- a/ornamentedobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    34.2 +++ b/ornamentedobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    34.3 @@ -18,13 +18,13 @@
    34.4      init ();
    34.5  }
    34.6  
    34.7 -OrnamentedObj::OrnamentedObj(Q3Canvas* c) :LinkableMapObj(c)
    34.8 +OrnamentedObj::OrnamentedObj(QGraphicsScene* s) :LinkableMapObj(s)
    34.9  {
   34.10 -//    cout << "Const OrnamentedObj\n";
   34.11 +//    cout << "Const OrnamentedObj (s)\n";
   34.12      init ();
   34.13  }
   34.14  
   34.15 -OrnamentedObj::OrnamentedObj (OrnamentedObj* lmo) : LinkableMapObj (lmo->canvas)
   34.16 +OrnamentedObj::OrnamentedObj (OrnamentedObj* lmo) : LinkableMapObj (lmo->scene)
   34.17  {
   34.18      copy (lmo);
   34.19  }
   34.20 @@ -40,17 +40,17 @@
   34.21  
   34.22  void OrnamentedObj::init ()
   34.23  {
   34.24 -	heading = new HeadingObj(canvas);
   34.25 +	heading = new HeadingObj(scene);
   34.26  	heading->move (absPos.x(), absPos.y());
   34.27  
   34.28  	note.setNote("");
   34.29  	note.setFontHint (textEditor->getFontHintDefault() );
   34.30  
   34.31 -	systemFlags=new FlagRowObj(canvas);
   34.32 +	systemFlags=new FlagRowObj(scene);
   34.33  	systemFlags->clone(systemFlagsDefault);
   34.34  	systemFlags->setName ("systemFlags");
   34.35  	
   34.36 -	standardFlags=new FlagRowObj(canvas);
   34.37 +	standardFlags=new FlagRowObj(scene);
   34.38  	standardFlags->clone(standardFlagsDefault);
   34.39  	standardFlags->setName ("standardFlags");
   34.40  
   34.41 @@ -123,8 +123,8 @@
   34.42  					);
   34.43  	standardFlags->move (ox +x + heading->getWidth() + systemFlags->getBBox().width() , oy + y );
   34.44  
   34.45 -	ornamentsBBox.moveTopLeft ( QPoint ((int)(ox+x),(int)(oy+y)));
   34.46 -	clickBox.moveTopLeft (QPoint ((int)(ox + x), (int)(oy + y)));
   34.47 +	ornamentsBBox.moveTopLeft ( QPointF ((int)(ox+x),(int)(oy+y)));
   34.48 +	clickBox.moveTopLeft (QPointF ((int)(ox + x), (int)(oy + y)));
   34.49  }
   34.50  
   34.51  void OrnamentedObj::move (double x, double y)
   34.52 @@ -135,7 +135,7 @@
   34.53  	requestReposition();
   34.54  }
   34.55  
   34.56 -void OrnamentedObj::move (QPoint p)
   34.57 +void OrnamentedObj::move (QPointF p)
   34.58  {
   34.59  	move (p.x(), p.y());
   34.60  }	
   34.61 @@ -152,22 +152,22 @@
   34.62  	requestReposition();
   34.63  }
   34.64  
   34.65 -void OrnamentedObj::moveBy (QPoint p)
   34.66 +void OrnamentedObj::moveBy (QPointF p)
   34.67  {
   34.68  	moveBy (p.x(), p.y());
   34.69  }	
   34.70  
   34.71  void OrnamentedObj::move2RelPos(double x, double y)
   34.72  {
   34.73 -	setRelPos (QPoint((int)x,(int)y));
   34.74 +	setRelPos (QPointF((int)x,(int)y));
   34.75  	if (parObj)
   34.76  	{
   34.77 -		QPoint p=parObj->getChildPos();
   34.78 +		QPointF p=parObj->getChildPos();
   34.79  		move (p.x()+x, p.y() +y);
   34.80  	}
   34.81  }
   34.82  
   34.83 -void OrnamentedObj::move2RelPos(QPoint p)
   34.84 +void OrnamentedObj::move2RelPos(QPointF p)
   34.85  {
   34.86  	move2RelPos (p.x(),p.y());
   34.87  }
   34.88 @@ -299,7 +299,7 @@
   34.89  	return standardFlags->isActive(f);
   34.90  }
   34.91  
   34.92 -QString OrnamentedObj::getSystemFlagName(const QPoint &p)
   34.93 +QString OrnamentedObj::getSystemFlagName(const QPointF &p)
   34.94  {
   34.95  	return systemFlags->getFlagName(p);	
   34.96  }
   34.97 @@ -362,14 +362,14 @@
   34.98  
   34.99  	if (depth==0)
  34.100  		posAttr=		
  34.101 -			attribut("absPosX",QString().setNum(absPos.x(),10)) +
  34.102 -			attribut("absPosY",QString().setNum(absPos.y(),10)); 
  34.103 +			attribut("absPosX",QString().setNum(absPos.x())) +
  34.104 +			attribut("absPosY",QString().setNum(absPos.y())); 
  34.105  	else
  34.106  	{
  34.107  		if (depth==1 || typeid (*this)==typeid (FloatImageObj))
  34.108  			posAttr=
  34.109 -				attribut("relPosX",QString().setNum(relPos.x(),10)) +
  34.110 -				attribut("relPosY",QString().setNum(relPos.y(),10)); 
  34.111 +				attribut("relPosX",QString().setNum(relPos.x())) +
  34.112 +				attribut("relPosY",QString().setNum(relPos.y())); 
  34.113  		else
  34.114  			posAttr="";
  34.115  	}	
    35.1 --- a/ornamentedobj.h	Thu Nov 23 16:18:26 2006 +0000
    35.2 +++ b/ornamentedobj.h	Fri Dec 08 20:18:56 2006 +0000
    35.3 @@ -6,7 +6,7 @@
    35.4  class OrnamentedObj:public LinkableMapObj {
    35.5  public:	
    35.6      OrnamentedObj ();
    35.7 -    OrnamentedObj (Q3Canvas*);
    35.8 +    OrnamentedObj (QGraphicsScene*);
    35.9      OrnamentedObj (OrnamentedObj*);
   35.10      ~OrnamentedObj ();
   35.11      virtual void init ();
   35.12 @@ -18,10 +18,10 @@
   35.13  	QColor getColor ();						// get color of heading
   35.14      virtual void positionContents();
   35.15      virtual void move   (double,double);
   35.16 -    virtual void move   (QPoint);
   35.17 +    virtual void move   (QPointF);
   35.18      virtual void moveBy (double,double);
   35.19 -    virtual void moveBy (QPoint);
   35.20 -    virtual void move2RelPos (QPoint);		// move relativly to parent^
   35.21 +    virtual void moveBy (QPointF);
   35.22 +    virtual void move2RelPos (QPointF);		// move relativly to parent^
   35.23      virtual void move2RelPos (double,double);
   35.24      virtual void setNote(QString);			// set note
   35.25      virtual void setNote(NoteObj);			// set note
   35.26 @@ -37,7 +37,7 @@
   35.27  	virtual void activateStandardFlag(QString);
   35.28  	virtual void deactivateStandardFlag(QString);
   35.29  	virtual bool isSetStandardFlag(QString);
   35.30 -	virtual QString getSystemFlagName (const QPoint &p);
   35.31 +	virtual QString getSystemFlagName (const QPointF &p);
   35.32  	virtual bool isActiveFlag(const QString&);	// check if flag is set
   35.33  	virtual void updateNoteFlag();
   35.34  	virtual void updateFlagsToolbar();
   35.35 @@ -51,7 +51,7 @@
   35.36  	NoteObj note;					// Notes
   35.37  	FlagRowObj *systemFlags;		// System Flags
   35.38  	FlagRowObj *standardFlags;		// Standard Flags
   35.39 -	QRect ornamentsBBox;			// bbox of flags and heading
   35.40 +	QRectF ornamentsBBox;			// bbox of flags and heading
   35.41  	QString url;					// url to external doc
   35.42  	QString vymLink;				// path to another map
   35.43  	bool hideExport;				// hide in exports if set
    36.1 --- a/process.cpp	Thu Nov 23 16:18:26 2006 +0000
    36.2 +++ b/process.cpp	Fri Dec 08 20:18:56 2006 +0000
    36.3 @@ -5,9 +5,9 @@
    36.4  /////////////////////////////////////////////////////////////////
    36.5  Process::Process()
    36.6  {
    36.7 -	connect( this, SIGNAL(readyReadStderr()),
    36.8 +	connect( this, SIGNAL(readyReadStandardError()),
    36.9  			 this, SLOT(readProcErrout()) );
   36.10 -	connect( this, SIGNAL(readyReadStdout()),
   36.11 +	connect( this, SIGNAL(readyReadStandardOutput()),
   36.12  			 this, SLOT(readProcStdout()) );
   36.13  	clear();		 
   36.14  }
   36.15 @@ -24,7 +24,7 @@
   36.16  
   36.17  void Process::waitFinished()
   36.18  {
   36.19 -	while (isRunning())
   36.20 +	while (state()==QProcess::Running)
   36.21  	{
   36.22  		// FIXME use some kind of sleep here...
   36.23  		system ("sleep 1");
   36.24 @@ -33,12 +33,12 @@
   36.25  
   36.26  void Process::readProcErrout()
   36.27  {
   36.28 -	errOut+=readStderr();
   36.29 +	errOut+=readAllStandardError();
   36.30  }
   36.31  
   36.32  void Process::readProcStdout()
   36.33  {
   36.34 -	stdOut+=readStdout();
   36.35 +	stdOut+=readAllStandardOutput();
   36.36  }
   36.37  
   36.38  QString Process::getErrout()
    37.1 --- a/process.h	Thu Nov 23 16:18:26 2006 +0000
    37.2 +++ b/process.h	Fri Dec 08 20:18:56 2006 +0000
    37.3 @@ -1,13 +1,13 @@
    37.4  #ifndef PROCESS_H
    37.5  #define PROCESS_H
    37.6  
    37.7 -#include <q3process.h>
    37.8 -#include <qstring.h>
    37.9 +#include <QProcess>
   37.10 +#include <QString>
   37.11  
   37.12  
   37.13  using namespace std;
   37.14  
   37.15 -class Process:public Q3Process
   37.16 +class Process:public QProcess
   37.17  {
   37.18  	Q_OBJECT
   37.19  public:
    38.1 --- a/version.h	Thu Nov 23 16:18:26 2006 +0000
    38.2 +++ b/version.h	Fri Dec 08 20:18:56 2006 +0000
    38.3 @@ -4,8 +4,8 @@
    38.4  #include <QString>
    38.5  
    38.6  #define __VYM_NAME "VYM"
    38.7 -#define __VYM_VERSION "1.8.59"
    38.8 -#define __VYM_BUILD_DATE "November 23, 2006"
    38.9 +#define __VYM_VERSION "1.8.61"
   38.10 +#define __VYM_BUILD_DATE "December 8, 2006"
   38.11  
   38.12  
   38.13  bool checkVersion(const QString &);
    39.1 --- a/xlinkobj.cpp	Thu Nov 23 16:18:26 2006 +0000
    39.2 +++ b/xlinkobj.cpp	Fri Dec 08 20:18:56 2006 +0000
    39.3 @@ -1,8 +1,6 @@
    39.4  #include "xlinkobj.h"
    39.5  #include "branchobj.h"
    39.6  #include "mapeditor.h"
    39.7 -//Added by qt3to4:
    39.8 -#include <Q3PointArray>
    39.9  
   39.10  
   39.11  /////////////////////////////////////////////////////////////////
   39.12 @@ -17,9 +15,9 @@
   39.13  	init();
   39.14  }
   39.15  
   39.16 -XLinkObj::XLinkObj (Q3Canvas* c):MapObj(c)
   39.17 +XLinkObj::XLinkObj (QGraphicsScene* s):MapObj(s)
   39.18  {
   39.19 -	//	cout << "Const XLinkObj (c)  called from MapCenterObj (c)\n";
   39.20 +	//	cout << "Const XLinkObj (s)  called from MapCenterObj (s)\n";
   39.21  	init();
   39.22  }
   39.23  
   39.24 @@ -42,15 +40,14 @@
   39.25  	xLinkState=undefinedXLink;
   39.26  
   39.27  	color=QColor (180,180,180);
   39.28 -	line=new Q3CanvasLine (canvas);
   39.29  	width=1;
   39.30 -	line->setPen (QPen(color, width));
   39.31 -	line->setZ (Z_XLINK);
   39.32 -
   39.33 -	poly=new Q3CanvasPolygon (canvas);
   39.34 -	poly->setBrush( color );
   39.35 -	poly->setZ (Z_XLINK);
   39.36 -
   39.37 +	pen.setColor (color);
   39.38 +	pen.setWidth (width);
   39.39 +	pen.setCapStyle (  Qt::RoundCap );
   39.40 +	line=scene->addLine(QLineF(1,1,1,1),pen);
   39.41 +    line->setZValue (Z_XLINK);
   39.42 +	poly=scene->addPolygon(QPolygonF(),pen,color);
   39.43 +    poly->setZValue (Z_XLINK);
   39.44  	setVisibility (false);
   39.45  }
   39.46  
   39.47 @@ -62,6 +59,7 @@
   39.48  	beginBranch=other->beginBranch;
   39.49  	endBranch=other->endBranch;
   39.50  	width=other->width;
   39.51 +
   39.52  }
   39.53  
   39.54  void XLinkObj::setBegin (BranchObj *bo)
   39.55 @@ -97,27 +95,29 @@
   39.56  void XLinkObj::setWidth (int w)
   39.57  {
   39.58  	width=w;
   39.59 +	pen.setWidth (w);
   39.60  	setColor (color);
   39.61  }
   39.62  
   39.63  int XLinkObj::getWidth()
   39.64  {
   39.65 -	return width;
   39.66 +	return pen.width();
   39.67  }
   39.68  
   39.69  void XLinkObj::setColor(QColor c)
   39.70  {
   39.71  	color=c;
   39.72 -	line->setPen (QPen(color, width));
   39.73 +	pen.setColor (c);
   39.74 +	line->setPen (pen);
   39.75  	poly->setBrush( color );
   39.76  }
   39.77  
   39.78  QColor XLinkObj::getColor()
   39.79  {
   39.80 -	return color;
   39.81 +	return pen.color();
   39.82  }
   39.83  
   39.84 -void XLinkObj::setEnd (QPoint p)
   39.85 +void XLinkObj::setEnd (QPointF p)
   39.86  {
   39.87  	endPos=p;
   39.88  }
   39.89 @@ -160,8 +160,8 @@
   39.90  
   39.91  void XLinkObj::updateXLink()
   39.92  {
   39.93 -	QPoint a,b;
   39.94 -	Q3PointArray pa (3);
   39.95 +	QPointF a,b;
   39.96 +	QPolygonF pa;
   39.97  	if (visBranch)
   39.98  	{
   39.99  		// Only one of the linked branches is visible
  39.100 @@ -169,20 +169,20 @@
  39.101  		if (visBranch->getOrientation()==OrientRightOfCenter)
  39.102  		{
  39.103  			b.setX (b.x()+25);
  39.104 -			pa.putPoints (0,3,
  39.105 -				b.x(),b.y(),
  39.106 -				b.x()-arrowSize,b.y()-arrowSize,
  39.107 -				b.x()-arrowSize,b.y()+arrowSize
  39.108 -			);
  39.109 -			poly->setPoints (pa);
  39.110 +			
  39.111 +			pa.clear();
  39.112 +			pa<< QPointF(b.x(),b.y())<<
  39.113 +				QPointF(b.x()-arrowSize,b.y()-arrowSize)<<
  39.114 +				QPointF(b.x()-arrowSize,b.y()+arrowSize);
  39.115 +			poly->setPolygon(pa);
  39.116  		} else
  39.117  		{
  39.118  			b.setX (b.x()-25);
  39.119 -			pa.putPoints (0,3,
  39.120 -				b.x(),b.y(),
  39.121 -				b.x()+arrowSize,b.y()-arrowSize,
  39.122 -				b.x()+arrowSize,b.y()+arrowSize);
  39.123 -			poly->setPoints (pa);
  39.124 +			pa.clear();
  39.125 +			pa<< QPointF(b.x(),b.y())<<
  39.126 +				QPointF(b.x()+arrowSize,b.y()-arrowSize)<<
  39.127 +				QPointF(b.x()+arrowSize,b.y()+arrowSize);
  39.128 +			poly->setPolygon (pa);
  39.129  		}	
  39.130  	} else
  39.131  	{
  39.132 @@ -201,7 +201,7 @@
  39.133  	}
  39.134  
  39.135  
  39.136 -	if (line->startPoint()==a && line->endPoint()==b && !visBranch)
  39.137 +	if (line->line().p1()==a && line->line().p2()==b && !visBranch)
  39.138  	{
  39.139  		// update is called from both branches, so only
  39.140  		// update if something has changed
  39.141 @@ -211,8 +211,8 @@
  39.142  	{
  39.143  		beginPos=a;
  39.144  		endPos=b;
  39.145 -		line->setPen (QPen(color, width));
  39.146 -		line->setPoints (a.x(), a.y(), b.x(), b.y());
  39.147 +		line->setPen (pen);
  39.148 +		line->setLine(a.x(), a.y(), b.x(), b.y());
  39.149  	}
  39.150  }
  39.151  
    40.1 --- a/xlinkobj.h	Thu Nov 23 16:18:26 2006 +0000
    40.2 +++ b/xlinkobj.h	Fri Dec 08 20:18:56 2006 +0000
    40.3 @@ -9,14 +9,14 @@
    40.4  class XLinkObj:public MapObj {
    40.5  public:
    40.6      XLinkObj ();
    40.7 -    XLinkObj (Q3Canvas*);
    40.8 +    XLinkObj (QGraphicsScene*);
    40.9      ~XLinkObj ();
   40.10      virtual void init ();
   40.11      virtual void copy (XLinkObj*);
   40.12  	void setBegin (BranchObj*);
   40.13  	BranchObj* getBegin();
   40.14  	void setEnd   (BranchObj*);
   40.15 -	void setEnd   (QPoint);
   40.16 +	void setEnd   (QPointF);
   40.17  	BranchObj* getEnd();
   40.18  	void setColor(QColor);
   40.19  	QColor getColor();
   40.20 @@ -35,16 +35,17 @@
   40.21  
   40.22  private:
   40.23  	static int arrowSize;
   40.24 +	QPen pen;
   40.25  	QColor color;
   40.26  	int width;
   40.27 -	Q3CanvasLine *line;
   40.28 -	Q3CanvasPolygon *poly;
   40.29 +	QGraphicsLineItem *line;
   40.30 +	QGraphicsPolygonItem *poly;
   40.31  	BranchObj *beginBranch;
   40.32  	BranchObj *endBranch;
   40.33  	BranchObj *visBranch;	// the "visible" part of a partially scrolled link
   40.34  	XLinkState xLinkState;	// init during drawing or active
   40.35 -	QPoint beginPos;
   40.36 -	QPoint   endPos;
   40.37 +	QPointF beginPos;
   40.38 +	QPointF   endPos;
   40.39  };
   40.40  
   40.41  #endif
    41.1 --- a/xml.cpp	Thu Nov 23 16:18:26 2006 +0000
    41.2 +++ b/xml.cpp	Fri Dec 08 20:18:56 2006 +0000
    41.3 @@ -87,7 +87,7 @@
    41.4  			if (!atts.value( "backgroundColor").isEmpty() )
    41.5  			{
    41.6  				col.setNamedColor(atts.value("backgroundColor"));
    41.7 -				mc->getCanvas()->setBackgroundColor(col);
    41.8 +				mc->getScene()->setBackgroundBrush(col);
    41.9  			}	    
   41.10  			if (!atts.value( "linkColorHint").isEmpty() ) 
   41.11  			{
   41.12 @@ -590,7 +590,7 @@
   41.13  			lastFloat->setFloatExport (false);
   41.14  	}	
   41.15  	if (!a.value( "zPlane").isEmpty() ) 
   41.16 -		lastFloat->setZ (a.value("zPlane").toInt ());
   41.17 +		lastFloat->setZValue (a.value("zPlane").toInt ());
   41.18      int x,y;
   41.19      bool okx,oky;
   41.20  	if (!a.value( "relPosX").isEmpty() ) 
   41.21 @@ -627,7 +627,7 @@
   41.22  	QColor col;
   41.23  	bool okx;
   41.24  	bool success=false;
   41.25 -	XLinkObj *xlo=new XLinkObj (mc->getCanvas());
   41.26 +	XLinkObj *xlo=new XLinkObj (mc->getScene());
   41.27  	if (!a.value( "color").isEmpty() ) 
   41.28  	{
   41.29  		col.setNamedColor(a.value("color"));
    42.1 --- a/xsltproc.cpp	Thu Nov 23 16:18:26 2006 +0000
    42.2 +++ b/xsltproc.cpp	Fri Dec 08 20:18:56 2006 +0000
    42.3 @@ -47,34 +47,34 @@
    42.4  void XSLTProc::process()
    42.5  {
    42.6  	ShowTextDialog dia;
    42.7 +	QStringList args;
    42.8  	Process *xsltProc=new Process ();
    42.9 -	xsltProc->clearArguments();
   42.10 -	xsltProc->addArgument (xsltprocessor);	
   42.11  
   42.12  	QStringList::Iterator itk;
   42.13  	QStringList::Iterator itv=stringParamVal.begin();
   42.14  
   42.15  	for ( itk = stringParamKey.begin(); itk != stringParamKey.end(); ++itk ) 
   42.16  	{
   42.17 -		xsltProc->addArgument ("--stringparam");
   42.18 -		xsltProc->addArgument (*itk);
   42.19 -		xsltProc->addArgument (*itv);
   42.20 +		args << "--stringparam";
   42.21 +		args << *itk;
   42.22 +		args << *itv;
   42.23  		++itv;
   42.24      }
   42.25  	
   42.26 -	xsltProc->addArgument ("--output");
   42.27 -	xsltProc->addArgument (outputFile);
   42.28 -	xsltProc->addArgument (xslFile);
   42.29 -	xsltProc->addArgument (inputFile);
   42.30 -	dia.append ("vym is executing: \n" + xsltProc->arguments().join(" ") );	
   42.31 -	if (!xsltProc->start() )
   42.32 +	args << "--output";
   42.33 +	args << outputFile;
   42.34 +	args << xslFile;
   42.35 +	args << inputFile;
   42.36 +	dia.append ("vym is executing: \n" + xsltprocessor+" "+args.join(" ") );	
   42.37 +	xsltProc->start(xsltprocessor,args);
   42.38 +	if (!xsltProc->waitForStarted() )
   42.39  	{
   42.40  		QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
   42.41  					   QObject::tr("Could not start %1").arg(xsltprocessor) );
   42.42  	} else
   42.43  	{
   42.44  		xsltProc->waitFinished();
   42.45 -		if (!xsltProc->normalExit() )
   42.46 +		if (xsltProc->exitStatus()!=QProcess::NormalExit )
   42.47  			QMessageBox::critical( 0, QObject::tr( "Critical Error" ),
   42.48  			   QObject::tr("%1 didn't exit normally").arg(xsltprocessor) +
   42.49  			   xsltProc->getErrout() );