YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
moduleitem.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: LGPL-2.1-or-later
4 */
5
6#include "moduleitem.h"
7#include <QGraphicsDropShadowEffect>
8#include <QDebug>
9#include <QCursor>
10#include <QGraphicsScene>
11#include <cmath>
12
13#define TRIANGLEH (double)((double)PORT_LINE_WIDTH * (double)sqrt(3.0) ) / 2.0
14
15
16ModuleItem::ModuleItem(Module *module, int moduleId, bool isInApp, bool editingMode, Manager *manager, BuilderItem * parent) : BuilderItem(parent)
17{
20 this->module = module;
21 this->moduleId = moduleId;
22 this->nestedInApp = isInApp;
23 this->editingMode = editingMode;
24 this->manager = manager;
25 running = false;
26 externalSelection = false;
27 startingPoint = QPointF(10,10);
28 itemName = QString("%1").arg(module->getName());
29
30// for(int i=0; i<module->inputCount();i++){
31
32// inputPorts << QString("%1").arg(module->getInputAt(i).getName());
33// }
34// for(int i=0; i<module->outputCount();i++){
35// OutputData out = module->getOutputAt(i);
36// outputPorts << QString("%1").arg(out.getName());
37// }
38
39// if(module->getModelBase().points.size()>0){
40// startingPoint = QPointF(module->getModelBase().points[0].x,module->getModelBase().points[0].y);
41// }
42
43
44
45 init();
46
47
48}
49
51{
52 return moduleId;
53}
54
55
56void ModuleItem::setRunning(bool running)
57{
58 this->running = running;
59 update();
60}
61
62void ModuleItem::init()
63{
64
65 setFlag(ItemIsMovable,!nestedInApp);
66 setFlag(ItemIsSelectable,true);
67 setFlag(ItemSendsGeometryChanges,!nestedInApp);
68
69 pressed = false;
70 moved = false;
71
72 setToolTip(itemName);
73
74
75 QFontMetrics fontMetric(font);
76#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
77 int textWidth = fontMetric.horizontalAdvance(itemName);
78#else
79 int textWidth = fontMetric.width(itemName);
80#endif
81 int mod = textWidth % 16;
82 textWidth+=mod;
83
84 prepareGeometryChange();
85 mainRect = QRectF(-((2*PORT_TEXT_WIDTH) + textWidth)/2,
87 ((2*PORT_TEXT_WIDTH) + textWidth),
89
90 boundingR = QRectF(mainRect);
91
92 if(module->inputCount() > 0){
93
94 for(int i=0;i<module->inputCount();i++){
95 iPorts.append(new PortItem(&module->getInputAt(i),this));
96 }
97 prepareGeometryChange();
98 boundingR.setX((boundingR.x() - (PORT_LINE_WIDTH + TRIANGLEH / 2.0) ));
99// boundingR.setWidth(boundingR.width() + PORT_LINE_WIDTH + TRIANGLEH );
100
101
102
103 if(module->inputCount() > 1){
104 int newH = (module->inputCount() * 2 * PORT_LINE_WIDTH) ;
105 if(mainRect.height() <= newH){
106
107 mainRect.setY(-newH/2);
108 mainRect.setHeight(newH);
109 boundingR.setY(mainRect.y());
110 boundingR.setHeight(mainRect.height());
111 }
112 }
113
114 }
115
116 if(module->outputCount() > 0){
117 for(int i=0;i<module->outputCount();i++){
118 oPorts.append(new PortItem(&module->getOutputAt(i),this));
119 }
120 prepareGeometryChange();
121 boundingR.setWidth(boundingR.width() + (PORT_LINE_WIDTH +TRIANGLEH/2.0) );
122
123 if(module->outputCount() > 1){
124 int newH = (module->outputCount() * 2 * PORT_LINE_WIDTH) ;
125 if(mainRect.height() <= newH){
126
127 mainRect.setY(-newH/2);
128 mainRect.setHeight(newH);
129 boundingR.setY(mainRect.y());
130 boundingR.setHeight(mainRect.height());
131 }
132 }
133 }
134
135 qDebug() << mainRect;
136
137
138 if(!nestedInApp){
139 auto* effect = new QGraphicsDropShadowEffect();
140 effect->setColor(QColor(80,80,80,80));
141 effect->setBlurRadius(5);
142 setGraphicsEffect(effect);
143 }
144
145 allowInputs = true;
146 allowOutputs = true;
147}
148
150{
151 hide();
152 delete sigHandler;
153 foreach (PortItem *port, iPorts) {
154 port->removeArrows();
155 //scene()->removeItem(port);
156 delete port;
157 }
158 foreach (PortItem *port, oPorts) {
159 port->removeArrows();
160 //scene()->removeItem(port);
161 delete port;
162 }
163
164 //scene()->removeItem(this);
165
166 if(manager && editingMode){
167 Application* mainApplication = manager->getKnowledgeBase()->getApplication();
168 manager->getKnowledgeBase()->removeIModuleFromApplication(mainApplication,module->getLabel());
169 module = nullptr;
170 }
171
172}
173
174
175
177{
178 return (int)(QGraphicsItem::UserType + (int)itemType);
179}
180void ModuleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
181{
182 qreal partialH ;
183 //painter->fillRect(boundingRect(),QBrush(Qt::red));
184
185 //Input Ports
186
187
188 if(module->inputCount() <= 1){
189 partialH = (qreal)mainRect.height()/(qreal)((qreal)module->inputCount() + 1.0);
190 for(int i=0; i < module->inputCount(); i++){
191 painter->setPen(QPen(QBrush(QColor(Qt::black)),BORDERWIDTH));
192 painter->drawLine(QPointF(mainRect.x() - PORT_LINE_WIDTH, mainRect.y() + ((i+1) * partialH )),
193 QPointF(mainRect.x() , mainRect.y() + ((i+1) * partialH )));
194 PortItem *it = iPorts.at(i);
195 it->setPos(mainRect.x() - PORT_LINE_WIDTH,mainRect.y() + ((i+1) * partialH ));
196 }
197 }else{
198 partialH = PORT_LINE_WIDTH;
199 for(int i=0; i < module->inputCount(); i++){
200 painter->setPen(QPen(QBrush(QColor(Qt::black)),BORDERWIDTH));
201 painter->drawLine(QPointF(mainRect.x() - PORT_LINE_WIDTH, mainRect.y() + (partialH )),
202 QPointF(mainRect.x() , mainRect.y() + (partialH )));
203 PortItem *it = iPorts.at(i);
204 it->setPos(mainRect.x() - PORT_LINE_WIDTH,mainRect.y() + (partialH ));
205 partialH += 2 * PORT_LINE_WIDTH;
206 }
207 }
208
209 //Output Ports ?????????
210 if(module->outputCount() <= 1){
211 partialH = (qreal)mainRect.height()/(qreal)((qreal)module->outputCount() + 1.0);
212 for(int i=0; i < module->outputCount(); i++){
213 PortItem *it = oPorts.at(i);
214 painter->setPen(QPen(QBrush(QColor(Qt::black)),BORDERWIDTH));
215
216 if(it->outData->getPortType() == SERVICE_PORT){
217 painter->drawLine(QPointF(mainRect.x() + mainRect.width() , mainRect.y() + ((i+1) * partialH )),
218 QPointF(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH/2 - BORDERWIDTH/2 , mainRect.y() + ((i+1) * partialH )));
219 }else{
220 painter->drawLine(QPointF(mainRect.x() + mainRect.width() , mainRect.y() + ((i+1) * partialH )),
221 QPointF(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH , mainRect.y() + ((i+1) * partialH )));
222 }
223
224 it->setPos(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH,mainRect.y() + ((i+1) * partialH ));
225 }
226 }else{
227 partialH = PORT_LINE_WIDTH;
228 for(int i=0; i < module->outputCount(); i++){
229 PortItem *it = oPorts.at(i);
230
231 painter->setPen(QPen(QBrush(QColor(Qt::black)),BORDERWIDTH));
232
233 if(it->outData->getPortType() == SERVICE_PORT){
234 painter->drawLine(QPointF(mainRect.x() + mainRect.width() , mainRect.y() + (partialH )),
235 QPointF(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH/2 - BORDERWIDTH/2 , mainRect.y() + (partialH )));
236 }else{
237 painter->drawLine(QPointF(mainRect.x() + mainRect.width() , mainRect.y() + (partialH )),
238 QPointF(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH , mainRect.y() + (partialH )));
239 }
240
241 it->setPos(mainRect.x() + mainRect.width() + PORT_LINE_WIDTH,mainRect.y() + (partialH ));
242 partialH += 2 * PORT_LINE_WIDTH;
243 }
244 }
245
246
247
248
249 if(!nestedInApp){
250 if(!running){
251 painter->setPen(QPen(QBrush(QColor("#BF0303")),BORDERWIDTH ));
252 }else{
253 painter->setPen(QPen(QBrush(QColor("#00E400")),BORDERWIDTH ));
254 }
255 }else{
256 if(!running){
257 painter->setPen(QPen(QBrush(QColor("#BF0303")),BORDERWIDTH, Qt::DashLine ));
258 }else{
259 painter->setPen(QPen(QBrush(QColor("#00E400")),BORDERWIDTH , Qt::DashLine));
260 }
261 }
262 QPainterPath path;
263 path.addRoundedRect( mainRect, 5.0, 5.0 );
264 if (isSelected()) {\
265 painter->setBrush(QBrush(QColor(220,220,220)));
266 }else{
267 painter->setBrush(QBrush(QColor(Qt::white)));
268 }
269
270
271 painter->drawPath(path);
272
273
274
275 //TEXT
276 painter->setPen(QPen(QBrush(QColor(Qt::black)),1));
277 painter->drawText(mainRect,Qt::AlignCenter,itemName);
278
279 //painter->fillRect(-4,-4,8,8,QBrush(Qt::yellow));
280
281
282}
283
284
286{
287 QRectF br = QRectF(boundingR.x() - BORDERWIDTH,
288 boundingR.y() - BORDERWIDTH ,
289 boundingR.width() + (2*BORDERWIDTH),
290 boundingR.height() + (2*BORDERWIDTH));
291 //qDebug() << br;
292 return br;
293}
294
295
296
297
298void ModuleItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
299{
300 moved = true;
301// if(pressed){
302// foreach (PortItem *port, iPorts) {
303// port->updateConnections();
304// }
305// foreach (PortItem *port, oPorts) {
306// port->updateConnections();
307// }
308// }
309 QGraphicsItem::mouseMoveEvent(event);
310}
311
312void ModuleItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
313{
314 pressed = true;
315 setZValue(zValue() + 10);
316 //sigHandler->moduleSelected(this);
317 if(nestedInApp && isSelected()){
318 parentItem()->setSelected(true);
319 }
320 QGraphicsItem::mousePressEvent(event);
321}
322
324{
325 QPointF startIngPoint;
326
327 return startIngPoint;
328}
329
331{
332 GraphicModel modBase;
333 GyPoint p;
334 p.x = pos().x();
335 p.y = pos().y();
336 modBase.points.push_back(p);
337 module->setModelBase(modBase);
338}
339
340void ModuleItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
341{
342
343 if(moved && editingMode && !nestedInApp){
344 //updateGraphicModel();
345 emit signalHandler()->modified();
346 emit signalHandler()->moved();
347 }
348 pressed = false;
349 moved = false;
350 setZValue(zValue() - 10);
351
352 if(nestedInApp && isSelected()){
353 parentItem()->setSelected(true);
354 }
355
356 QGraphicsItem::mouseReleaseEvent(event);
357}
358
360{
361 externalSelection = true;
362 setSelected(selected);
363}
364
365QVariant ModuleItem::itemChange(GraphicsItemChange change, const QVariant &value)
366{
367 if (change == QGraphicsItem::ItemPositionChange) {
368 foreach (PortItem *port, iPorts) {
369 port->updateConnections();
370 }
371 foreach (PortItem *port, oPorts) {
372 port->updateConnections();
373 }
374 if(snap && !nestedInApp){
375 QPointF newPos = value.toPointF();
376 QPointF closestPoint = computeTopLeftGridPoint(newPos);
377 return closestPoint+=offset;
378 }
379 }
380 if (change == QGraphicsItem::ItemSelectedHasChanged) {
381 //bool selected = value.toBool();
382 if(!externalSelection){
383 emit sigHandler->moduleSelected(this);
384 }
385 externalSelection = false;
386 }
387
388 return value;
389}
390
391void ModuleItem::portPressed(PortItem *port,QGraphicsSceneMouseEvent *e)
392{
393 pressed = true;
394}
395
397{
398 return module;
399}
400
401void ModuleItem::portReleased(PortItem *port,QGraphicsSceneMouseEvent *e)
402{
403// if(!moved){
404// sigHandler->newConnection(mapFromItem(port,port->connectionPoint()),this);
405// }
406// pressed = false;
407// moved = false;
408 qDebug() << "MODULE RELEASED";
409}
410
411void ModuleItem::portMoved(PortItem *port,QGraphicsSceneMouseEvent *e)
412{
413// if(!moved){
414// sigHandler->newConnection(mapFromItem(port,port->connectionPoint()),this);
415// }
416// pressed = false;
417// moved = false;
418}
419
420
421
422/********************************************************************************************************************/
423/********************************************************************************************************************/
424/********************************************************************************************************************/
425/********************************************************************************************************************/
426/********************************************************************************************************************/
427/********************************************************************************************************************/
428
429//PortItem::PortItem(QString portName, int type, BuilderItem *parent) : BuilderItem(parent)
430//{
431// triangleH = (PORT_LINE_WIDTH/2)* sqrt(3.0);
432// portAvailable = unknown;
433
434// polygon << QPointF(-triangleH/2, - PORT_LINE_WIDTH/2) << QPointF(triangleH/2, 0) << QPointF(-triangleH/2, PORT_LINE_WIDTH/2);
435
436// setAcceptHoverEvents(true);
437// setFlag(ItemSendsGeometryChanges,true);
438// setFlag(ItemIsSelectable,true);
439
440// boundingR = QRectF(-triangleH/2, - PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
441
442
443// this->itemName = portName;
444// setToolTip(itemName);
445// this->parent = parent;
446// this->nestedInApp = parent->nestedInApp;
447// portType = type;
448
449// sigHandler = NULL;
450// pressed = false;
451// moved = false;
452// hovered =false;
453// if(type == INPUT_PORT){
454// allowInputs = true;
455// allowOutputs = false;
456// }
457// if(type == OUTPUT_PORT){
458// allowInputs = false;
459// allowOutputs = true;
460// }
461
462// itemType = ModulePortItemType;
463//}
465{
466 triangleH = (PORT_LINE_WIDTH/2)* sqrt(3.0);
467 outData = nullptr;
468 inData = node;
469 portAvailable = unknown;
470
471 setAcceptHoverEvents(true);
472 setFlag(ItemSendsGeometryChanges,true);
473 setFlag(ItemIsSelectable,true);
474
475 switch (node->getPortType()) {
476 case STREAM_PORT:
477 polygon << QPointF(-triangleH/2, -PORT_LINE_WIDTH/2) << QPointF(triangleH/2, 0) << QPointF(-triangleH/2, PORT_LINE_WIDTH/2);
478 boundingR = QRectF(-triangleH/2, -PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
479 break;
480 case EVENT_PORT:
481 polygon << QPointF(-triangleH/2, -PORT_LINE_WIDTH/2) << QPointF(0,0) << QPointF(-triangleH/2, PORT_LINE_WIDTH/2) <<
482 QPointF(triangleH/2, PORT_LINE_WIDTH/2) << QPointF(triangleH/2, -PORT_LINE_WIDTH/2);
483 boundingR = QRectF(-triangleH/2, -PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
484 break;
485 case SERVICE_PORT:
486 boundingR = QRectF(-triangleH/2, -PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
487 break;
488 default:
489 break;
490 }
491
492 this->itemName = node->getPort();
493 setToolTip(itemName);
494 this->parent = parent;
495 this->nestedInApp = parent->nestedInApp;
496 portType = INPUT_PORT;
497
498 sigHandler = nullptr;
499 pressed = false;
500 moved = false;
501 hovered =false;
502 if(portType == INPUT_PORT){
503 allowInputs = true;
504 allowOutputs = false;
505 }
506 if(portType == OUTPUT_PORT){
507 allowInputs = false;
508 allowOutputs = true;
509 }
511}
512
514{
515 triangleH = (PORT_LINE_WIDTH/2)* sqrt(3.0);
516 outData = node;
517 inData = nullptr;
518 portAvailable = unknown;
519 setAcceptHoverEvents(true);
520 setFlag(ItemSendsGeometryChanges,true);
521 setFlag(ItemIsSelectable,true);
522
523 switch (node->getPortType()) {
524 case STREAM_PORT:
525 polygon << QPointF(-triangleH/2, - PORT_LINE_WIDTH/2) << QPointF(triangleH/2, 0) << QPointF(-triangleH/2, PORT_LINE_WIDTH/2);
526 boundingR = QRectF(-triangleH/2, - PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
527 break;
528 case EVENT_PORT:
529 polygon << QPointF(-triangleH/2, -PORT_LINE_WIDTH/2) << QPointF(-triangleH/2, PORT_LINE_WIDTH/2) <<
530 QPointF(0, PORT_LINE_WIDTH/2) << QPointF(triangleH/2, 0) << QPointF(0, -PORT_LINE_WIDTH/2);
531 boundingR = QRectF(-triangleH/2, -PORT_LINE_WIDTH/2,triangleH,PORT_LINE_WIDTH);
532 break;
533 case SERVICE_PORT:
535 break;
536 default:
537 break;
538 }
539
540 this->itemName = node->getPort();
541 setToolTip(itemName);
542 this->parent = parent;
543 this->nestedInApp = parent->nestedInApp;
544 portType = OUTPUT_PORT;
545
546 sigHandler = nullptr;
547 pressed = false;
548 moved = false;
549 hovered =false;
550 if(portType == INPUT_PORT){
551 allowInputs = true;
552 allowOutputs = false;
553 }
554 if(portType == OUTPUT_PORT){
555 allowInputs = false;
556 allowOutputs = true;
557 }
559}
560
561void PortItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
562{
563 painter->setPen(QPen(QBrush(QColor(Qt::black)),BORDERWIDTH/2));
564
565 switch (portAvailable) {
566 case unavailable:
567 if(!hovered){
568 painter->setBrush(QBrush(QColor("#F74D4D")));
569 }else{
570 painter->setBrush(QBrush(QColor("#BF0303")));
571 }
572 break;
573 case availbale:
574 if(!hovered){
575 painter->setBrush(QBrush(QColor("#1CE61C")));
576 }else{
577 painter->setBrush(QBrush(QColor("#008C00")));
578 }
579 break;
580 case unknown:
581 if(!hovered){
582 painter->setBrush(QBrush(QColor("#8C8c8c")));
583 }else{
584 painter->setBrush(QBrush(QColor("#4B4B4B")));
585 }
586 break;
587 default:
588 break;
589 }
590
591 if(portType == INPUT_PORT && inData->getPortType() == SERVICE_PORT){
592 painter->drawEllipse(QPoint(0,0),(int)PORT_LINE_WIDTH/2,(int)PORT_LINE_WIDTH/2);
593 } if(portType == OUTPUT_PORT && outData->getPortType() == SERVICE_PORT){
594 painter->drawArc(boundingR,-90 * 16, -180 * 16);
595 }else{
596 painter->drawPolygon(polygon);
597 }
598}
599
600void PortItem::hoverEnterEvent(QGraphicsSceneHoverEvent * event)
601{
602 hovered = true;
603 update();
604
605}
606
607void PortItem::hoverLeaveEvent(QGraphicsSceneHoverEvent * event)
608{
609 hovered = false;
610 update();
611}
612
613int PortItem::type() const
614{
615 return UserType + (int)itemType;
616}
617
618void PortItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
619{
620 qDebug() << "PORT PRESSED";
621 //parent->portPressed(this,event);
622 pressed = true;
623 QGraphicsItem::mousePressEvent(event);
624}
625
626void PortItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
627{
628 qDebug() << "PORT RELEASED";
629 //parent->portReleased(this,event);
630 if(!moved && event->modifiers() == Qt::NoModifier && event->button() == Qt::LeftButton){
631 if(portType == OUTPUT_PORT){
633 }else{
635 }
636 }
637 pressed = false;
638 moved = false;
639 //QGraphicsItem::mouseReleaseEvent(event);
640}
641
642void PortItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
643{
644 qDebug() << "PORT MOVED";
645 //parent->portReleased(this,event);
646 moved = true;
647 QGraphicsItem::mouseMoveEvent(event);
648}
649
651{
652 switch (portType) {
653 case INPUT_PORT:
654
655 switch (inData->getPortType()) {
656 case SERVICE_PORT:
657 return {-PORT_LINE_WIDTH/2,0};
658 break;
659 case EVENT_PORT:
660 return {0,0};
661 break;
662 default:
663 return {-triangleH/2, - 0};
664 }
665
666 case OUTPUT_PORT:
667 switch (outData->getPortType()) {
668 case SERVICE_PORT:
669 return {-PORT_LINE_WIDTH/2,0};
670 break;
671 default:
672 return {triangleH/2, - 0};
673 }
674
675 }
676 return {0,0};
677}
678
680{
681 return portType;
682}
683
684
686{
687 QRectF br = QRectF(boundingR.x() - BORDERWIDTH,
688 boundingR.y() - BORDERWIDTH ,
689 boundingR.width() + (2*BORDERWIDTH),
690 boundingR.height() + (2*BORDERWIDTH));
691 return br;
692}
693
695{
696 return inData;
697}
698
703
704
705QVariant PortItem::itemChange(GraphicsItemChange change, const QVariant &value)
706{
707// if (change == QGraphicsItem::ItemPositionChange) {
708// foreach (Arrow *arrow, arrows) {
709// arrow->updatePosition();
710// }
716// }
717
718 return value;
719}
720
722{
723 portAvailable = available;
724 update();
725}
ItemSignalHandler * sigHandler
Definition builderitem.h:90
QPointF computeTopLeftGridPoint(const QPointF &pointP)
QString itemName
Definition builderitem.h:75
QPointF offset
Definition builderitem.h:80
bool allowInputs
Definition builderitem.h:85
bool allowOutputs
Definition builderitem.h:86
friend class PortItem
Definition builderitem.h:30
void removeArrows()
bool nestedInApp
Definition builderitem.h:88
ItemSignalHandler * signalHandler()
QRectF mainRect
Definition builderitem.h:77
QRectF boundingR
Definition builderitem.h:78
void updateConnections()
QPointF startingPoint
Definition builderitem.h:94
ItemType itemType
Definition builderitem.h:74
void moduleSelected(QGraphicsItem *it)
void newConnectionRequested(QPointF, QGraphicsItem *it)
void newConnectionAdded(QPointF, QGraphicsItem *it)
ModuleItem(Module *module, int moduleId, bool nestedInApp=false, bool editingMode=false, Manager *manager=NULL, BuilderItem *parent=0)
void portReleased(PortItem *port, QGraphicsSceneMouseEvent *e)
void setRunning(bool)
void portMoved(PortItem *port, QGraphicsSceneMouseEvent *e)
int type() const override
friend class PortItem
Definition moduleitem.h:33
void setModuleSelected(bool selected)
void updateGraphicModel()
QList< PortItem * > oPorts
Definition moduleitem.h:52
QRectF boundingRect() const override
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
void mousePressEvent(QGraphicsSceneMouseEvent *e) override
void portPressed(PortItem *port, QGraphicsSceneMouseEvent *e)
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override
void mouseReleaseEvent(QGraphicsSceneMouseEvent *e) override
QPointF connectionPoint() override
QList< PortItem * > iPorts
Definition moduleitem.h:51
Module * getInnerModule()
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0) override
QPointF connectionPoint() override
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0) override
OutputData * outData
Definition moduleitem.h:104
InputData * getInputData()
QRectF boundingRect() const override
int getPortType()
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
InputData * inData
Definition moduleitem.h:105
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
void setAvailable(PortStatus)
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
int type() const override
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
@ unavailable
Definition moduleitem.h:92
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
OutputData * getOutputData()
Class Application.
std::vector< GyPoint > points
Definition node.h:29
Class InputData.
Definition data.h:21
const char * getPort()
Definition data.h:36
NodeType getPortType()
Definition data.h:46
bool removeIModuleFromApplication(Application *application, const char *szTag)
Definition kbase.cpp:779
Application * getApplication()
Definition kbase.h:84
Class Manager.
Definition manager.h:20
KnowledgeBase * getKnowledgeBase()
Definition manager.h:103
Class Module.
Definition module.h:99
const char * getName()
Definition module.h:128
const char * getLabel()
Definition node.h:93
NodeType getPortType()
Definition data.h:89
const char * getPort()
Definition data.h:83
#define PORT_LINE_WIDTH
Definition commons.h:11
#define PORT_TEXT_WIDTH
Definition commons.h:10
#define INPUT_PORT
Definition commons.h:14
@ ModulePortItemType
Definition commons.h:17
@ ModuleItemType
Definition commons.h:17
#define BORDERWIDTH
Definition commons.h:9
#define OUTPUT_PORT
Definition commons.h:15
#define TRIANGLEH