1 #include <cpBaseQtApplication/Connection.h>
\r
2 #include <cpBaseQtApplication/Port.h>
\r
5 #include <QGraphicsScene>
\r
9 // -------------------------------------------------------------------------
\r
10 cpBaseQtApplication::Connection::
\r
11 Connection( QGraphicsItem* parent, QGraphicsScene* scene )
\r
12 : Superclass( parent, scene )
\r
14 this->setPen( QPen( Qt::black, 2 ) );
\r
15 this->setBrush( Qt::NoBrush );
\r
16 this->setZValue( -1 );
\r
17 this->m_Port1 = NULL;
\r
18 this->m_Port2 = NULL;
\r
19 this->setFlag( QGraphicsItem::ItemIsSelectable );
\r
22 // -------------------------------------------------------------------------
\r
23 cpBaseQtApplication::Connection::
\r
26 if( this->m_Port1 != NULL )
\r
27 this->m_Port1->connections( ).
\r
28 remove( this->m_Port1->connections( ).indexOf( this ) );
\r
30 if( this->m_Port2 != NULL )
\r
31 this->m_Port2->setConnection( NULL );
\r
34 // -------------------------------------------------------------------------
\r
35 void cpBaseQtApplication::Connection::
\r
36 setPos1( const QPointF& p )
\r
41 // -------------------------------------------------------------------------
\r
42 void cpBaseQtApplication::Connection::
\r
43 setPos2( const QPointF& p )
\r
48 // -------------------------------------------------------------------------
\r
49 void cpBaseQtApplication::Connection::
\r
50 setPort1( OutputPort* p )
\r
54 p->connections( ).append( this );
\r
60 // -------------------------------------------------------------------------
\r
61 void cpBaseQtApplication::Connection::
\r
62 setPort2( InputPort* p )
\r
66 p->setConnection( this );
\r
72 // -------------------------------------------------------------------------
\r
73 void cpBaseQtApplication::Connection::
\r
74 updatePosFromPorts( )
\r
76 if( this->m_Port1 != NULL )
\r
78 this->m_Port1->scenePos( ) +
\r
79 QPointF( this->m_Port1->radius( ), this->m_Port1->radius( ) );
\r
80 if( this->m_Port2 != NULL )
\r
82 this->m_Port2->scenePos( ) +
\r
83 QPointF( this->m_Port2->radius( ), this->m_Port2->radius( ) );
\r
86 // -------------------------------------------------------------------------
\r
87 void cpBaseQtApplication::Connection::
\r
91 p.moveTo( this->m_Pos1 );
\r
93 qreal dx = this->m_Pos2.x( ) - this->m_Pos1.x( );
\r
94 qreal dy = this->m_Pos2.y( ) - this->m_Pos1.y( );
\r
95 QPointF c1( this->m_Pos1.x( ) + dx * 0.25, this->m_Pos1.y( ) + dy * 0.1 );
\r
96 QPointF c2( this->m_Pos1.x( ) + dx * 0.75, this->m_Pos1.y( ) + dy * 0.9 );
\r
97 p.cubicTo( c1, c2, this->m_Pos2 );
\r
102 // -------------------------------------------------------------------------
\r
103 cpBaseQtApplication::OutputPort* cpBaseQtApplication::Connection::
\r
106 return( this->m_Port1 );
\r
109 // -------------------------------------------------------------------------
\r
110 cpBaseQtApplication::InputPort* cpBaseQtApplication::Connection::
\r
113 return( this->m_Port2 );
\r
116 // -------------------------------------------------------------------------
\r
117 void cpBaseQtApplication::Connection::
\r
120 const QStyleOptionGraphicsItem* option,
\r
124 Q_UNUSED( option );
\r
125 Q_UNUSED( widget );
\r
127 if( this->isSelected( ) )
\r
128 painter->setPen( QPen( Qt::red, 5 ) );
\r
130 painter->setPen( QPen( Qt::black, 2 ) );
\r
131 this->setBrush( Qt::NoBrush );
\r
132 painter->drawPath( this->path( ) );
\r