#include "AbstractBlock.h"
#include "GroupScene.h"
+#include "GroupItem.h"
#include "AbstractInterface.h"
#include "ConnectedInterface.h"
selected = false;
currentInterface = NULL;
rstClkVisible = false;
+ wishboneVisible = false;
setAcceptHoverEvents(true);
selected = false;
currentInterface = NULL;
rstClkVisible = false;
-
+ wishboneVisible = false;
+
setAcceptHoverEvents(true);
// NOTE : initInterfaces() is only called in subclasses
bool AbstractBoxItem::isGroupItem() {
return false;
}
+void AbstractBoxItem::setRstClkVisible(bool b) {
+ rstClkVisible = b;
+ foreach(InterfaceItem* ifaceItem, interfaces) {
+ if ((ifaceItem->refInter->getPurpose() == AbstractInterface::Clock) ||
+ (ifaceItem->refInter->getPurpose() == AbstractInterface::Reset) ) {
+ ifaceItem->visible = b;
+ }
+ }
+ resetInterfacesPosition();
+ updateGeometry(InterfaceMove);
+ update();
+ getScene()->updateConnectionItemsShape();
+ (getScene()->getGroupItem())->updateShape();
+
+}
+
+void AbstractBoxItem::setWishboneVisible(bool b) {
+ wishboneVisible = b;
+ foreach(InterfaceItem* ifaceItem, interfaces) {
+ if (ifaceItem->refInter->getPurpose() == AbstractInterface::Wishbone) {
+ ifaceItem->visible = b;
+ }
+ }
+ resetInterfacesPosition();
+ updateGeometry(InterfaceMove);
+ update();
+ getScene()->updateConnectionItemsShape();
+ (getScene()->getGroupItem())->updateShape();
+}
void AbstractBoxItem::setRefBlock(AbstractBlock* _refBlock) {
refBlock = _refBlock;
int orientation = Parameters::West;
foreach(AbstractInterface *inter, refBlock->getInterfaces()){
- if(inter->getPurpose() != AbstractInterface::Wishbone){
- InterfaceItem *item;
- if(inter->getDirection() == AbstractInterface::Input){
- orientation = Parameters::West;
- } else if(inter->getDirection() == AbstractInterface::Output){
- orientation = Parameters::East;
- } else if(inter->getDirection() == AbstractInterface::InOut){
- orientation = Parameters::North;
- }
- item = new InterfaceItem(0.0 , orientation, (ConnectedInterface *)inter, this, params);
- interfaces.append(item);
+
+ /* NB: create InterfaceItem for every interfaces, even if they do not have a graphical representation
+ It will allow to save them in the XML project file and thus to create their equivalent
+ in the graph while the file is loaded.
+ */
+ InterfaceItem *item;
+ if(inter->getDirection() == AbstractInterface::Input){
+ orientation = Parameters::West;
+ } else if(inter->getDirection() == AbstractInterface::Output){
+ orientation = Parameters::East;
+ } else if(inter->getDirection() == AbstractInterface::InOut){
+ orientation = Parameters::North;
}
- }
+ item = new InterfaceItem(0.0 , orientation, (ConnectedInterface *)inter, this, params);
+ interfaces.append(item);
+ }
}
InterfaceItem* AbstractBoxItem::searchInterfaceByName(QString name) {
foreach(InterfaceItem* inter, interfaces) {
// only data interfaces and if needed time and reset
- if(inter->refInter->getPurpose() == AbstractInterface::Data || inter->getOwner()->isRstClkVisible()){
+ if(inter->visible) {
if(inter->getOrientation() == Parameters::North){
nbNorth++;
} else if(inter->getOrientation() == Parameters::South){
foreach(InterfaceItem* inter, interfaces) {
- if(inter->refInter->getPurpose() == AbstractInterface::Data || inter->getOwner()->isRstClkVisible()){
+ if(inter->visible){
if(inter->getOrientation() == Parameters::North){
positionRatio = cntNorth/(double)(nbNorth+1);