+++ /dev/null
-#include <QDebug>
-
-#include "xlink.h"
-
-#include "branchitem.h"
-#include "misc.h"
-#include "vymmodel.h"
-#include "xlinkitem.h"
-#include "xlinkobj.h"
-
-class VymModel;
-
-/////////////////////////////////////////////////////////////////
-// Link
-/////////////////////////////////////////////////////////////////
-
-Link::Link (VymModel *m)
-{
- //qDebug() << "Const Link () this="<<this;
- model=m;
- init();
-}
-
-Link::~Link ()
-{
-// qDebug()<<"* Destr Link begin this="<<this<<" bLI="<<beginLinkItem<<" eLI="<<endLinkItem;
- deactivate();
-// qDebug()<<"* Destr Link end this="<<this;
-}
-
-void Link::init ()
-{
- xlo=NULL;
- beginBranch=NULL;
- endBranch=NULL;
- beginLinkItem=NULL;
- endLinkItem=NULL;
- xLinkState=Link::undefinedXLink;
-
- type=Bezier;
- pen=model->getMapDefXLinkPen();
-}
-
-VymModel* Link::getModel()
-{
- return model;
-}
-
-void Link::setBeginBranch (BranchItem *bi)
-{
- if (bi)
- {
- xLinkState=initXLink;
- beginBranch=bi;
- }
-}
-
-BranchItem* Link::getBeginBranch ()
-{
- return beginBranch;
-}
-
-void Link::setEndBranch (BranchItem *bi)
-{
- if (bi)
- {
- endBranch=bi;
- if (xlo) xlo->initC1();
- }
-}
-
-BranchItem* Link::getEndBranch()
-{
- return endBranch;
-}
-
-void Link::setEndPoint (QPointF p)
-{
- // Used only while creating the link, without endBranch
- if (xlo) xlo->setEnd (p);
-}
-
-void Link::setBeginLinkItem (XLinkItem *li)
-{
- if (li)
- {
- xLinkState=initXLink;
- beginLinkItem=li;
- }
-}
-
-XLinkItem* Link::getBeginLinkItem ()
-{
- return beginLinkItem;
-}
-
-void Link::setEndLinkItem (XLinkItem *li)
-{
- if (li)
- {
- xLinkState=initXLink;
- endLinkItem=li;
- }
-}
-
-XLinkItem* Link::getEndLinkItem()
-{
- return endLinkItem;
-}
-
-XLinkItem* Link::getOtherEnd (XLinkItem *xli)
-{
- if (xli==beginLinkItem) return endLinkItem;
- if (xli==endLinkItem) return beginLinkItem;
- return NULL;
-}
-
-void Link::setPen (const QPen &p)
-{
- pen = p;
- if (xlo) xlo->updateXLink();
-}
-
-QPen Link::getPen ()
-{
- return pen;
-}
-
-void Link::setLinkType (const QString &s)
-{
- if (s=="Linear")
- type=Linear;
- else if (s=="Bezier")
- type=Bezier;
- else
- qWarning()<<"Link::setLinkType Unknown type: "<<s;
-}
-
-void Link::setStyleBegin (const QString &s)
-{
- if (xlo)
- {
- xlo->setStyleBegin( s );
- xlo->updateXLink();
- }
-}
-
-QString Link::getStyleBeginString()
-{
- if (xlo)
- return ArrowObj::styleToString( xlo->getStyleBegin() );
- else
- return QString();
-}
-
-void Link::setStyleEnd (const QString &s)
-{
- if (xlo)
- {
- xlo->setStyleEnd( s );
- xlo->updateXLink();
- }
-}
-
-QString Link::getStyleEndString()
-{
- if (xlo)
- return ArrowObj::styleToString( xlo->getStyleEnd() );
- else
- return QString();
-}
-
-bool Link::activate ()
-{
- if (beginBranch && endBranch)
- {
- if ( beginBranch == endBranch) return false;
- xLinkState = activeXLink;
- model->updateActions();
- return true;
- } else
- return false;
-}
-
-void Link::deactivate ()
-{
- // Remove pointers from XLinkItem to Link and
- // delete XLinkObj
-
-// qDebug()<<"Link::deactivate ******************************";
- xLinkState=deleteXLink;
- if (beginLinkItem) beginLinkItem->setLink (NULL);
- if (endLinkItem) endLinkItem->setLink (NULL);
- if (xlo)
- {
- delete (xlo);
- xlo=NULL;
- }
-}
-
-Link::XLinkState Link::getState()
-{
- return xLinkState;
-}
-
-void Link::removeXLinkItem (XLinkItem *xli)
-{
- // Only mark _one_ end for removal here!
- if (xli==beginLinkItem) beginLinkItem=NULL;
- if (xli==endLinkItem) endLinkItem=NULL;
- xLinkState=deleteXLink;
-}
-
-void Link::updateLink()
-{
- if(xlo ) xlo->updateXLink();
-}
-
-QString Link::saveToDir ()
-{
-// qDebug()<<"Link::saveToDir this="<<this<<" beginBranch="<<beginBranch<<" endBranch="<<endBranch<<" state="<<xLinkState;
- QString s="";
- if (beginBranch && endBranch && xLinkState==activeXLink)
- {
- if (beginBranch==endBranch )
- qWarning ("Link::saveToDir ignored, because beginBranch==endBranch, ");
- else
- {
- QString colAttr=attribut ("color",pen.color().name());
- QString widAttr=attribut ("width",QString().setNum(pen.width(),10));
- QString styAttr=attribut ("penstyle",penStyleToString (pen.style()));
- QString ctrlAttr;
- QString typeAttr;
- switch (type)
- {
- case Linear:
- typeAttr=attribut("type","Linear");
- break;
- case Bezier:
- typeAttr=attribut("type","Bezier");
- if (xlo)
- {
- ctrlAttr +=attribut ("c0",pointToString (xlo->getC0() ) );
- ctrlAttr +=attribut ("c1",pointToString (xlo->getC1() ) );
- }
- break;
- }
- QString begSelAttr=attribut ("beginID",model->getSelectString(beginBranch));
- QString endSelAttr=attribut ("endID", model->getSelectString(endBranch));
- QString styleAttr;
- if (xlo)
- {
- styleAttr = QString(" styleBegin=\"%1\"").arg( ArrowObj::styleToString( xlo->getStyleBegin() ));
- styleAttr+= QString(" styleEnd=\"%1\"" ).arg( ArrowObj::styleToString( xlo->getStyleEnd() ));
- }
- s=singleElement ("xlink",
- colAttr
- +widAttr
- +styAttr
- +typeAttr
- +ctrlAttr
- +begSelAttr
- +endSelAttr
- +styleAttr);
- }
- }
- return s;
-}
-
-XLinkObj* Link::getXLinkObj()
-{
- return xlo;
-}
-
-XLinkObj* Link::createMapObj()
-{
- if (!xlo) xlo=new XLinkObj (beginBranch->getLMO(),this);
- xlo->setVisibility();
- return xlo;
-}
-
-MapObj* Link::getMO()
-{
- return xlo;
-}
-