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