1 #ifndef __CPBASEQTAPPLICATION__PORT__H__
\r
2 #define __CPBASEQTAPPLICATION__PORT__H__
\r
4 #include <cpBaseQtApplication_Export.h>
\r
5 #include <QGraphicsPathItem>
\r
7 namespace cpBaseQtApplication
\r
14 class cpBaseQtApplication_EXPORT Port
\r
15 : public QGraphicsPathItem
\r
19 typedef QGraphicsPathItem Superclass;
\r
21 enum { Type = QGraphicsItem::UserType + 1 };
\r
24 Port( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
27 void setBlock( Block* b );
\r
28 inline Block* block( ) const
\r
29 { return( this->m_Block ); }
\r
31 virtual void setName( const QString& n );
\r
32 virtual void setExtendedName( const QString& n );
\r
33 inline QString name( ) const
\r
34 { return( this->m_Label->toPlainText( ) ); }
\r
35 inline QString extendedName( ) const
\r
36 { return( this->m_ExtendedLabel->toPlainText( ) ); }
\r
38 inline int radius( ) const
\r
39 { return( this->m_Radius ); }
\r
41 inline bool isExtended( ) const
\r
42 { return( this->m_IsExtended ); }
\r
43 virtual void setExtend( bool extend );
\r
45 virtual bool isConnected( Port* other ) = 0;
\r
46 inline int type( ) const
\r
47 { return( this->Type ); }
\r
51 const QStyleOptionGraphicsItem* option,
\r
56 virtual void _updateLabels( ) { }
\r
65 QGraphicsTextItem* m_Label;
\r
66 QGraphicsTextItem* m_ExtendedLabel;
\r
75 typedef NamePort Self;
\r
76 typedef Port Superclass;
\r
78 enum { Type = Superclass::Type + 1 };
\r
81 NamePort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
82 virtual ~NamePort( );
\r
84 virtual bool isConnected( Port* other );
\r
85 inline int type( ) const
\r
86 { return( this->Type ); }
\r
89 virtual void _updateLabels( );
\r
98 typedef InputPort Self;
\r
99 typedef Port Superclass;
\r
101 enum { Type = Superclass::Type + 3 };
\r
105 QGraphicsItem* parent,
\r
107 QGraphicsScene* scene = NULL
\r
109 virtual ~InputPort( );
\r
111 virtual void setExtend( bool extend );
\r
113 virtual bool isConnected( Port* other );
\r
114 inline int type( ) const
\r
115 { return( this->Type ); }
\r
117 void setConnection( Connection* c );
\r
118 inline Connection* connection( unsigned int i )
\r
119 { return( this->m_Connection[ i ] ); }
\r
120 inline const Connection* connection( unsigned int i ) const
\r
121 { return( this->m_Connection[ i ] ); }
\r
122 inline bool hasConnection( ) const
\r
123 { return( this->m_Connection.size( ) > 0 ); }
\r
124 inline bool isMultiple( ) const
\r
125 { return( this->m_IsMultiple ); }
\r
128 QVariant itemChange( GraphicsItemChange change, const QVariant& value );
\r
129 virtual void _updateLabels( );
\r
132 std::vector< Connection* > m_Connection;
\r
142 typedef OutputPort Self;
\r
143 typedef Port Superclass;
\r
145 enum { Type = Superclass::Type + 4 };
\r
148 OutputPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
149 virtual ~OutputPort( );
\r
151 virtual void setExtend( bool extend );
\r
153 virtual bool isConnected( Port* other );
\r
154 inline int type( ) const
\r
155 { return( this->Type ); }
\r
157 inline QVector< Connection* >& connections( )
\r
158 { return( this->m_Connections ); }
\r
159 inline const QVector< Connection* >& connections( ) const
\r
160 { return( this->m_Connections ); }
\r
163 QVariant itemChange( GraphicsItemChange change, const QVariant& value );
\r
164 virtual void _updateLabels( );
\r
166 virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt );
\r
169 QVector< Connection* > m_Connections;
\r
174 #endif // __CPBASEQTQPPLICATION__PORT__H__
\r