]> Creatis software - cpPlugins.git/blob - lib/cpPipelineEditor/Block.h
...
[cpPlugins.git] / lib / cpPipelineEditor / Block.h
1 #ifndef __CPPIPELINEEDITOR__BLOCK__H__\r
2 #define __CPPIPELINEEDITOR__BLOCK__H__\r
3 \r
4 #include <cpPipelineEditor/cpPipelineEditor_Export.h>\r
5 #include <QGraphicsPathItem>\r
6 #include <cpPlugins/Interface/ProcessObject.h>\r
7 \r
8 namespace cpPipelineEditor\r
9 {\r
10   class Editor;\r
11   class Port;\r
12   class NamePort;\r
13   class InputPort;\r
14   class OutputPort;\r
15 \r
16   /**\r
17    */\r
18   class cpPipelineEditor_EXPORT Block\r
19     : public QGraphicsPathItem\r
20   {\r
21   public:\r
22     typedef Block             Self;\r
23     typedef QGraphicsPathItem Superclass;\r
24     typedef cpPlugins::Interface::ProcessObject TFilter;\r
25   \r
26   public:\r
27     enum { Type = QGraphicsItem::UserType + 6 };\r
28 \r
29     Block(\r
30       TFilter* filter, const QString& name,\r
31       QGraphicsItem* parent = NULL, QGraphicsScene* scene = NULL\r
32       );\r
33     virtual ~Block( );\r
34 \r
35     Editor* editor( );\r
36     const Editor* editor( ) const;\r
37     void setEditor( Editor* editor );\r
38 \r
39     void setNamePort( const QString& txt );\r
40     InputPort* addInputPort( const QString& txt );\r
41     OutputPort* addOutputPort( const QString& txt );\r
42 \r
43     InputPort* inputPort( const QString& txt );\r
44     OutputPort* outputPort( const QString& txt );\r
45 \r
46     QString namePort( ) const;\r
47     const InputPort* inputPort( const QString& txt ) const;\r
48     const OutputPort* outputPort( const QString& txt ) const;\r
49 \r
50     inline int type( ) const\r
51       { return( this->Type ); }\r
52 \r
53     virtual void paint(\r
54       QPainter* painter,\r
55       const QStyleOptionGraphicsItem* option,\r
56       QWidget* widget\r
57       );\r
58 \r
59   protected:\r
60     QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
61     void _setTypeInfo( const QString& txt );\r
62     void _configPort( Port* port );\r
63 \r
64     virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* evt );\r
65     virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt );\r
66 \r
67   private:\r
68     int m_HorzMargin;\r
69     int m_VertMargin;\r
70     int m_Width;\r
71     int m_Height;\r
72 \r
73     NamePort* m_NamePort;\r
74     std::map< std::string, InputPort* >  m_InputPorts;\r
75     std::map< std::string, OutputPort* > m_OutputPorts;\r
76 \r
77     TFilter* m_Filter;\r
78     Editor*  m_Editor;\r
79   };\r
80 \r
81 } // ecapseman\r
82 \r
83 #endif // __CPPIPELINEEDITOR__BLOCK__H__\r
84 \r
85 // eof - $RCSfile$\r