int _orientation,
ConnectedInterface *_refInter,
AbstractBoxItem* _owner,
- Parameters* _params) {
+ Parameters* _params, bool forceVisible) {
positionRatio = _position;
orientation = _orientation;
refInter = _refInter;
nameWidth = fmName.width(refInter->getName());
nameHeight = fmName.height();
// by default, only data interface are visible
- if (refInter->getPurpose() == AbstractInterface::Data) {
+ if ((forceVisible) || (refInter->getPurpose() == AbstractInterface::Data)) {
visible = true;
}
else {
if(owner->isBoxItem()) {
painter->setPen(QPen(Qt::black,1));
}
- else if(owner->isSourceItem()) {
+ else if(owner->isStimuliItem()) {
painter->setPen(QPen(Qt::darkCyan,1));
}
}
}
// 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));
if(owner->isGroupItem()){
painter->drawText(-(w+params->arrowWidth+params->arrowLineLength),-h/2,w,h,Qt::AlignLeft | Qt::TextWordWrap, refInter->getName());
}
- else if((owner->isBoxItem()) || (owner->isSourceItem())){
+ else if((owner->isBoxItem()) || (owner->isStimuliItem())){
painter->drawText(0,-h/2,w,h,Qt::AlignRight | Qt::TextWordWrap, refInter->getName());
}
}
if(owner->isGroupItem()) {
painter->drawText(params->arrowWidth+params->arrowLineLength,-h/2,w,h,Qt::AlignRight | Qt::TextWordWrap, refInter->getName());
}
- else if((owner->isBoxItem()) || (owner->isSourceItem())){
+ else if((owner->isBoxItem()) || (owner->isStimuliItem())){
painter->drawText(-w,-h/2,w,h,Qt::AlignLeft | Qt::TextWordWrap, refInter->getName());
}
- }
+ }
+
+
painter->restore();
}
}
void InterfaceItem::removeConnectionItem(ConnectionItem* item) {
- connections.removeOne(item);
+ connections.removeAll(item);
}
QDataStream &operator <<(QDataStream &out, InterfaceItem *i) {