1 #ifndef __CPPIPELINEEDITOR__PORT__H__
\r
2 #define __CPPIPELINEEDITOR__PORT__H__
\r
4 #include <cpPipelineEditor/cpPipelineEditor_Export.h>
\r
5 #include <QGraphicsPathItem>
\r
7 namespace cpPipelineEditor
\r
14 class cpPipelineEditor_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 TypePort Self;
\r
99 typedef Port Superclass;
\r
101 enum { Type = Superclass::Type + 2 };
\r
104 TypePort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
105 virtual ~TypePort( );
\r
107 virtual bool isConnected( Port* other );
\r
108 inline int type( ) const
\r
109 { return( this->Type ); }
\r
112 virtual void _updateLabels( );
\r
121 typedef InputPort Self;
\r
122 typedef Port Superclass;
\r
124 enum { Type = Superclass::Type + 3 };
\r
127 InputPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
128 virtual ~InputPort( );
\r
130 virtual void setExtend( bool extend );
\r
132 virtual bool isConnected( Port* other );
\r
133 inline int type( ) const
\r
134 { return( this->Type ); }
\r
136 void setConnection( Connection* c );
\r
137 inline Connection* connection( )
\r
138 { return( this->m_Connection ); }
\r
139 inline const Connection* connection( ) const
\r
140 { return( this->m_Connection ); }
\r
141 inline bool hasConnection( ) const
\r
142 { return( this->m_Connection != NULL ); }
\r
145 QVariant itemChange( GraphicsItemChange change, const QVariant& value );
\r
146 virtual void _updateLabels( );
\r
149 Connection* m_Connection;
\r
158 typedef OutputPort Self;
\r
159 typedef Port Superclass;
\r
161 enum { Type = Superclass::Type + 4 };
\r
164 OutputPort( QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL );
\r
165 virtual ~OutputPort( );
\r
167 virtual void setExtend( bool extend );
\r
169 virtual bool isConnected( Port* other );
\r
170 inline int type( ) const
\r
171 { return( this->Type ); }
\r
173 inline QVector< Connection* >& connections( )
\r
174 { return( this->m_Connections ); }
\r
175 inline const QVector< Connection* >& connections( ) const
\r
176 { return( this->m_Connections ); }
\r
179 QVariant itemChange( GraphicsItemChange change, const QVariant& value );
\r
180 virtual void _updateLabels( );
\r
182 virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt );
\r
185 QVector< Connection* > m_Connections;
\r
190 #endif // __CPPIPELINEEDITOR__PORT__H__
\r