X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/blast.git/blobdiff_plain/e5af659f87bcb199d6a5f10f09b311138351d0f3..6e2b3026c6a496e81642c373796bd39dad33d2a6:/InterfaceItem.cpp diff --git a/InterfaceItem.cpp b/InterfaceItem.cpp index 0047e16..18397f3 100644 --- a/InterfaceItem.cpp +++ b/InterfaceItem.cpp @@ -11,7 +11,7 @@ InterfaceItem::InterfaceItem(double _position, int _orientation, ConnectedInterface *_refInter, AbstractBoxItem* _owner, - Parameters* _params){ + Parameters* _params) { positionRatio = _position; orientation = _orientation; refInter = _refInter; @@ -95,7 +95,12 @@ void InterfaceItem::paint(QPainter *painter) { painter->setPen(QPen(Qt::red,2)); } else { - painter->setPen(QPen(Qt::black,1)); + if(owner->isBoxItem()) { + painter->setPen(QPen(Qt::black,1)); + } + else if(owner->isSourceItem()) { + painter->setPen(QPen(Qt::darkCyan,1)); + } } painter->translate(originPoint); @@ -113,17 +118,36 @@ void InterfaceItem::paint(QPainter *painter) { } // draw arrows - if(refInter->getDirection() == AbstractInterface::Input) { - painter->drawPath(params->inArrow); + if ( (refInter->getPurpose() == AbstractInterface::Clock) || (refInter->getPurpose() == AbstractInterface::Reset)) { + painter->drawPath(params->clkrstArrow); + } + else if(refInter->getDirection() == AbstractInterface::Input) { + painter->drawPath(params->dataArrowIn); } else if(refInter->getDirection() == AbstractInterface::Output) { - painter->drawPath(params->outArrow); + painter->drawPath(params->dataArrowOut); } else if(refInter->getDirection() == AbstractInterface::InOut) { - painter->drawPath(params->inArrow); - painter->drawPath(params->outArrow); + painter->drawPath(params->dataArrowIn); + painter->drawPath(params->dataArrowOut); + } + + // paint modifier box if needed + ConnectedInterface* connIface = AI_TO_CON(refInter->getAssociatedIface()); + if ((connIface != NULL) && (connIface->getInputModifier() != NULL)) { + painter->save(); + painter->translate(params->arrowWidth+params->arrowLineLength,0); + painter->drawRect(0,-5,10,10); + painter->restore(); } + // draw names + if(selected) { + painter->setPen(QPen(Qt::red,2)); + } + else { + painter->setPen(QPen(Qt::black,1)); + } // reset to normal if at west if(orientation == Parameters::West){ @@ -141,7 +165,7 @@ void InterfaceItem::paint(QPainter *painter) { if(owner->isGroupItem()){ painter->drawText(-(w+params->arrowWidth+params->arrowLineLength),-h/2,w,h,Qt::AlignLeft | Qt::TextWordWrap, refInter->getName()); } - else if(owner->isBoxItem()){ + else if((owner->isBoxItem()) || (owner->isSourceItem())){ painter->drawText(0,-h/2,w,h,Qt::AlignRight | Qt::TextWordWrap, refInter->getName()); } } @@ -150,42 +174,41 @@ void InterfaceItem::paint(QPainter *painter) { if(owner->isGroupItem()) { painter->drawText(params->arrowWidth+params->arrowLineLength,-h/2,w,h,Qt::AlignRight | Qt::TextWordWrap, refInter->getName()); } - else if(owner->isBoxItem()) { + else if((owner->isBoxItem()) || (owner->isSourceItem())){ painter->drawText(-w,-h/2,w,h,Qt::AlignLeft | Qt::TextWordWrap, refInter->getName()); } - } + } + + painter->restore(); } } -QPointF InterfaceItem::getEndPointInGroup() { - QPointF p; +QPointF InterfaceItem::getStartPosition() { + QPointF p = originPoint; + QPointF ownerPos = owner->scenePos(); + p += ownerPos; + return p; +} - if (owner->isGroupItem()) { - p = originPoint; - } - else { - double x = owner->x() + originPoint.x(); - double y = owner->y() + originPoint.y(); - switch(orientation){ - case Parameters::East: - x += params->arrowWidth+params->arrowLineLength; - break; - case Parameters::North: - y -= params->arrowWidth+params->arrowLineLength; - break; - case Parameters::West: - x -= params->arrowWidth+params->arrowLineLength; - break; - case Parameters::South: - y += params->arrowWidth+params->arrowLineLength; - break; - } - p = QPointF(x,y); +QPointF InterfaceItem::getEndPosition() { + QPointF p = getStartPosition(); + + switch(orientation){ + case Parameters::East: + p.setX(p.x()+params->arrowWidth+params->arrowLineLength); + break; + case Parameters::North: + p.setY(p.y() - params->arrowWidth-params->arrowLineLength); + break; + case Parameters::West: + p.setX(p.x() - params->arrowWidth-params->arrowLineLength); + break; + case Parameters::South: + p.setY(p.y() + params->arrowWidth+params->arrowLineLength); + break; } - - //cout << "iface end point in group item: " << p.x() << "," << p.y() << endl; return p; } @@ -249,7 +272,7 @@ void InterfaceItem::addConnectionItem(ConnectionItem* item) { } void InterfaceItem::removeConnectionItem(ConnectionItem* item) { - connections.removeOne(item); + connections.removeAll(item); } QDataStream &operator <<(QDataStream &out, InterfaceItem *i) {