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