#ifndef __CPBASEQTAPPLICATION__BLOCK__H__ #define __CPBASEQTAPPLICATION__BLOCK__H__ #include #include #include namespace cpBaseQtApplication { class Editor; class Port; class NamePort; class InputPort; class OutputPort; /** */ class cpBaseQtApplication_EXPORT Block : public QGraphicsPathItem { public: typedef Block Self; typedef QGraphicsPathItem Superclass; typedef cpPlugins::BaseObjects::ProcessObject TFilter; public: enum { Type = QGraphicsItem::UserType + 6 }; Block( TFilter* filter, const QString& name, QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL ); virtual ~Block( ); TFilter* filter( ); const TFilter* filter( ) const; Editor* editor( ); const Editor* editor( ) const; void setEditor( Editor* editor ); void setNamePort( const QString& txt ); InputPort* addInputPort( const QString& txt, bool multiple ); OutputPort* addOutputPort( const QString& txt ); InputPort* inputPort( const QString& txt ); OutputPort* outputPort( const QString& txt ); QString namePort( ) const; const InputPort* inputPort( const QString& txt ) const; const OutputPort* outputPort( const QString& txt ) const; inline int type( ) const { return( this->Type ); } virtual void paint( QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget ); protected: QVariant itemChange( GraphicsItemChange change, const QVariant& value ); void _setTypeInfo( const QString& txt ); void _configPort( Port* port ); virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* evt ); virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt ); private: int m_HorzMargin; int m_VertMargin; int m_Width; int m_Height; NamePort* m_NamePort; std::map< std::string, InputPort* > m_InputPorts; std::map< std::string, OutputPort* > m_OutputPorts; TFilter::Pointer m_Filter; Editor* m_Editor; }; } // ecapseman #endif // __CPBASEQTAPPLICATION__BLOCK__H__ // eof - $RCSfile$