]> Creatis software - cpPlugins.git/blob - lib/cpBaseQtApplication/Editor.h
Build procedure simplified
[cpPlugins.git] / lib / cpBaseQtApplication / Editor.h
1 #ifndef __CPBASEQTAPPLICATION__EDITOR__H__\r
2 #define __CPBASEQTAPPLICATION__EDITOR__H__\r
3 \r
4 #include <cpBaseQtApplication_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 cpBaseQtApplication_Editor_Callback_DCL( E )     \\r
24   void _##E##_cbk( QGraphicsScene##E##Event* e );\r
25 \r
26 namespace cpBaseQtApplication\r
27 {\r
28   class Connection;\r
29   class Block;\r
30 \r
31   /**\r
32    */\r
33   class cpBaseQtApplication_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     void clear( );\r
66 \r
67     void install( QGraphicsScene* s );\r
68     bool eventFilter( QObject* o, QEvent* e );\r
69 \r
70     void updateFilter( const std::string& filter_name );\r
71     void showOutputData(\r
72       const std::string& filter_name,\r
73       const std::string& output_name\r
74       );\r
75     void hideOutputData(\r
76       const std::string& filter_name,\r
77       const std::string& output_name\r
78       );\r
79     void visualPropertiesOutputData(\r
80       const std::string& filter_name,\r
81       const std::string& output_name\r
82       );\r
83 \r
84   signals:\r
85     void execFilter( const std::string& filter_name );\r
86     void showFilterOutput(\r
87       const std::string& filter_name,\r
88       const std::string& output_name\r
89       );\r
90     void hideFilterOutput(\r
91       const std::string& filter_name,\r
92       const std::string& output_name\r
93       );\r
94     void visualPropertiesFilterOutput(\r
95       const std::string& filter_name,\r
96       const std::string& output_name\r
97       );\r
98 \r
99   private:\r
100     QGraphicsItem* itemAt( const QPointF& pos );\r
101 \r
102     inline Block* _createBlock(\r
103       TFilter* f, const QString& name, const QPointF& pnt\r
104       );\r
105 \r
106   protected:\r
107     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
108     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
109     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
110     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
111     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
112     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
113     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
114     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
115     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
116     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
117     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
118 \r
119     cpBaseQtApplication_Editor_Callback_DCL( ContextMenu );\r
120     cpBaseQtApplication_Editor_Callback_DCL( DragEnter );\r
121     cpBaseQtApplication_Editor_Callback_DCL( DragLeave );\r
122     cpBaseQtApplication_Editor_Callback_DCL( DragMove );\r
123     cpBaseQtApplication_Editor_Callback_DCL( Drop );\r
124     cpBaseQtApplication_Editor_Callback_DCL( Help );\r
125     cpBaseQtApplication_Editor_Callback_DCL( HoverEnter );\r
126     cpBaseQtApplication_Editor_Callback_DCL( HoverLeave );\r
127     cpBaseQtApplication_Editor_Callback_DCL( HoverMove );\r
128     cpBaseQtApplication_Editor_Callback_DCL( MouseDoubleClick );\r
129     cpBaseQtApplication_Editor_Callback_DCL( MouseMove );\r
130     cpBaseQtApplication_Editor_Callback_DCL( MousePress );\r
131     cpBaseQtApplication_Editor_Callback_DCL( MouseRelease );\r
132     cpBaseQtApplication_Editor_Callback_DCL( Move );\r
133     cpBaseQtApplication_Editor_Callback_DCL( Resize );\r
134     cpBaseQtApplication_Editor_Callback_DCL( Wheel );\r
135 \r
136   private:\r
137     QGraphicsScene* m_Scene;\r
138     Connection* m_ActualConnection;\r
139 \r
140     TWorkspace* m_Workspace;\r
141     TGraph::Pointer m_Graph;\r
142   };\r
143 \r
144 } // ecapseman\r
145 \r
146 #endif // __CPBASEQTAPPLICATION__EDITOR__H__\r
147 \r
148 // eof - $RCSfile$\r