]> Creatis software - cpPlugins.git/blob - lib/cpBaseQtApplication/Block.h
...
[cpPlugins.git] / lib / cpBaseQtApplication / Block.h
1 #ifndef __CPBASEQTAPPLICATION__BLOCK__H__\r
2 #define __CPBASEQTAPPLICATION__BLOCK__H__\r
3 \r
4 #include <cpBaseQtApplication_Export.h>\r
5 #include <QGraphicsPathItem>\r
6 #include <cpPlugins/BaseObjects/ProcessObject.h>\r
7 \r
8 namespace cpBaseQtApplication\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 cpBaseQtApplication_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::BaseObjects::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     TFilter* filter( );\r
36     const TFilter* filter( ) const;\r
37 \r
38     Editor* editor( );\r
39     const Editor* editor( ) const;\r
40     void setEditor( Editor* editor );\r
41 \r
42     void setNamePort( const QString& txt );\r
43     InputPort* addInputPort( const QString& txt, bool multiple );\r
44     OutputPort* addOutputPort( const QString& txt );\r
45 \r
46     InputPort* inputPort( const QString& txt );\r
47     OutputPort* outputPort( const QString& txt );\r
48 \r
49     QString namePort( ) const;\r
50     const InputPort* inputPort( const QString& txt ) const;\r
51     const OutputPort* outputPort( const QString& txt ) const;\r
52 \r
53     inline int type( ) const\r
54       { return( this->Type ); }\r
55 \r
56     virtual void paint(\r
57       QPainter* painter,\r
58       const QStyleOptionGraphicsItem* option,\r
59       QWidget* widget\r
60       );\r
61 \r
62   protected:\r
63     QVariant itemChange( GraphicsItemChange change, const QVariant& value );\r
64     void _setTypeInfo( const QString& txt );\r
65     void _configPort( Port* port );\r
66 \r
67     virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* evt );\r
68     virtual void contextMenuEvent( QGraphicsSceneContextMenuEvent* evt );\r
69 \r
70   private:\r
71     int m_HorzMargin;\r
72     int m_VertMargin;\r
73     int m_Width;\r
74     int m_Height;\r
75 \r
76     NamePort* m_NamePort;\r
77     std::map< std::string, InputPort* >  m_InputPorts;\r
78     std::map< std::string, OutputPort* > m_OutputPorts;\r
79 \r
80     TFilter::Pointer m_Filter;\r
81     Editor*          m_Editor;\r
82   };\r
83 \r
84 } // ecapseman\r
85 \r
86 #endif // __CPBASEQTAPPLICATION__BLOCK__H__\r
87 \r
88 // eof - $RCSfile$\r