]> Creatis software - cpPlugins.git/blob - lib/cpPipelineEditor/Editor.h
f7a2615027a7e60c63f8b06dd75d8f2231b80dfd
[cpPlugins.git] / lib / cpPipelineEditor / Editor.h
1 #ifndef __CPPIPELINEEDITOR__EDITOR__H__\r
2 #define __CPPIPELINEEDITOR__EDITOR__H__\r
3 \r
4 #include <cpPipelineEditor/cpPipelineEditor_Export.h>\r
5 #include <cpExtensions/DataStructures/Graph.h>\r
6 #include <cpPlugins/Interface/Workspace.h>\r
7 #include <QObject>\r
8 #include <QPointF>\r
9 \r
10 class QGraphicsScene;\r
11 class QGraphicsSceneMouseEvent;\r
12 class QGraphicsItem;\r
13 class QGraphicsSceneContextMenuEvent;\r
14 class QGraphicsSceneDragDropEvent;\r
15 class QGraphicsSceneHelpEvent;\r
16 class QGraphicsSceneHoverEvent;\r
17 class QGraphicsSceneMouseEvent;\r
18 class QGraphicsSceneMoveEvent;\r
19 class QGraphicsSceneResizeEvent;\r
20 class QGraphicsSceneWheelEvent;\r
21 \r
22 // -------------------------------------------------------------------------\r
23 #define cpPipelineEditor_Editor_Callback_DCL( E )       \\r
24   void _##E##_cbk( QGraphicsScene##E##Event* e );\r
25 \r
26 namespace cpPipelineEditor\r
27 {\r
28   class Connection;\r
29   class Block;\r
30 \r
31   /**\r
32    */\r
33   class cpPipelineEditor_EXPORT Editor\r
34     : public QObject\r
35   {\r
36     Q_OBJECT;\r
37 \r
38   public:\r
39     typedef Editor Self;\r
40     typedef QObject      Superclass;\r
41 \r
42     typedef cpPlugins::Interface::Workspace TWorkspace;\r
43     typedef TWorkspace::TFilter             TFilter;\r
44     typedef\r
45       cpExtensions::DataStructures::\r
46       Graph< Block*, Connection*, std::string > TGraph;\r
47 \r
48   public:\r
49     explicit Editor( QObject* parent = 0 );\r
50     virtual ~Editor( );\r
51 \r
52     TWorkspace* workspace( );\r
53     const TWorkspace* workspace( ) const;\r
54     void setWorkspace( TWorkspace* ws );\r
55 \r
56     std::string createFilter(\r
57       const std::string& filter,\r
58       const QPointF& pnt = QPointF( qreal( 0 ), qreal( 0 ) )\r
59       );\r
60 \r
61     void install( QGraphicsScene* s );\r
62     bool eventFilter( QObject* o, QEvent* e );\r
63 \r
64   private:\r
65     QGraphicsItem* itemAt( const QPointF& pos );\r
66 \r
67     inline Block* _createBlock( TFilter* f, const QPointF& pnt );\r
68 \r
69   protected:\r
70     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
71     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
72     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
73     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
74     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
75     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
76     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
77     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
78     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
79     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
80     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
81 \r
82     cpPipelineEditor_Editor_Callback_DCL( ContextMenu );\r
83     cpPipelineEditor_Editor_Callback_DCL( DragEnter );\r
84     cpPipelineEditor_Editor_Callback_DCL( DragLeave );\r
85     cpPipelineEditor_Editor_Callback_DCL( DragMove );\r
86     cpPipelineEditor_Editor_Callback_DCL( Drop );\r
87     cpPipelineEditor_Editor_Callback_DCL( Help );\r
88     cpPipelineEditor_Editor_Callback_DCL( HoverEnter );\r
89     cpPipelineEditor_Editor_Callback_DCL( HoverLeave );\r
90     cpPipelineEditor_Editor_Callback_DCL( HoverMove );\r
91     cpPipelineEditor_Editor_Callback_DCL( MouseDoubleClick );\r
92     cpPipelineEditor_Editor_Callback_DCL( MouseMove );\r
93     cpPipelineEditor_Editor_Callback_DCL( MousePress );\r
94     cpPipelineEditor_Editor_Callback_DCL( MouseRelease );\r
95     cpPipelineEditor_Editor_Callback_DCL( Move );\r
96     cpPipelineEditor_Editor_Callback_DCL( Resize );\r
97     cpPipelineEditor_Editor_Callback_DCL( Wheel );\r
98 \r
99   private:\r
100     QGraphicsScene* m_Scene;\r
101     Connection* m_ActualConnection;\r
102 \r
103     TWorkspace* m_Workspace;\r
104     TGraph::Pointer m_Graph;\r
105   };\r
106 \r
107 } // ecapseman\r
108 \r
109 #endif // __CPPIPELINEEDITOR__EDITOR__H__\r
110 \r
111 // eof - $RCSfile$\r