]> Creatis software - cpPlugins.git/blob - lib/cpPipelineEditor/Editor.h
908abf96d62b2bc6178918d1497f327957404908
[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     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 \r
75   signals:\r
76     void execFilter( const std::string& filter_name );\r
77     void showFilterOutput(\r
78       const std::string& filter_name,\r
79       const std::string& output_name\r
80       );\r
81 \r
82   private:\r
83     QGraphicsItem* itemAt( const QPointF& pos );\r
84 \r
85     inline Block* _createBlock(\r
86       TFilter* f, const QString& name, const QPointF& pnt\r
87       );\r
88 \r
89   protected:\r
90     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
91     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
92     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
93     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
94     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
95     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
96     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
97     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
98     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
99     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
100     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
101 \r
102     cpPipelineEditor_Editor_Callback_DCL( ContextMenu );\r
103     cpPipelineEditor_Editor_Callback_DCL( DragEnter );\r
104     cpPipelineEditor_Editor_Callback_DCL( DragLeave );\r
105     cpPipelineEditor_Editor_Callback_DCL( DragMove );\r
106     cpPipelineEditor_Editor_Callback_DCL( Drop );\r
107     cpPipelineEditor_Editor_Callback_DCL( Help );\r
108     cpPipelineEditor_Editor_Callback_DCL( HoverEnter );\r
109     cpPipelineEditor_Editor_Callback_DCL( HoverLeave );\r
110     cpPipelineEditor_Editor_Callback_DCL( HoverMove );\r
111     cpPipelineEditor_Editor_Callback_DCL( MouseDoubleClick );\r
112     cpPipelineEditor_Editor_Callback_DCL( MouseMove );\r
113     cpPipelineEditor_Editor_Callback_DCL( MousePress );\r
114     cpPipelineEditor_Editor_Callback_DCL( MouseRelease );\r
115     cpPipelineEditor_Editor_Callback_DCL( Move );\r
116     cpPipelineEditor_Editor_Callback_DCL( Resize );\r
117     cpPipelineEditor_Editor_Callback_DCL( Wheel );\r
118 \r
119   private:\r
120     QGraphicsScene* m_Scene;\r
121     Connection* m_ActualConnection;\r
122 \r
123     TWorkspace* m_Workspace;\r
124     TGraph::Pointer m_Graph;\r
125   };\r
126 \r
127 } // ecapseman\r
128 \r
129 #endif // __CPPIPELINEEDITOR__EDITOR__H__\r
130 \r
131 // eof - $RCSfile$\r