#include "GroupInterface.h"
#include "FunctionalInterface.h"
#include "BoxItem.h"
+#include "ReferenceInterface.h"
int InterfaceItem::counter = 0;
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 {
return refInter->getName();
}
+QString InterfaceItem::getReferenceName() {
+ if (!refInter->isFunctionalInterface()) {
+ return "no_refname_for_groupiface";
+ }
+ FunctionalInterface* iface = AI_TO_FUN(refInter);
+ ReferenceInterface* refIface = iface->getReference();
+ return refIface->getName();
+}
+
void InterfaceItem::updateName(QString name) {
QFontMetrics fmName(params->defaultIfaceFont);
nameWidth = fmName.width(refInter->getName());
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) {