]> Creatis software - cpPlugins.git/blob - lib/cpBaseQtApplication/Editor.h
...
[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 <cpPlugins/Workspace.h>\r
6 #include <QObject>\r
7 #include <QPointF>\r
8 \r
9 class QGraphicsScene;\r
10 class QGraphicsSceneMouseEvent;\r
11 class QGraphicsItem;\r
12 class QGraphicsSceneContextMenuEvent;\r
13 class QGraphicsSceneDragDropEvent;\r
14 class QGraphicsSceneHelpEvent;\r
15 class QGraphicsSceneHoverEvent;\r
16 class QGraphicsSceneMouseEvent;\r
17 class QGraphicsSceneMoveEvent;\r
18 class QGraphicsSceneResizeEvent;\r
19 class QGraphicsSceneWheelEvent;\r
20 \r
21 // -------------------------------------------------------------------------\r
22 #define cpBaseQtApplication_Editor_Callback_DCL( E )     \\r
23   void _##E##_cbk( QGraphicsScene##E##Event* e );\r
24 \r
25 namespace cpBaseQtApplication\r
26 {\r
27   class Connection;\r
28   class Block;\r
29 \r
30   /**\r
31    */\r
32   class cpBaseQtApplication_EXPORT Editor\r
33     : public QObject\r
34   {\r
35     Q_OBJECT;\r
36 \r
37   public:\r
38     typedef Editor Self;\r
39     typedef QObject      Superclass;\r
40 \r
41     typedef cpPlugins::Workspace     TWorkspace;\r
42     typedef cpPlugins::ProcessObject TFilter;\r
43 \r
44   public:\r
45     explicit Editor( QObject* parent = 0 );\r
46     virtual ~Editor( );\r
47 \r
48     TWorkspace* workspace( );\r
49     const TWorkspace* workspace( ) const;\r
50     void setWorkspace( TWorkspace* ws );\r
51     void redrawWorkspace( );\r
52 \r
53     std::string createFilter(\r
54       const std::string& category, const std::string& filter,\r
55       const QPointF& pnt = QPointF( qreal( 0 ), qreal( 0 ) )\r
56       );\r
57     bool deleteFilter( const std::string& name );\r
58     bool deleteConnection(\r
59       const std::string& src, const std::string& des,\r
60       const std::string& in, const std::string& out\r
61       );\r
62     void clear( );\r
63 \r
64     void install( QGraphicsScene* s );\r
65     bool eventFilter( QObject* o, QEvent* e );\r
66 \r
67     void updateFilter( const std::string& filter_name );\r
68     void showOutputData(\r
69       const std::string& filter_name,\r
70       const std::string& output_name\r
71       );\r
72     void hideOutputData(\r
73       const std::string& filter_name,\r
74       const std::string& output_name\r
75       );\r
76     void visualPropertiesOutputData(\r
77       const std::string& filter_name,\r
78       const std::string& output_name\r
79       );\r
80 \r
81   signals:\r
82     void execFilter( const std::string& filter_name );\r
83     void showFilterOutput(\r
84       const std::string& filter_name,\r
85       const std::string& output_name\r
86       );\r
87     void hideFilterOutput(\r
88       const std::string& filter_name,\r
89       const std::string& output_name\r
90       );\r
91     void visualPropertiesFilterOutput(\r
92       const std::string& filter_name,\r
93       const std::string& output_name\r
94       );\r
95 \r
96   private:\r
97     QGraphicsItem* itemAt( const QPointF& pos );\r
98 \r
99     inline Block* _createBlock(\r
100       TFilter* f, const QString& name, const QPointF& pnt\r
101       );\r
102 \r
103   protected:\r
104     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
105     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
106     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
107     typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
108     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
109     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
110     typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
111     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
112     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
113     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
114     typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
115 \r
116     cpBaseQtApplication_Editor_Callback_DCL( ContextMenu );\r
117     cpBaseQtApplication_Editor_Callback_DCL( DragEnter );\r
118     cpBaseQtApplication_Editor_Callback_DCL( DragLeave );\r
119     cpBaseQtApplication_Editor_Callback_DCL( DragMove );\r
120     cpBaseQtApplication_Editor_Callback_DCL( Drop );\r
121     cpBaseQtApplication_Editor_Callback_DCL( Help );\r
122     cpBaseQtApplication_Editor_Callback_DCL( HoverEnter );\r
123     cpBaseQtApplication_Editor_Callback_DCL( HoverLeave );\r
124     cpBaseQtApplication_Editor_Callback_DCL( HoverMove );\r
125     cpBaseQtApplication_Editor_Callback_DCL( MouseDoubleClick );\r
126     cpBaseQtApplication_Editor_Callback_DCL( MouseMove );\r
127     cpBaseQtApplication_Editor_Callback_DCL( MousePress );\r
128     cpBaseQtApplication_Editor_Callback_DCL( MouseRelease );\r
129     cpBaseQtApplication_Editor_Callback_DCL( Move );\r
130     cpBaseQtApplication_Editor_Callback_DCL( Resize );\r
131     cpBaseQtApplication_Editor_Callback_DCL( Wheel );\r
132 \r
133   private:\r
134     QGraphicsScene* m_Scene;\r
135     Connection* m_ActualConnection;\r
136 \r
137     TWorkspace* m_Workspace;\r
138   };\r
139 \r
140 } // ecapseman\r
141 \r
142 #endif // __CPBASEQTAPPLICATION__EDITOR__H__\r
143 \r
144 // eof - $RCSfile$\r