5 #include "branchitem.h"
13 /////////////////////////////////////////////////////////////////
15 /////////////////////////////////////////////////////////////////
17 Link::Link (VymModel *m)
19 //qDebug() << "Const Link () this="<<this;
26 // qDebug()<<"* Destr Link begin this="<<this<<" bLI="<<beginLinkItem<<" eLI="<<endLinkItem;
28 // qDebug()<<"* Destr Link end this="<<this;
38 xLinkState=Link::undefinedXLink;
41 pen=model->getMapDefXLinkPen();
44 VymModel* Link::getModel()
49 void Link::setBeginBranch (BranchItem *bi)
58 BranchItem* Link::getBeginBranch ()
63 void Link::setEndBranch (BranchItem *bi)
68 if (xlo) xlo->initC1();
72 BranchItem* Link::getEndBranch()
77 void Link::setEndPoint (QPointF p)
79 // Used only while creating the link, without endBranch
80 if (xlo) xlo->setEnd (p);
83 void Link::setBeginLinkItem (XLinkItem *li)
92 XLinkItem* Link::getBeginLinkItem ()
97 void Link::setEndLinkItem (XLinkItem *li)
101 xLinkState=initXLink;
106 XLinkItem* Link::getEndLinkItem()
111 XLinkItem* Link::getOtherEnd (XLinkItem *xli)
113 if (xli==beginLinkItem) return endLinkItem;
114 if (xli==endLinkItem) return beginLinkItem;
118 void Link::setPen (const QPen &p)
121 if (xlo) xlo->updateXLink();
129 void Link::setLinkType (const QString &s)
133 else if (s=="Bezier")
136 qWarning()<<"Link::setLinkType Unknown type: "<<s;
139 void Link::setStyleBegin (const QString &s)
143 xlo->setStyleBegin( s );
148 QString Link::getStyleBeginString()
151 return ArrowObj::styleToString( xlo->getStyleBegin() );
156 void Link::setStyleEnd (const QString &s)
160 xlo->setStyleEnd( s );
165 QString Link::getStyleEndString()
168 return ArrowObj::styleToString( xlo->getStyleEnd() );
173 bool Link::activate ()
175 if (beginBranch && endBranch)
177 if ( beginBranch == endBranch) return false;
178 xLinkState = activeXLink;
179 model->updateActions();
185 void Link::deactivate ()
187 // Remove pointers from XLinkItem to Link and
190 // qDebug()<<"Link::deactivate ******************************";
191 xLinkState=deleteXLink;
192 if (beginLinkItem) beginLinkItem->setLink (NULL);
193 if (endLinkItem) endLinkItem->setLink (NULL);
201 Link::XLinkState Link::getState()
206 void Link::removeXLinkItem (XLinkItem *xli)
208 // Only mark _one_ end for removal here!
209 if (xli==beginLinkItem) beginLinkItem=NULL;
210 if (xli==endLinkItem) endLinkItem=NULL;
211 xLinkState=deleteXLink;
214 void Link::updateLink()
216 if(xlo ) xlo->updateXLink();
219 QString Link::saveToDir ()
221 // qDebug()<<"Link::saveToDir this="<<this<<" beginBranch="<<beginBranch<<" endBranch="<<endBranch<<" state="<<xLinkState;
223 if (beginBranch && endBranch && xLinkState==activeXLink)
225 if (beginBranch==endBranch )
226 qWarning ("Link::saveToDir ignored, because beginBranch==endBranch, ");
229 QString colAttr=attribut ("color",pen.color().name());
230 QString widAttr=attribut ("width",QString().setNum(pen.width(),10));
231 QString styAttr=attribut ("penstyle",penStyleToString (pen.style()));
237 typeAttr=attribut("type","Linear");
240 typeAttr=attribut("type","Bezier");
243 ctrlAttr +=attribut ("c0",pointToString (xlo->getC0() ) );
244 ctrlAttr +=attribut ("c1",pointToString (xlo->getC1() ) );
248 QString begSelAttr=attribut ("beginID",model->getSelectString(beginBranch));
249 QString endSelAttr=attribut ("endID", model->getSelectString(endBranch));
253 styleAttr = QString(" styleBegin=\"%1\"").arg( ArrowObj::styleToString( xlo->getStyleBegin() ));
254 styleAttr+= QString(" styleEnd=\"%1\"" ).arg( ArrowObj::styleToString( xlo->getStyleEnd() ));
256 s=singleElement ("xlink",
270 XLinkObj* Link::getXLinkObj()
275 XLinkObj* Link::createMapObj()
277 if (!xlo) xlo=new XLinkObj (beginBranch->getLMO(),this);
278 xlo->setVisibility();
282 MapObj* Link::getMO()