]> Creatis software - cpPlugins.git/blob - lib/cpPipelineEditor/Editor.h
...
[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/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::Workspace     TWorkspace;\r
43     typedef cpPlugins::ProcessObject 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& category, const std::string& filter,\r
58       const QPointF& pnt = QPointF( qreal( 0 ), qreal( 0 ) )\r
59       );\r
60     bool deleteFilter( const std::string& name );\r
61     bool deleteConnection(\r
62       const std::string& src, const std::string& des,\r
63       const std::string& in, const std::string& out\r
64       );\r
65 \r
66     void install( QGraphicsScene* s );\r
67     bool eventFilter( QObject* o, QEvent* e );\r
68 \r
69     void updateFilter( const std::string& filter_name );\r
70     void showOutputData(\r
71       const std::string& filter_name,\r
72       const std::string& output_name\r
73       );\r
74     void hideOutputData(\r
75       const std::string& filter_name,\r
76       const std::string& output_name\r
77       );\r
78     void visualPropertiesOutputData(\r
79       const std::string& filter_name,\r
80       const std::string& output_name\r
81       );\r
82 \r
83   signals:\r
84     void execFilter( const std::string& filter_name );\r
85     void showFilterOutput(\r
86       const std::string& filter_name,\r
87       const std::string& output_name\r
88       );\r
89     void hideFilterOutput(\r
90       const std::string& filter_name,\r
91       const std::string& output_name\r
92       );\r
93     void visualPropertiesFilterOutput(\r
94       const std::string& filter_name,\r
95       const std::string& output_name\r
96       );\r
97 \r
98   private:\r
99     QGraphicsItem* itemAt( const QPointF& pos );\r
100 \r
101     inline Block* _createBlock(\r
102       TFilter* f, const QString& name, const QPointF& pnt\r
103       );\r
104 \r
105   protected:\r
106     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
107     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
108     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
109     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
110     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
111     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
112     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
113     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
114     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
115     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
116     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
117 \r
118     cpPipelineEditor_Editor_Callback_DCL( ContextMenu );\r
119     cpPipelineEditor_Editor_Callback_DCL( DragEnter );\r
120     cpPipelineEditor_Editor_Callback_DCL( DragLeave );\r
121     cpPipelineEditor_Editor_Callback_DCL( DragMove );\r
122     cpPipelineEditor_Editor_Callback_DCL( Drop );\r
123     cpPipelineEditor_Editor_Callback_DCL( Help );\r
124     cpPipelineEditor_Editor_Callback_DCL( HoverEnter );\r
125     cpPipelineEditor_Editor_Callback_DCL( HoverLeave );\r
126     cpPipelineEditor_Editor_Callback_DCL( HoverMove );\r
127     cpPipelineEditor_Editor_Callback_DCL( MouseDoubleClick );\r
128     cpPipelineEditor_Editor_Callback_DCL( MouseMove );\r
129     cpPipelineEditor_Editor_Callback_DCL( MousePress );\r
130     cpPipelineEditor_Editor_Callback_DCL( MouseRelease );\r
131     cpPipelineEditor_Editor_Callback_DCL( Move );\r
132     cpPipelineEditor_Editor_Callback_DCL( Resize );\r
133     cpPipelineEditor_Editor_Callback_DCL( Wheel );\r
134 \r
135   private:\r
136     QGraphicsScene* m_Scene;\r
137     Connection* m_ActualConnection;\r
138 \r
139     TWorkspace* m_Workspace;\r
140     TGraph::Pointer m_Graph;\r
141   };\r
142 \r
143 } // ecapseman\r
144 \r
145 #endif // __CPPIPELINEEDITOR__EDITOR__H__\r
146 \r
147 // eof - $RCSfile$\r