#ifndef __cpBaseQtApplication__Pipeline__Block__h__ #define __cpBaseQtApplication__Pipeline__Block__h__ #include #include #include #include namespace cpBaseQtApplication { namespace Pipeline { class Port; class NamePort; class InfoPort; class InputPort; class OutputPort; /** */ class cpBaseQtApplication_EXPORT Block : public QGraphicsPathItem { public: typedef Block Self; typedef QGraphicsPathItem Superclass; typedef cpPlugins::Pipeline::ProcessObject TFilter; protected: /** */ class _TFilterObserver : public itk::Command { public: typedef itk::SmartPointer< _TFilterObserver > Pointer; typedef itk::SmartPointer< const _TFilterObserver > ConstPointer; itkNewMacro( _TFilterObserver ); public: void Execute( itk::Object* c, const itk::EventObject& e ) override { this->Execute( const_cast< const itk::Object* >( c ), e ); } void Execute( const itk::Object* c, const itk::EventObject& e ) override; public: Block* ObservedBlock; }; public: enum { Type = QGraphicsItem::UserType + 6 }; Block( TFilter* filter, QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL ); virtual ~Block( ); TFilter* filter( ); const TFilter* filter( ) const; void setNamePort( const QString& txt ); void setInfoPort( 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; bool connectOutputPortSlot( QObject* receiver, const char* slot ); inline int type( ) const { return( this->Type ); } virtual void setPos( const QPointF& pos ); virtual void setPos( qreal x, qreal y ); 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; InfoPort* m_InfoPort; std::map< std::string, InputPort* > m_InputPorts; std::map< std::string, OutputPort* > m_OutputPorts; TFilter::Pointer m_Filter; _TFilterObserver::Pointer m_FilterObserver; unsigned long m_FilterObserverId; static QColor SelectedAndUpdated; static QColor NotSelectedAndUpdated; static QColor SelectedAndNotUpdated; static QColor NotSelectedAndNotUpdated; }; } // ecapseman } // ecapseman #endif // __cpBaseQtApplication__Pipeline__Block__h__ // eof - $RCSfile$