28void BuilderWindow::init()
31 scene->setSceneRect(QRectF(0, 0, 2000, 2000));
32 scene->setBackgroundBrush(QPixmap(
":/images/background2.png"));
33 connect(
scene,
SIGNAL(addedModule(
void*,QPointF)),
this,SLOT(onAddModule(
void*,QPointF)));
34 connect(
scene,
SIGNAL(addedApplication(
void*,QPointF)),
this,SLOT(onAddedApplication(
void*,QPointF)));
35 connect(
scene,
SIGNAL(addNewConnection(
void*,
void*)),
this,SLOT(onAddNewConnection(
void*,
void*)));
38 connect(
view,
SIGNAL(pressedNullItem()),
this,SLOT(initApplicationTab()));
40 connect(
view,
SIGNAL(addDestinationPort(QString,QPointF)),
this,SLOT(onAddDestinationPort(QString,QPointF)));
42 connect(
view,
SIGNAL(addNewConnection(
void*,
void*)),
this,SLOT(onAddNewConnection(
void*,
void*)));
45 view->setMouseTracking(
true);
47 view->centerOn(
scene->sceneRect().width()/2,
scene->sceneRect().height()/2);
58 snapToGrid->setCheckable(
true);
59 showGrid->setCheckable(
true);
60 showGrid->setChecked(
true);
61 connect(snapToGrid,
SIGNAL(triggered(
bool)),
this,SLOT(onSnap(
bool)));
62 connect(restoreZoom,
SIGNAL(triggered()),
this,SLOT(onRestoreZoom()));
63 connect(showGrid,
SIGNAL(triggered(
bool)),
this,SLOT(onShowGrid(
bool)));
64 connect(zoomIn,
SIGNAL(triggered(
bool)),
this,SLOT(onZoomIn()));
65 connect(zoomOut,
SIGNAL(triggered(
bool)),
this,SLOT(onZoomOut()));
72 auto* layout =
new QVBoxLayout;
82 layout->addWidget(
view);
108 foreach (QGraphicsItem *it,
scene->items()) {
138 application->
setXmlFile(filename.toStdString().c_str());
148 return QString(application->
getName());
154 application->
setName(appName.toStdString().c_str());
159void BuilderWindow::prepareManagerFrom(
Manager* lazy,
160 const char* szAppName)
167 for (
auto& mod : mods) {
172 for (
auto& re : res) {
177 for (
auto&
app : apps) {
191 for(
int i=0;i<
scene->items().count();i++){
192 QGraphicsItem *it =
scene->items().at(i);
195 disconnect(bItem->signalHandler(),
SIGNAL(moduleSelected(QGraphicsItem*)),
this,SLOT(onModuleSelected(QGraphicsItem*)));
196 disconnect(bItem->signalHandler(),
SIGNAL(requestNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionRequested(QPointF,QGraphicsItem*)));
197 disconnect(bItem->signalHandler(),
SIGNAL(addNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionAdded(QPointF,QGraphicsItem*)));
198 disconnect(bItem->signalHandler(),
SIGNAL(
modified()),
this,SLOT(onModified()));
199 disconnect(bItem->signalHandler(),
SIGNAL(moved()),
this,SLOT(onMoved()));
203 disconnect(bItem->signalHandler(),
SIGNAL(moduleSelected(QGraphicsItem*)),
this,SLOT(onModuleSelected(QGraphicsItem*)));
204 disconnect(bItem->signalHandler(),
SIGNAL(connectctionSelected(QGraphicsItem*)),
this,SLOT(onConnectionSelected(QGraphicsItem*)));
205 disconnect(bItem->signalHandler(),
SIGNAL(applicationSelected(QGraphicsItem*)),
this,SLOT(onApplicationSelected(QGraphicsItem*)));
206 disconnect(bItem->signalHandler(),
SIGNAL(
modified()),
this,SLOT(onModified()));
207 disconnect(bItem->signalHandler(),
SIGNAL(moved()),
this,SLOT(onMoved()));
234 layout()->removeWidget(
view);
241 layout()->addWidget(
view);
265 for(
int i=0;i<
scene->items().count();i++){
268 if(m->
getId() == id){
282 for(
int i=0;i<
scene->items().count();i++){
299bool BuilderWindow::isApplicationPresent(
Application *application)
301 for(
int i=0;i<
scene->items().count();i++){
305 if(appItem->getInnerApplication() == application){
313bool BuilderWindow::isModulePresent(
Module *module)
315 for(
int i=0;i<
scene->items().count();i++){
319 if(appItem->getInnerModule() == module){
369 for(appItr=applications.begin(); appItr!=applications.end(); appItr++)
377 for(exeitr=exes.begin(); exeitr<exes.end(); exeitr++){
378 Module*
module = (*exeitr)->getModule();
380 QString
id = QString(
"%1").arg((*exeitr)->getID());
381 bool idFound =
false;
383 if(usedId ==
id.toInt()){
395 for(moditr=modules.begin(); moditr<modules.end(); moditr++){
396 auto*
module = (Module*)(*moditr);
412 for(citr=connections.begin(); citr<connections.end(); citr++){
422 QString inModulePrefix,outModulePrefix;
423 findInputOutputData((*citr), allModules, input, output,&inModulePrefix,&outModulePrefix);
425 source = findModelFromOutput(output,outModulePrefix);
429 for(
int i=0;i<
scene->items().count() && !bExist;i++){
433 source = auxSourceport;
441 qDebug() <<
"APPLICATION CONN";
448 if(model.
points.size() > 1){
449 source->setPos(model.
points[1].x ,
460 dest = findModelFromInput(input,inModulePrefix);
463 for(
int i=0;i<
scene->items().count() && !bExist;i++){
474 qDebug() <<
"APPLICATION CONN";
480 size_t size = model.
points.size();
482 dest->setPos(model.
points[size-1].x ,
494 std::string strCarrier = baseCon.
carrier();
495 if((strCarrier.find(
"recv.priority") != std::string::npos)){
502 arrow->setConnection(baseCon);
521 view->fitInView(rr,Qt::KeepAspectRatio);
529 foreach(QGraphicsItem *it,
scene->items()){
530 if(it->parentItem() !=
nullptr && it->parentItem()->type() != QGraphicsItem::UserType +
ConnectionItemType){
537 QRectF bRect = it->mapToScene(it->boundingRect()).boundingRect();
538 rr = rr.united(bRect);
542 auto* bItem = (
Arrow *)it;
544 rr = rr.united(bItem->mapToScene(bItem->mapFromItem(i,i->boundingRect()).boundingRect()).boundingRect());
551BuilderItem *BuilderWindow::onAddSourcePort(QString name,QPointF pos)
555 it->setSelected(
true);
560BuilderItem *BuilderWindow::onAddDestinationPort(QString name,QPointF pos)
564 it->setSelected(
true);
569BuilderItem *BuilderWindow::onAddNewConnection(
void *startItem ,
void *endItem,
int connectionId)
580 setToolTip(QString(
"%1 --> %2").arg(myStartItem->getItemName()).arg(myEndItem->getItemName()));
582 bool bExternTo =
false;
583 bool bExternFrom =
false;
588 std::string strFrom,strTo ;
593 auto*
module = (ModuleItem *)port->parentItem();
600 if(((
ModuleItem*)port->parentItem())->getInnerModule()->owner() != mainApplication){
606 strFrom = std::string(myStartItem->getItemName().toLatin1().data());
613 auto*
module = (ModuleItem *)port->parentItem();
620 if(((
ModuleItem*)port->parentItem())->getInnerModule()->owner() != mainApplication){
626 strTo = std::string(myEndItem->getItemName().toLatin1().data());
639 connection.
setFrom(strFrom.c_str());
640 connection.
setTo(strTo.c_str());
641 connection.
setCarrier(label.toLatin1().data());
650 p.
x = (myStartItem->pos()).x();
651 p.
y = (myStartItem->pos()).y();
652 p1.
x = (myEndItem->pos()).x();
653 p1.
y = (myEndItem->pos()).y();
654 arrow->getModel()->points.clear();
655 arrow->getModel()->points.push_back(fakeLblPoint);
656 arrow->getModel()->points.push_back(p);
657 arrow->getModel()->points.push_back(p1);
658 connection.
setModel(arrow->getModel());
663 arrow->setConnection(connection);
689 connect(arrow->signalHandler(),
SIGNAL(connectctionSelected(QGraphicsItem*)),
this,SLOT(onConnectionSelected(QGraphicsItem*)));
690 connect(arrow->signalHandler(),
SIGNAL(
modified()),
this,SLOT(onModified()));
691 connect(arrow->signalHandler(),
SIGNAL(moved()),
this,SLOT(onMoved()));
692 arrow->setColor(QColor(Qt::red));
695 scene->addItem(arrow);
697 arrow->updatePosition();
698 scene->items().append(arrow);
714 connect(destPort->
signalHandler(),
SIGNAL(addNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionAdded(QPointF,QGraphicsItem*)));
718 scene->addItem(destPort);
722void BuilderWindow::onMoved()
724 foreach(QGraphicsItem *it,
scene->selectedItems()){
725 if(it->parentItem() !=
nullptr && it->parentItem()->type() != QGraphicsItem::UserType +
ConnectionItemType){
730 bItem->updateGraphicModel();
734 bItem->updateGraphicModel();
737 auto* bItem = (
Arrow *)it;
738 bItem->updateGraphicModel();
741 auto* bItem = (
Arrow *)it->parentItem();
742 bItem->updateGraphicModel();
745 auto* bItem = (
Arrow *)it->parentItem();
746 bItem->updateGraphicModel();
751void BuilderWindow::onModified()
766 connect(sourcePort->
signalHandler(),
SIGNAL(requestNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionRequested(QPointF,QGraphicsItem*)));
770 scene->addItem(sourcePort);
778 connect(it->signalHandler(),
SIGNAL(moduleSelected(QGraphicsItem*)),
this,SLOT(onModuleSelected(QGraphicsItem*)));
779 connect(it->signalHandler(),
SIGNAL(requestNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionRequested(QPointF,QGraphicsItem*)));
780 connect(it->signalHandler(),
SIGNAL(addNewConnection(QPointF,QGraphicsItem*)),
scene,SLOT(onNewConnectionAdded(QPointF,QGraphicsItem*)));
781 connect(it->signalHandler(),
SIGNAL(
modified()),
this,SLOT(onModified()));
782 connect(it->signalHandler(),
SIGNAL(moved()),
this,SLOT(onMoved()));
790 it->setPos(
index%900+10 + it->boundingRect().width()/2,
791 (
index/900)*100+10 + it->boundingRect().height()/2);
803 connect(appItem->signalHandler(),
SIGNAL(moduleSelected(QGraphicsItem*)),
this,SLOT(onModuleSelected(QGraphicsItem*)));
804 connect(appItem->signalHandler(),
SIGNAL(connectctionSelected(QGraphicsItem*)),
this,SLOT(onConnectionSelected(QGraphicsItem*)));
807 connect(appItem->signalHandler(),
SIGNAL(
modified()),
this,SLOT(onModified()));
808 connect(appItem->signalHandler(),
SIGNAL(moved()),
this,SLOT(onMoved()));
811 connect(appItem->signalHandler(),
SIGNAL(applicationSelected(QGraphicsItem*)),
this,SLOT(onApplicationSelected(QGraphicsItem*)));
814 scene->addItem(appItem);
821 appItem->setPos(
index%900+10,
830void BuilderWindow::onAddedApplication(
void *app,QPointF pos)
841 modBase.
points.push_back(p);
842 iapp.setModelBase(modBase);
845 if (!mainApplication) {
849 std::string strPrefix =
"/";
852 strPrefix += (uniqeId);
853 iapp.setPrefix(strPrefix.c_str());
863BuilderItem *BuilderWindow::onAddModule(
void *mod,QPointF pos)
877 modBase.
points.push_back(p);
878 imod.setModelBase(modBase);
881 if(!mainApplication){
885 Module*
module = manager.getKnowledgeBase()->addIModuleToApplication(mainApplication, imod, true);
888 std::string strPrefix = std::string(
"/") +
module->getLabel();
889 module->setBasePrefix(strPrefix.c_str());
891 module->setBroker(((Module*)mod)->getBroker());
892 module->setHost(((Module*)mod)->getHost());
893 module->setParam(((Module*)mod)->getParam());
894 module->setWorkDir(((Module*)mod)->getWorkDir());
895 module->setStdio(((Module*)mod)->getStdio());
899 std::string prefix = strAppPrefix+
module->getBasePrefix();
903 modIt->setSelected(
true);
920 foreach (QGraphicsItem *it,
scene->items()) {
921 if(it->parentItem() !=
nullptr){
925 auto* arrow = (
Arrow*)it;
926 if(selectedIds.contains(arrow->getId())){
927 arrow->setConnectionSelected(
true);
929 arrow->setConnectionSelected(
false);
934 app->setSelectedConnections(selectedIds);
944 foreach (QGraphicsItem *it,
scene->items()) {
945 if(it->parentItem() !=
nullptr){
950 if(selectedIds.contains(mod->getId())){
951 mod->setModuleSelected(
true);
953 mod->setModuleSelected(
false);
958 app->setSelectedModules(selectedIds);
963void BuilderWindow::onConnectionSelected(QGraphicsItem *it)
971 QList<int> selectedModules;
972 foreach (QGraphicsItem *item ,
scene->selectedItems()) {
975 auto* arrow = (
Arrow*)item;
976 selectedModules.append(arrow->getId());
982void BuilderWindow::onModuleSelected(QGraphicsItem *it)
987 if(
scene->selectedItems().count() > 1){
996 QList<int> selectedModules;
997 foreach (QGraphicsItem *item ,
scene->selectedItems()) {
999 if(item->type() == QGraphicsItem::UserType + (
int)
ModuleItemType){
1001 selectedModules.append(mod->getId());
1007void BuilderWindow::onApplicationSelected(QGraphicsItem* it)
1015void BuilderWindow::initApplicationTab()
1026void BuilderWindow::initModuleTab(
ModuleItem *it)
1104void BuilderWindow::onRestoreZoom()
1108 view->fitInView(rr,Qt::KeepAspectRatio);
1111void BuilderWindow::onZoomIn()
1113 view->scale(1.1,1.1);
1116void BuilderWindow::onZoomOut()
1118 view->scale(0.9,0.9);
1121void BuilderWindow::onSnap(
bool checked)
1126void BuilderWindow::onShowGrid(
bool checked)
1129 scene->setBackgroundBrush(QPixmap(
":/images/background2.png"));
1131 scene->setBackgroundBrush(QBrush(QColor(
"#f8f8ff")));
1136 InputData* &input_,
OutputData* &output_, QString *inModulePrefix,QString *outModulePrefix)
1140 std::string strTo = cnn.
to();
1141 std::string strFrom = cnn.
from();
1142 qDebug() <<
"CONNECTION FROM " << strFrom.data() <<
" TO " << strTo.data();
1145 for(itr=modules.begin(); itr!=modules.end(); itr++)
1148 for(
int i=0; i<
module->inputCount(); i++)
1150 InputData &input =
module->getInputAt(i);
1151 std::string strInput = std::string(module->
getPrefix()) + std::string(input.
getPort());
1152 if(strTo == strInput)
1155 *inModulePrefix = QString(
"%1").arg(module->
getPrefix());
1160 for(
int i=0; i<
module->outputCount(); i++)
1163 std::string strOutput = std::string(module->
getPrefix()) + std::string(output.
getPort());
1164 if(strFrom == strOutput)
1167 *outModulePrefix = QString(
"%1").arg(module->
getPrefix());
1176 for(
int i=0; i<
scene->items().count(); i++)
1178 QGraphicsItem *it =
scene->items().at(i);
1181 for(
int j=0; j<application->getModulesList().count(); j++){
1182 if(application->getModulesList().at(j)->type() == QGraphicsItem::UserType +
ModuleItemType){
1183 ModuleItem *
module = (ModuleItem*)application->getModulesList().at(j);
1184 for(
int k=0;k<
module->oPorts.count();k++){
1185 PortItem *port =
module->oPorts.at(k);
1197 if(it->type() == (QGraphicsItem::UserType + (int)
ModuleItemType)){
1198 auto*
module = (ModuleItem*)it;
1199 for(
int k=0;k<
module->oPorts.count();k++){
1200 PortItem *port =
module->oPorts.at(k);
1214PortItem* BuilderWindow::findModelFromInput(
InputData* input,QString modulePrefix)
1216 for(
int i=0; i<
scene->items().count(); i++)
1218 QGraphicsItem *it =
scene->items().at(i);
1222 for(
int j=0;j<application->getModulesList().count();j++){
1223 if(application->getModulesList().at(j)->type() == QGraphicsItem::UserType +
ModuleItemType){
1224 ModuleItem *
module = (ModuleItem*)application->getModulesList().at(j);
1225 for(
int k=0;k<
module->iPorts.count();k++){
1226 PortItem *port =
module->iPorts.at(k);
1229 if(port->
inData == input){
1238 if(it->type() == (QGraphicsItem::UserType + (int)
ModuleItemType)){
1239 auto*
module = (ModuleItem*)it;
1240 for(
int k=0;k<
module->iPorts.count();k++){
1241 PortItem *port =
module->iPorts.at(k);
1243 if(port->
inData == input){
1260 foreach (QGraphicsItem *it,
scene->items()) {
1265 foreach (
PortItem *oPort, mod->oPorts) {
1268 if(strPort == oData ){
1277 app->setOutputPortAvailable(oData, available);
1282 QString strPort = QString(
"%1").arg(source->getItemName());
1283 if(strPort == oData){
1284 source->setAvailable(available);
1295 foreach (QGraphicsItem *it,
scene->items()) {
1299 foreach (
PortItem *iPort, mod->iPorts) {
1301 if(strPort == iData){
1310 app->setInputPortAvailable(iData,available);
1316 QString strPort = QString(
"%1").arg(dest->getItemName());
1317 if(strPort == iData){
1318 dest->setAvailable(available);
1331 QGraphicsView(parent),
1334 m_rubberBandActive(false),
1335 mousepressed(false),
1338 setInteractive(
true);
1343 setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
1344 setDragMode(QGraphicsView::RubberBandDrag);
1345 setOptimizationFlags(QGraphicsView::DontSavePainterState |QGraphicsView::DontAdjustForAntialiasing);
1346 setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
1347 setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
1353 editingMode = editing;
1366 if(event->modifiers() == Qt::CTRL){
1367 if(event->angleDelta().y() > 0){
1375 QGraphicsView::wheelEvent(event);
1379 if(event->key() == Qt::Key_A && event->modifiers() == Qt::CTRL){
1380 foreach (QGraphicsItem *it, items()) {
1381 it->setSelected(
true);
1384 if(editingMode && event->key() == Qt::Key_Delete){
1386 QGraphicsView::keyPressEvent(event);
1389 if(editingMode && event->key() == Qt::Key_C && event->modifiers() == Qt::CTRL){
1390 QGraphicsView::keyPressEvent(event);
1394 if(editingMode && event->key() == Qt::Key_V && event->modifiers() == Qt::CTRL){
1395 QGraphicsView::keyPressEvent(event);
1399 QGraphicsView::keyPressEvent(event);
1405 QGraphicsView::mouseReleaseEvent(event);
1411 if(event->button()==Qt::LeftButton){
1412 if(event->modifiers()==Qt::ControlModifier){
1413 setDragMode(QGraphicsView::ScrollHandDrag);
1415 QGraphicsView::mousePressEvent(event);
1418 if(itemAt(event->pos()) ==
nullptr){
1419 setDragMode(QGraphicsView::RubberBandDrag);
1421 QGraphicsView::mousePressEvent(event);
1424 setDragMode(QGraphicsView::NoDrag);
1425 QGraphicsView::mousePressEvent(event);
1431 setDragMode(QGraphicsView::NoDrag);
1432 QGraphicsView::mousePressEvent(event);
1440 QGraphicsItem *it = itemAt(event->pos());
1441 QAction *copyAction =
nullptr;
1442 QAction *pasteAction =
nullptr;
1443 QAction *deleteAction =
nullptr;
1447 QAction *addSourcePortAction = menu.addAction(
"Add Source Port");
1448 QAction *addDestinationPortAction = menu.addAction(
"Add Destination Port");
1449 menu.addSeparator();
1450 pasteAction = menu.addAction(
"Paste");
1452 if(!copiedItems.isEmpty()){
1453 pasteAction->setEnabled(
true);
1455 pasteAction->setEnabled(
false);
1459 QAction *act = menu.exec(event->globalPos());
1460 if(act == addSourcePortAction){
1463 if(act == addDestinationPortAction){
1466 if(act == pasteAction){
1469 QGraphicsView::contextMenuEvent(event);
1474 copyAction = menu.addAction(
"Copy");
1475 pasteAction = menu.addAction(
"Paste");
1476 deleteAction = menu.addAction(
"Delete");
1478 menu.addSeparator();
1480 if(!copiedItems.isEmpty()){
1481 pasteAction->setEnabled(
true);
1483 pasteAction->setEnabled(
false);
1486 copyAction->setEnabled(
false);
1487 pasteAction->setEnabled(
false);
1499 foreach(QAction *act, bItem->getActions()){
1500 menu.addAction(act);
1505 menu.addAction(act);
1517 QGraphicsView::contextMenuEvent(event);
1521 QAction *act = menu.exec(event->globalPos());
1523 QGraphicsView::contextMenuEvent(event);
1527 if(act == deleteAction){
1528 if(it && it->type() == QGraphicsItem::UserType + (
int)
HandleItemType){
1534 if(act == copyAction){
1537 if(act == pasteAction){
1542 QGraphicsView::contextMenuEvent(event);
1548 QList <QGraphicsItem*>selectedItems;
1551 qDebug() <<
"Left Items in scene " << items().count();
1552 foreach (QGraphicsItem* item, items()) {
1556 item->parentItem() ==
nullptr){
1557 selectedItems.append(item);
1560 foreach (QGraphicsItem* item, selectedItems) {
1563 if(selectedItems.removeOne(item)){
1571 foreach (QGraphicsItem* item, selectedItems) {
1572 if(item->type() == QGraphicsItem::UserType + (
int)
ModuleItemType ||
1576 if(selectedItems.removeOne(item)){
1587 copiedItems.clear();
1588 QList <QGraphicsItem*>selectedItems;
1590 if(it && it->type() == QGraphicsItem::UserType + (
int)
HandleItemType){
1592 auto* arrow = (
Arrow*)it->parentItem();
1598 foreach (QGraphicsItem* item, items()) {
1599 if(item->isSelected() &&
1603 item->parentItem() ==
nullptr){
1604 selectedItems.append(item);
1621 foreach (QGraphicsItem* item, selectedItems) {
1624 if(selectedItems.removeOne(item)){
1633 foreach (QGraphicsItem* item, selectedItems) {
1634 if(item->type() == QGraphicsItem::UserType + (int)
ModuleItemType ||
1638 if(selectedItems.removeOne(item)){
1651 copiedItems.clear();
1653 foreach (QGraphicsItem* item, items()) {
1654 if(item->isSelected()){
1660 copiedItems.append(item);
1668 foreach (QGraphicsItem* item, items()) {
1669 item->setSelected(
false);
1672 bool firstAdded =
true;
1675 QMap <QGraphicsItem*,QGraphicsItem*> pastedItems;
1676 QList <QGraphicsItem*> itemsToRemove;
1677 foreach (QGraphicsItem* item, copiedItems) {
1691 startItem = (
ModuleItem *)startPort->parentItem();
1696 endItem = (
ModuleItem *)endPort->parentItem();
1699 for(
int i=0;i<itemsToRemove.count();i++){
1700 if(itemsToRemove.at(i) == startItem){
1701 copiedStartItem = (
BuilderItem*)pastedItems.value(startItem);
1703 if(itemsToRemove.at(i) == endItem){
1704 copiedEndItem = (
BuilderItem*)pastedItems.value(endItem);
1708 bool startContained =
false;
1709 bool endContained =
false;
1710 for(
int i=0;i<copiedItems.count();i++){
1711 if(copiedItems.at(i) == startItem){
1712 startContained =
true;
1714 if(copiedItems.at(i) == endItem){
1715 endContained =
true;
1721 if(startContained && endContained){
1728 if(!copiedStartItem){
1729 copiedStartItem = pasteItem(startItem,&offset,&firstAdded,pos);
1730 itemsToRemove.append(startItem);
1731 pastedItems.insert(startItem,copiedStartItem);
1734 int portIndex = ((
ModuleItem *)startItem)->oPorts.indexOf(startPort);
1736 startConnection = newPort;
1741 if(!copiedStartItem){
1742 copiedStartItem = pasteItem(startItem,&offset,&firstAdded,pos);
1743 itemsToRemove.append(startItem);
1744 pastedItems.insert(startItem,copiedStartItem);
1746 startConnection = copiedStartItem;
1753 copiedEndItem = pasteItem(endItem,&offset,&firstAdded,pos);
1754 itemsToRemove.append(endItem);
1755 pastedItems.insert(endItem,copiedEndItem);
1759 int portIndex = ((
ModuleItem *)endItem)->iPorts.indexOf(endPort);
1761 endConnection = newPort;
1766 copiedEndItem = pasteItem(endItem,&offset,&firstAdded,pos);
1767 itemsToRemove.append(endItem);
1768 pastedItems.insert(endItem,copiedEndItem);
1770 endConnection = copiedEndItem;
1775 if(startConnection && endConnection){
1776 builder->onAddNewConnection(startConnection,endConnection);
1779 itemsToRemove.append(item);
1788 while(!itemsToRemove.isEmpty()) {
1790 copiedItems.removeOne(itemsToRemove.takeLast());
1794 foreach (QGraphicsItem* item, copiedItems) {
1795 pasteItem(item,&offset,&firstAdded,pos);
1805BuilderItem *CustomView::pasteItem(QGraphicsItem *item, QSize *offset,
bool *firstAdded,QPoint pos)
1811 switch (item->type()) {
1815 ret = builder->onAddSourcePort(QString(
"%1_copy").arg(sPort->
getItemName().toLatin1().data()),
1816 QPointF(sPort->pos().x() + 20, sPort->pos().y() + 20));
1818 if(copiedItems.count() <= 1){
1819 ret = builder->onAddSourcePort(QString(
"%1_copy").arg(sPort->
getItemName().toLatin1().data()),
1820 QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1823 ret = builder->onAddSourcePort(QString(
"%1_copy").arg(sPort->
getItemName().toLatin1().data()),
1824 QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1825 *offset = QSize(mapToScene(pos).x() - sPort->pos().x(), mapToScene(pos).y() - sPort->pos().y());
1827 ret = builder->onAddSourcePort(QString(
"%1_copy").arg(sPort->
getItemName().toLatin1().data()),
1828 QPointF(offset->width() + sPort->pos().x(), offset->height() + sPort->pos().y()));
1837 ret = builder->onAddDestinationPort(QString(
"%1_copy").arg(dPort->
getItemName().toLatin1().data()),
1838 QPointF(dPort->pos().x() + 20, dPort->pos().y() + 20));
1840 if(copiedItems.count() <= 1){
1841 ret = builder->onAddDestinationPort(QString(
"%1_copy").arg(dPort->
getItemName().toLatin1().data()),
1842 QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1845 ret = builder->onAddDestinationPort(QString(
"%1_copy").arg(dPort->
getItemName().toLatin1().data()),
1846 QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1847 *offset = QSize(mapToScene(pos).x() - dPort->pos().x(), mapToScene(pos).y() - dPort->pos().y());
1849 ret = builder->onAddDestinationPort(QString(
"%1_copy").arg(dPort->
getItemName().toLatin1().data()),
1850 QPointF(offset->width() + dPort->pos().x(), offset->height() + dPort->pos().y()));
1859 ret = builder->onAddModule(mod->
getInnerModule(),QPointF(mod->pos().x() + 20, mod->pos().y() + 20));
1861 if(copiedItems.count() <= 1){
1862 ret = builder->onAddModule(mod->
getInnerModule(),QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1865 ret = builder->onAddModule(mod->
getInnerModule(),QPointF(mapToScene(pos).x(), mapToScene(pos).y()));
1866 *offset = QSize(mapToScene(pos).x() - mod->pos().x(), mapToScene(pos).y() - mod->pos().y());
1868 ret = builder->onAddModule(mod->
getInnerModule(),QPointF(offset->width() + mod->pos().x(), offset->height() + mod->pos().y()));
1880 *firstAdded =
false;
int SIGNAL(int pid, int signum)
void setModuleRunning(bool, int)
void setConnectionConnected(bool connected, QString from, QString to)
BuilderItem * startItem() const
BuilderItem * endItem() const
QRectF boundingRect() const override=0
void snapToGrid(bool snap)
ItemSignalHandler * signalHandler()
void setActions(QList< QAction * >)
int type() const override=0
void snapToGrid(bool snap)
void setSelectedConnections(QList< int >selectedIds)
QList< QAction * > modulesAction
void load(bool refresh=false)
void addModulesAction(QAction *)
BuilderItem * addConnection(void *startItem, void *endItem, int connectionId)
BuilderWindow(Application *app, Manager *lazyManager, SafeManager *safeManager, bool editingMode=false, QWidget *parent=0)
SafeManager * safeManager
QList< QAction * > connectionsAction
QRectF itemsBoundingRect()
QList< int > usedModulesId
void setConnectionSelected(QList< int >)
void setFileName(QString filename)
void setInputPortAvailable(QString, bool)
ApplicationItem * addApplication(Application *app, int *connectionsId=0)
void setConnectionConnected(bool, QString from, QString to)
void addAction(QAction *)
BuilderItem * addSourcePort(QString name, bool editOnStart=false)
void setAppName(QString appName)
void setModuleRunning(bool, int id)
BuilderItem * addModule(Module *module, int moduleId)
BuilderItem * addDestinantionPort(QString name, bool editOnStart=false)
void setOutputPortAvailable(QString, bool)
QList< QAction * > builderActions
PropertiesTable * propertiesTab
void addConnectionsAction(QAction *)
void setModuleSelected(QList< int >)
void setSelectedModules(QList< int >selectedIds)
void wheelEvent(QWheelEvent *event) override
void pasteSelectedItems(QPoint pos)
void keyPressEvent(QKeyEvent *event) override
void mouseReleaseEvent(QMouseEvent *event) override
CustomView(BuilderWindow *builder, QGraphicsView *parent=0)
void addDestinationPort(QString, QPointF pos)
void addSourcePort(QString, QPointF pos)
void setEditingMode(bool editing)
void contextMenuEvent(QContextMenuEvent *event) override
void mousePressEvent(QMouseEvent *event) override
void deleteSelectedItems(QGraphicsItem *it=NULL)
Module * getInnerModule()
InputData * getInputData()
void setAvailable(PortStatus)
OutputData * getOutputData()
void addModules(ModuleItem *)
void showApplicationTab(Application *application)
void showModuleTab(ModuleItem *it)
Class ApplicationInterface.
void setName(const char *szName)
const char * getXmlFile()
const char * getBasePrefix()
void setXmlFile(const char *szFilename)
GraphicModel & getModelBase()
void setTo(const char *szTo)
void setFromExternal(bool ext)
void setCarrier(const char *szCr)
GraphicModel & getModelBase()
void setToExternal(bool ext)
void setPersistent(bool per)
void setCorOutputData(OutputData *out)
void setModelBase(GraphicModel &mdl)
void setFrom(const char *szFrom)
void setModel(GraphicModel *mdl)
void setCorInputData(InputData *in)
std::vector< GyPoint > points
Application * addIApplicationToApplication(Application *application, ApplicationInterface &app, bool isNew=false)
const ModulePContainer & getModules(Application *parent=nullptr)
const ModulePContainer & getSelModules()
bool setModulePrefix(Module *module, const char *szPrefix, bool updateBasePrefix=true)
bool addResource(GenericResource *resource)
Connection & addConnectionToApplication(Application *application, Connection &cnn)
Application * getApplication()
bool addModule(Module *module)
const ApplicaitonPContainer & getApplications(Application *parent=nullptr)
const CnnContainer & getConnections(Application *parent=nullptr)
const std::string getUniqueAppID(Application *parent, const char *szAppName)
const ResourcePContainer & getResources(Application *parent=nullptr)
bool addApplication(Application *application, char **szAppName_=nullptr, bool modifyName=false)
ExecutablePContainer & getExecutables()
bool loadApplication(const char *szAppName)
bool saveApplication(const char *szAppName, const char *fileName=nullptr)
KnowledgeBase * getKnowledgeBase()
GraphicModel & getModelBase()
const char * getCarrier()
@ DestinationPortItemType
std::vector< Application * >::iterator ApplicationPIterator
std::vector< Executable * >::iterator ExecutablePIterator
std::vector< Connection >::iterator CnnIterator
std::vector< Executable * > ExecutablePContainer
std::vector< Module * > ModulePContainer
std::vector< GenericResource * > ResourcePContainer
std::vector< Application * > ApplicaitonPContainer
std::vector< Connection > CnnContainer
std::vector< Module * >::iterator ModulePIterator