- InterfaceItem *otherIface = new InterfaceItem(item->getPosition(),item->getOrientation(),(ConnectedInterface*)otherRef,item->getOwner(),params);
- item->getOwner()->addInterface(otherIface,true);
+ InterfaceItem *cloneIfaceItem = new InterfaceItem(item->getPosition(),item->getOrientation(),(ConnectedInterface*)cloneIface,item->getOwner(),params);
+ item->getOwner()->addInterface(cloneIfaceItem,true);
+
+ // creating control interface if needed
+ if (refI->getAssociatedIface() != NULL) {
+ QString ctlName = cloneIface->getName()+"_ctl";
+ ReferenceInterface* ctlIface = new ReferenceInterface(refB,ctlName,"boolean","1",cloneIface->getDirection(), AbstractInterface::Control, 1);
+ refB->addInterface(ctlIface);
+ if (! ctlIface->setAssociatedIface(cloneIface)) {
+ cerr << "Abnormal case while cloning an interface and creating its associated control interface" << endl;
+ }
+ }