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 if( p->connection( ) == NULL )
\r
68 p->setConnection( this );
\r
76 // -------------------------------------------------------------------------
\r
77 void cpBaseQtApplication::Connection::
\r
78 updatePosFromPorts( )
\r
80 if( this->m_Port1 != NULL )
\r
82 this->m_Port1->scenePos( ) +
\r
83 QPointF( this->m_Port1->radius( ), this->m_Port1->radius( ) );
\r
84 if( this->m_Port2 != NULL )
\r
86 this->m_Port2->scenePos( ) +
\r
87 QPointF( this->m_Port2->radius( ), this->m_Port2->radius( ) );
\r
90 // -------------------------------------------------------------------------
\r
91 void cpBaseQtApplication::Connection::
\r
95 p.moveTo( this->m_Pos1 );
\r
97 qreal dx = this->m_Pos2.x( ) - this->m_Pos1.x( );
\r
98 qreal dy = this->m_Pos2.y( ) - this->m_Pos1.y( );
\r
99 QPointF c1( this->m_Pos1.x( ) + dx * 0.25, this->m_Pos1.y( ) + dy * 0.1 );
\r
100 QPointF c2( this->m_Pos1.x( ) + dx * 0.75, this->m_Pos1.y( ) + dy * 0.9 );
\r
101 p.cubicTo( c1, c2, this->m_Pos2 );
\r
103 this->setPath( p );
\r
106 // -------------------------------------------------------------------------
\r
107 cpBaseQtApplication::OutputPort* cpBaseQtApplication::Connection::
\r
110 return( this->m_Port1 );
\r
113 // -------------------------------------------------------------------------
\r
114 cpBaseQtApplication::InputPort* cpBaseQtApplication::Connection::
\r
117 return( this->m_Port2 );
\r
120 // -------------------------------------------------------------------------
\r
121 void cpBaseQtApplication::Connection::
\r
124 const QStyleOptionGraphicsItem* option,
\r
128 Q_UNUSED( option );
\r
129 Q_UNUSED( widget );
\r
131 if( this->isSelected( ) )
\r
132 painter->setPen( QPen( Qt::red, 5 ) );
\r
134 painter->setPen( QPen( Qt::black, 2 ) );
\r
135 this->setBrush( Qt::NoBrush );
\r
136 painter->drawPath( this->path( ) );
\r