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