bool CanvasPicker::eventFilter( QObject *object, QEvent *event ) { if ( plot() == NULL || object != plot()->canvas() ) return false; switch( event->type() ) { case QEvent::FocusIn: { showCursor( true ); break; } case QEvent::FocusOut: { showCursor( false ); break; } case QEvent::Paint: { QApplication::postEvent( this, new QEvent( QEvent::User ) ); break; } case QEvent::MouseButtonPress: { const QMouseEvent *mouseEvent = static_cast<QMouseEvent *>( event ); select( mouseEvent->pos() ); return true; } case QEvent::MouseMove: { const QMouseEvent *mouseEvent = static_cast<QMouseEvent *>( event ); move( mouseEvent->pos() ); return true; } case QEvent::KeyPress: { const QKeyEvent *keyEvent = static_cast<QKeyEvent *>( event ); const int delta = 5; switch( keyEvent->key() ) { case Qt::Key_Up: { shiftCurveCursor( true ); return true; } case Qt::Key_Down: { shiftCurveCursor( false ); return true; } case Qt::Key_Right: case Qt::Key_Plus: { if ( d_selectedCurve ) shiftPointCursor( true ); else shiftCurveCursor( true ); return true; } case Qt::Key_Left: case Qt::Key_Minus: { if ( d_selectedCurve ) shiftPointCursor( false ); else shiftCurveCursor( true ); return true; } // The following keys represent a direction, they are // organized on the keyboard. case Qt::Key_1: { moveBy( -delta, delta ); break; } case Qt::Key_2: { moveBy( 0, delta ); break; } case Qt::Key_3: { moveBy( delta, delta ); break; } case Qt::Key_4: { moveBy( -delta, 0 ); break; } case Qt::Key_6: { moveBy( delta, 0 ); break; } case Qt::Key_7: { moveBy( -delta, -delta ); break; } case Qt::Key_8: { moveBy( 0, -delta ); break; } case Qt::Key_9: { moveBy( delta, -delta ); break; } default: break; } } default: break; } return QObject::eventFilter( object, event ); }
bool CanvasPicker::eventFilter(QObject *object, QEvent *e) { if ( object != (QObject *)plot()->canvas() ) return false; switch(e->type()) { case QEvent::FocusIn: showCursor(true); case QEvent::FocusOut: showCursor(false); case QEvent::Paint: { QApplication::postEvent(this, new QEvent(QEvent::User)); break; } case QEvent::MouseButtonPress: { select(((QMouseEvent *)e)->pos()); return true; } case QEvent::MouseMove: { move(((QMouseEvent *)e)->pos()); return true; } case QEvent::KeyPress: { const int delta = 5; switch(((const QKeyEvent *)e)->key()) { case Qt::Key_Up: shiftCurveCursor(true); return true; case Qt::Key_Down: shiftCurveCursor(false); return true; case Qt::Key_Right: case Qt::Key_Plus: if ( d_selectedCurve ) shiftPointCursor(true); else shiftCurveCursor(true); return true; case Qt::Key_Left: case Qt::Key_Minus: if ( d_selectedCurve ) shiftPointCursor(false); else shiftCurveCursor(true); return true; // The following keys represent a direction, they are // organized on the keyboard. case Qt::Key_1: moveBy(-delta, delta); break; case Qt::Key_2: moveBy(0, delta); break; case Qt::Key_3: moveBy(delta, delta); break; case Qt::Key_4: moveBy(-delta, 0); break; case Qt::Key_6: moveBy(delta, 0); break; case Qt::Key_7: moveBy(-delta, -delta); break; case Qt::Key_8: moveBy(0, -delta); break; case Qt::Key_9: moveBy(delta, -delta); break; default: break; } } default: break; } return QObject::eventFilter(object, e); }