]> Creatis software - cpPlugins.git/blob - lib/cpBaseQtApplication/Pipeline/EventFilter.h
...
[cpPlugins.git] / lib / cpBaseQtApplication / Pipeline / EventFilter.h
1 #ifndef __cpBaseQtApplication__Pipeline__EventFilter__h__\r
2 #define __cpBaseQtApplication__Pipeline__EventFilter__h__\r
3 \r
4 #include <cpBaseQtApplication_Export.h>\r
5 #include <QObject>\r
6 #include <QPointF>\r
7 \r
8 class QGraphicsScene;\r
9 class QGraphicsSceneMouseEvent;\r
10 class QGraphicsItem;\r
11 class QGraphicsSceneContextMenuEvent;\r
12 class QGraphicsSceneDragDropEvent;\r
13 class QGraphicsSceneHelpEvent;\r
14 class QGraphicsSceneHoverEvent;\r
15 class QGraphicsSceneMouseEvent;\r
16 class QGraphicsSceneMoveEvent;\r
17 class QGraphicsSceneResizeEvent;\r
18 class QGraphicsSceneWheelEvent;\r
19 \r
20 // -------------------------------------------------------------------------\r
21 #define cpBaseQtApplicationPipelineEventFilterCallbackDCL( E )  \\r
22   void _##E##_cbk( QGraphicsScene##E##Event* e );\r
23 \r
24 namespace cpBaseQtApplication\r
25 {\r
26   namespace Pipeline\r
27   {\r
28     class Canvas;\r
29 \r
30     /**\r
31      */\r
32     class cpBaseQtApplication_EXPORT EventFilter\r
33       : public QObject\r
34     {\r
35       Q_OBJECT;\r
36 \r
37     public:\r
38       typedef EventFilter  Self;\r
39       typedef QObject Superclass;\r
40 \r
41     public:\r
42       explicit EventFilter( QObject* parent = 0 );\r
43       virtual ~EventFilter( );\r
44 \r
45       Canvas* canvas( );\r
46       const Canvas* canvas( ) const;\r
47       void setCanvas( Canvas* c );\r
48 \r
49       void install( QGraphicsScene* s );\r
50       bool eventFilter( QObject* o, QEvent* e );\r
51 \r
52     private:\r
53       QGraphicsItem* itemAt( const QPointF& pos );\r
54 \r
55     protected:\r
56       typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragEnterEvent;\r
57       typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragLeaveEvent;\r
58       typedef QGraphicsSceneDragDropEvent QGraphicsSceneDragMoveEvent;\r
59       typedef QGraphicsSceneDragDropEvent QGraphicsSceneDropEvent;\r
60       typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverEnterEvent;\r
61       typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverMoveEvent;\r
62       typedef QGraphicsSceneHoverEvent    QGraphicsSceneHoverLeaveEvent;\r
63       typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseDoubleClickEvent;\r
64       typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseMoveEvent;\r
65       typedef QGraphicsSceneMouseEvent    QGraphicsSceneMousePressEvent;\r
66       typedef QGraphicsSceneMouseEvent    QGraphicsSceneMouseReleaseEvent;\r
67 \r
68       cpBaseQtApplicationPipelineEventFilterCallbackDCL( ContextMenu );\r
69       cpBaseQtApplicationPipelineEventFilterCallbackDCL( DragEnter );\r
70       cpBaseQtApplicationPipelineEventFilterCallbackDCL( DragLeave );\r
71       cpBaseQtApplicationPipelineEventFilterCallbackDCL( DragMove );\r
72       cpBaseQtApplicationPipelineEventFilterCallbackDCL( Drop );\r
73       cpBaseQtApplicationPipelineEventFilterCallbackDCL( Help );\r
74       cpBaseQtApplicationPipelineEventFilterCallbackDCL( HoverEnter );\r
75       cpBaseQtApplicationPipelineEventFilterCallbackDCL( HoverLeave );\r
76       cpBaseQtApplicationPipelineEventFilterCallbackDCL( HoverMove );\r
77       cpBaseQtApplicationPipelineEventFilterCallbackDCL( MouseDoubleClick );\r
78       cpBaseQtApplicationPipelineEventFilterCallbackDCL( MouseMove );\r
79       cpBaseQtApplicationPipelineEventFilterCallbackDCL( MousePress );\r
80       cpBaseQtApplicationPipelineEventFilterCallbackDCL( MouseRelease );\r
81       cpBaseQtApplicationPipelineEventFilterCallbackDCL( Move );\r
82       cpBaseQtApplicationPipelineEventFilterCallbackDCL( Resize );\r
83       cpBaseQtApplicationPipelineEventFilterCallbackDCL( Wheel );\r
84 \r
85     private:\r
86       QGraphicsScene* m_Scene;\r
87       Canvas*         m_Canvas;\r
88     };\r
89 \r
90   } // ecapseman\r
91 \r
92 } // ecapseman\r
93 \r
94 #endif // __cpBaseQtApplication__Pipeline__EventFilter__h__\r
95 \r
96 // eof - $RCSfile$\r