--- /dev/null
+#ifndef __cpBaseQtApplication__Pipeline__Block__h__\r
+#define __cpBaseQtApplication__Pipeline__Block__h__\r
+\r
+#include <cpBaseQtApplication_Export.h>\r
+#include <QGraphicsPathItem>\r
+#include <itkCommand.h>\r
+#include <cpPlugins/Pipeline/ProcessObject.h>\r
+\r
+namespace cpBaseQtApplication\r
+{\r
+ namespace Pipeline\r
+ {\r
+ class Port;\r
+ class NamePort;\r
+ class InfoPort;\r
+ class InputPort;\r
+ class OutputPort;\r
+\r
+ /**\r
+ */\r
+ class cpBaseQtApplication_EXPORT Block\r
+ : public QGraphicsPathItem\r
+ {\r
+ public:\r
+ typedef Block Self;\r
+ typedef QGraphicsPathItem Superclass;\r
+ typedef cpPlugins::Pipeline::ProcessObject TFilter;\r
+\r
+ protected:\r
+ /**\r
+ */\r
+ class _TFilterObserver\r
+ : public itk::Command\r
+ {\r
+ public:\r
+ typedef itk::SmartPointer< _TFilterObserver > Pointer;\r
+ typedef itk::SmartPointer< const _TFilterObserver > ConstPointer;\r
+ itkNewMacro( _TFilterObserver );\r
+ public:\r
+ void Execute( itk::Object* c, const itk::EventObject& e )\r
+ { this->Execute( const_cast< const itk::Object* >( c ), e ); }\r
+ void Execute( const itk::Object* c, const itk::EventObject& e );\r
+ public:\r
+ Block* ObservedBlock;\r
+ };\r
+\r
+ public:\r
+ enum { Type = QGraphicsItem::UserType + 6 };\r
+\r
+ Block(\r
+ TFilter* filter,\r
+ QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL\r
+ );\r
+ virtual ~Block( );\r
+\r
+ TFilter* filter( );\r
+ const TFilter* filter( ) const;\r
+\r
+ void setNamePort( const QString& txt );\r
+ void setInfoPort( const QString& txt );\r
+ InputPort* addInputPort( const QString& txt, bool multiple );\r
+ OutputPort* addOutputPort( const QString& txt );\r
+\r
+ InputPort* inputPort( const QString& txt );\r
+ OutputPort* outputPort( const QString& txt );\r
+\r
+ QString namePort( ) const;\r
+ const InputPort* inputPort( const QString& txt ) const;\r
+ const OutputPort* outputPort( const QString& txt ) const;\r
+\r
+ bool connectOutputPortSlot( QObject* receiver, const char* slot );\r
+\r
+ inline int type( ) const\r
+ { return( this->Type ); }\r
+\r
+ virtual void setPos( const QPointF& pos );\r
+ virtual void setPos( qreal x, qreal y );\r
+\r
+ virtual void paint(\r
+ QPainter* painter,\r
+ const QStyleOptionGraphicsItem* option,\r
+ QWidget* widget\r
+ );\r
+\r
+ protected:\r
+ QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
+ void _setTypeInfo( const QString& txt );\r
+ void _configPort( Port* port );\r
+\r
+ virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* evt );\r
+ virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt );\r
+\r
+ private:\r
+ int m_HorzMargin;\r
+ int m_VertMargin;\r
+ int m_Width;\r
+ int m_Height;\r
+\r
+ NamePort* m_NamePort;\r
+ InfoPort* m_InfoPort;\r
+ std::map< std::string, InputPort* > m_InputPorts;\r
+ std::map< std::string, OutputPort* > m_OutputPorts;\r
+\r
+ TFilter::Pointer m_Filter;\r
+ _TFilterObserver::Pointer m_FilterObserver;\r
+ unsigned long m_FilterObserverId;\r
+\r
+ static QColor SelectedAndUpdated;\r
+ static QColor NotSelectedAndUpdated;\r
+ static QColor SelectedAndNotUpdated;\r
+ static QColor NotSelectedAndNotUpdated;\r
+ };\r
+\r
+ } // ecapseman\r
+\r
+} // ecapseman\r
+\r
+#endif // __cpBaseQtApplication__Pipeline__Block__h__\r
+\r
+// eof - $RCSfile$\r