#include "Dispatcher.h"
#include "Parameters.h"
#include "BoxItem.h"
-#include "SourceItem.h"
+#include "StimuliItem.h"
#include "AbstractBlock.h"
#include "AbstractInterface.h"
#include "ConnectedInterface.h"
}
void GroupItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
+
+ if (!visible) return;
+
if(boxWidth > 0 && boxHeight > 0){
if(selected)
painter->setPen(Qt::red);
if (refBlock->isTopGroupBlock()) {
QRectF rectGroup = boundingRectInScene();
rectGroup.moveTo(rectGroup.x()+gapX,rectGroup.y()+gapY);
- foreach(SourceItem* source, getScene()->getSourceItems()) {
+ foreach(StimuliItem* source, getScene()->getSourceItems()) {
QRectF rectSource = source->boundingRectInScene();
if (rectGroup.intersects(rectSource)) canMove = false;
}
QAction* removeAction = NULL;
QAction* renameAction = NULL;
QAction* showParameters = NULL;
+ QAction* addExtClkAction = NULL;
InterfaceItem* ifaceItem = getInterfaceItemFromCursor(event->pos().x(), event->pos().y());
showParameters = menu.addAction("Show parameters");
}
renameAction = menu.addAction("Rename");
+ if (refBlock->isTopGroupBlock()) {
+ addExtClkAction = menu.addAction("Add new external clock/reset");
+ }
+
}
QAction* selectedAction = menu.exec(event->screenPos());
}
else if(selectedAction == showParameters) {
new ParametersWindow(refBlock, params, NULL);
- }
+ }
+ else if (selectedAction == addExtClkAction) {
+ bool ok = false;
+ double freq = QInputDialog::getDouble(NULL,"Adding a clkrstgen","External clock frequency (in MHz)",100,0,100000,1,&ok);
+ if (!ok) return;
+ dispatcher->addClkRstGenBlock(Dispatcher::Design, freq);
+ }
}
InterfaceItem* GroupItem::isHoverInterface(QPointF point) {
if(!ok) throw(Exception(PROJECTFILE_CORRUPTED));
GroupInterface *groupIface = new GroupInterface(groupBlock,name,direction,purpose);
- GroupInterface *groupCtlIface = new GroupInterface(groupBlock,name+"_enb",direction,AbstractInterface::Control);
- groupCtlIface->setAssociatedIface(groupIface);
-
- InterfaceItem *interfaceItem = new InterfaceItem(position,orientation,groupIface,this,params);
- interfaceItem->setId(id);
-
groupBlock->addInterface(groupIface);
- groupBlock->addInterface(groupCtlIface);
+ bool show = false;
+ if ((groupBlock->isTopGroupBlock()) && (purpose == AbstractInterface::Clock)) {
+ show = true;
+ }
+
+ InterfaceItem *interfaceItem = new InterfaceItem(position,orientation,groupIface,this,params,show);
+ interfaceItem->setId(id);
addInterfaceItem(interfaceItem, false);
- cout << "interface add to " << groupBlock->getName().toStdString() << endl;
+
+ if (purpose == AbstractInterface::Data) {
+ GroupInterface *groupCtlIface = new GroupInterface(groupBlock,name+"_enb",direction,AbstractInterface::Control);
+ groupCtlIface->setAssociatedIface(groupIface);
+ groupBlock->addInterface(groupCtlIface);
+ }
+ cout << "interface " << qPrintable(name) << " added to " << groupBlock->getName().toStdString() << endl;
}
}