--- /dev/null
+#include <cpBaseQtApplication/Pipeline/EventFilter.h>\r
+#include <cpBaseQtApplication/Pipeline/Canvas.h>\r
+\r
+#include <QGraphicsScene>\r
+#include <QEvent>\r
+#include <QGraphicsItem>\r
+#include <QGraphicsSceneContextMenuEvent>\r
+#include <QGraphicsSceneDragDropEvent>\r
+#include <QGraphicsSceneHelpEvent>\r
+#include <QGraphicsSceneHoverEvent>\r
+#include <QGraphicsSceneMouseEvent>\r
+#include <QGraphicsSceneMoveEvent>\r
+#include <QGraphicsSceneResizeEvent>\r
+#include <QGraphicsSceneWheelEvent>\r
+#include <QGraphicsView>\r
+#include <QInputDialog>\r
+#include <QMessageBox>\r
+\r
+// -------------------------------------------------------------------------\r
+#define cpBaseQtApplicationPipelineEventFilterCbckSWITCH( E, e ) \\r
+ case QEvent::GraphicsScene##E: \\r
+ { \\r
+ QGraphicsScene##E##Event* evt = \\r
+ dynamic_cast< QGraphicsScene##E##Event* >( e ); \\r
+ if( evt != NULL ) \\r
+ this->_##E##_cbk( evt ); \\r
+ } \\r
+ break;\r
+\r
+// -------------------------------------------------------------------------\r
+#define cpBaseQtApplicationPipelineEventFilterCallbackCODE( E ) \\r
+ void cpBaseQtApplication::Pipeline::EventFilter:: \\r
+ _##E##_cbk( QGraphicsScene##E##Event* evt )\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplication::Pipeline::EventFilter::\r
+EventFilter( QObject* parent )\r
+ : Superclass( parent ),\r
+ m_Scene( NULL ),\r
+ m_Canvas( NULL )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplication::Pipeline::EventFilter::\r
+~EventFilter( )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplication::Pipeline::Canvas*\r
+cpBaseQtApplication::Pipeline::EventFilter::\r
+canvas( )\r
+{\r
+ return( this->m_Canvas );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+const cpBaseQtApplication::Pipeline::Canvas*\r
+cpBaseQtApplication::Pipeline::EventFilter::\r
+canvas( ) const\r
+{\r
+ return( this->m_Canvas );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+void cpBaseQtApplication::Pipeline::EventFilter::\r
+setCanvas( cpBaseQtApplication::Pipeline::Canvas* c )\r
+{\r
+ this->m_Canvas = c;\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+void cpBaseQtApplication::Pipeline::EventFilter::\r
+install( QGraphicsScene* s )\r
+{\r
+ s->installEventFilter( this );\r
+ this->m_Scene = s;\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+bool cpBaseQtApplication::Pipeline::EventFilter::\r
+eventFilter( QObject* o, QEvent* e )\r
+{\r
+ // Event type\r
+ switch( int( e->type( ) ) )\r
+ {\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( ContextMenu, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( DragEnter, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( DragLeave, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( DragMove, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( Drop, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( Help, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( HoverEnter, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( HoverLeave, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( HoverMove, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( MouseDoubleClick, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( MouseMove, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( MousePress, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( MouseRelease, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( Move, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( Resize, e );\r
+ cpBaseQtApplicationPipelineEventFilterCbckSWITCH( Wheel, e );\r
+ default:\r
+ break;\r
+ } // hctiws\r
+ return( this->Superclass::eventFilter( o, e ) );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+QGraphicsItem* cpBaseQtApplication::Pipeline::EventFilter::\r
+itemAt( const QPointF& pos )\r
+{\r
+ QList< QGraphicsItem* > items =\r
+ this->m_Scene->items( QRectF( pos - QPointF( 1, 1 ), QSize( 3, 3 ) ) );\r
+ QGraphicsItem* ret = NULL;\r
+ foreach( QGraphicsItem* item, items )\r
+ if( item->type( ) > QGraphicsItem::UserType )\r
+ ret = item;\r
+ return( ret );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( ContextMenu )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( DragEnter )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( DragLeave )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( DragMove )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( Drop )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( Help )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( HoverEnter )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( HoverLeave )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( HoverMove )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( MouseDoubleClick )\r
+{\r
+ // Get clicked item\r
+ QGraphicsItem* item = this->itemAt( evt->scenePos( ) );\r
+ if( item == NULL )\r
+ return;\r
+\r
+ if( evt->button( ) == Qt::LeftButton )\r
+ {\r
+ if( evt->modifiers( ) == Qt::NoModifier )\r
+ this->m_Canvas->rename( item );\r
+ else if( evt->modifiers( ) == Qt::ControlModifier )\r
+ this->m_Canvas->exposePort( item );\r
+\r
+ } // fi\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( MouseMove )\r
+{\r
+ this->m_Canvas->moveConnection( evt->scenePos( ) );\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( MousePress )\r
+{\r
+ switch( evt->button( ) )\r
+ {\r
+ case Qt::LeftButton: this->m_Canvas->grab( evt->scenePos( ) ); break;\r
+ default: break;\r
+ } // hctiws\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( MouseRelease )\r
+{\r
+ switch( evt->button( ) )\r
+ {\r
+ case Qt::LeftButton: this->m_Canvas->release( evt->scenePos( ) ); break;\r
+ default: break;\r
+ } // hctiws\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( Move )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( Resize )\r
+{\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+cpBaseQtApplicationPipelineEventFilterCallbackCODE( Wheel )\r
+{\r
+}\r
+\r
+// eof - $RCSfile$\r