Classes | Public Types | Public Member Functions | Protected Member Functions

QwtEventPattern Class Reference

A collection of event patterns. More...

#include <qwt_event_pattern.h>

Inheritance diagram for QwtEventPattern:
Inheritance graph
[legend]

List of all members.

Classes

class  KeyPattern
 A pattern for key events. More...
class  MousePattern
 A pattern for mouse events. More...

Public Types

enum  MousePatternCode {
  MouseSelect1, MouseSelect2, MouseSelect3, MouseSelect4,
  MouseSelect5, MouseSelect6, MousePatternCount
}
 

Symbolic mouse input codes.

More...
enum  KeyPatternCode {
  KeySelect1, KeySelect2, KeyAbort, KeyLeft,
  KeyRight, KeyUp, KeyDown, KeyRedo,
  KeyUndo, KeyHome, KeyPatternCount
}
 

Symbolic keyboard input codes.

More...

Public Member Functions

 QwtEventPattern ()
virtual ~QwtEventPattern ()
 Destructor.
void initMousePattern (int numButtons)
void initKeyPattern ()
void setMousePattern (uint pattern, int button, int state=Qt::NoButton)
void setKeyPattern (uint pattern, int key, int state=Qt::NoButton)
void setMousePattern (const QMemArray< MousePattern > &)
 Change the mouse event patterns.
void setKeyPattern (const QMemArray< KeyPattern > &)
 Change the key event patterns.
const QMemArray< MousePattern > & mousePattern () const
 Return mouse patterns.
const QMemArray< KeyPattern > & keyPattern () const
 Return key patterns.
QMemArray< MousePattern > & mousePattern ()
 Return ,ouse patterns.
QMemArray< KeyPattern > & keyPattern ()
 Return Key patterns.
bool mouseMatch (uint pattern, const QMouseEvent *) const
 Compare a mouse event with an event pattern.
bool keyMatch (uint pattern, const QKeyEvent *) const
 Compare a key event with an event pattern.

Protected Member Functions

virtual bool mouseMatch (const MousePattern &, const QMouseEvent *) const
 Compare a mouse event with an event pattern.
virtual bool keyMatch (const KeyPattern &, const QKeyEvent *) const
 Compare a key event with an event pattern.

Detailed Description

A collection of event patterns.

QwtEventPattern introduces an level of indirection for mouse and keyboard inputs. Those are represented by symbolic names, so the application code can be configured by individual mappings.

See also:
QwtPicker, QwtPickerMachine, QwtPlotZoomer

Definition at line 28 of file qwt_event_pattern.h.


Member Enumeration Documentation

Symbolic keyboard input codes.

Default initialization:

  • KeySelect1
    Qt::Key_Return
  • KeySelect2
    Qt::Key_Space
  • KeyAbort
    Qt::Key_Escape
  • KeyLeft
    Qt::Key_Left
  • KeyRight
    Qt::Key_Right
  • KeyUp
    Qt::Key_Up
  • KeyDown
    Qt::Key_Down
  • KeyUndo
    Qt::Key_Minus
  • KeyRedo
    Qt::Key_Plus
  • KeyHome
    Qt::Key_Escape
Enumerator:
KeySelect1 
KeySelect2 
KeyAbort 
KeyLeft 
KeyRight 
KeyUp 
KeyDown 
KeyRedo 
KeyUndo 
KeyHome 
KeyPatternCount 

Definition at line 118 of file qwt_event_pattern.h.

Symbolic mouse input codes.

The default initialization for 3 button mice is:

  • MouseSelect1
    Qt::LeftButton
  • MouseSelect2
    Qt::RightButton
  • MouseSelect3
    Qt::MidButton
  • MouseSelect4
    Qt::LeftButton + Qt::ShiftButton
  • MouseSelect5
    Qt::RightButton + Qt::ShiftButton
  • MouseSelect6
    Qt::MidButton + Qt::ShiftButton

The default initialization for 2 button mice is:

  • MouseSelect1
    Qt::LeftButton
  • MouseSelect2
    Qt::RightButton
  • MouseSelect3
    Qt::LeftButton + Qt::AltButton
  • MouseSelect4
    Qt::LeftButton + Qt::ShiftButton
  • MouseSelect5
    Qt::RightButton + Qt::ShiftButton
  • MouseSelect6
    Qt::LeftButton + Qt::AltButton + Qt::ShiftButton

The default initialization for 1 button mice is:

  • MouseSelect1
    Qt::LeftButton
  • MouseSelect2
    Qt::LeftButton + Qt::ControlButton
  • MouseSelect3
    Qt::LeftButton + Qt::AltButton
  • MouseSelect4
    Qt::LeftButton + Qt::ShiftButton
  • MouseSelect5
    Qt::LeftButton + Qt::ControlButton + Qt::ShiftButton
  • MouseSelect6
    Qt::LeftButton + Qt::AltButton + Qt::ShiftButton
See also:
initMousePattern()
Enumerator:
MouseSelect1 
MouseSelect2 
MouseSelect3 
MouseSelect4 
MouseSelect5 
MouseSelect6 
MousePatternCount 

Definition at line 79 of file qwt_event_pattern.h.


Constructor & Destructor Documentation

QwtEventPattern::QwtEventPattern (  )

Constructor

See also:
MousePatternCode, KeyPatternCode

Definition at line 19 of file qwt_event_pattern.cpp.

References initKeyPattern(), and initMousePattern().

                                :
    d_mousePattern(MousePatternCount),
    d_keyPattern(KeyPatternCount)
{
    initKeyPattern();
    initMousePattern(3);
}
QwtEventPattern::~QwtEventPattern (  ) [virtual]

Destructor.

Definition at line 28 of file qwt_event_pattern.cpp.

{
}

Member Function Documentation

void QwtEventPattern::initKeyPattern (  )
void QwtEventPattern::initMousePattern ( int  numButtons )

Set default mouse patterns, depending on the number of mouse buttons

Parameters:
numButtonsNumber of mouse buttons ( <= 3 )
See also:
MousePatternCode

Definition at line 38 of file qwt_event_pattern.cpp.

References MousePatternCount, MouseSelect1, MouseSelect2, MouseSelect3, MouseSelect4, and setMousePattern().

Referenced by QwtEventPattern().

{
#if QT_VERSION < 0x040000
    const int altButton = Qt::AltButton;
    const int controlButton = Qt::ControlButton;
    const int shiftButton = Qt::ShiftButton;
#else
    const int altButton = Qt::AltModifier;
    const int controlButton = Qt::ControlModifier;
    const int shiftButton = Qt::ShiftModifier;
#endif

    d_mousePattern.resize(MousePatternCount);

    switch(numButtons)
    {
        case 1:
        {
            setMousePattern(MouseSelect1, Qt::LeftButton);
            setMousePattern(MouseSelect2, Qt::LeftButton, controlButton);
            setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
            break;
        }
        case 2:
        {
            setMousePattern(MouseSelect1, Qt::LeftButton);
            setMousePattern(MouseSelect2, Qt::RightButton);
            setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
            break;
        }
        default:
        {
            setMousePattern(MouseSelect1, Qt::LeftButton);
            setMousePattern(MouseSelect2, Qt::RightButton);
            setMousePattern(MouseSelect3, Qt::MidButton);
        }
    }
    for ( int i = 0; i < 3; i++ )
    {
        setMousePattern(MouseSelect4 + i, 
            d_mousePattern[MouseSelect1 + i].button,
            d_mousePattern[MouseSelect1 + i].state | shiftButton);
    }
}
bool QwtEventPattern::keyMatch ( uint  pattern,
const QKeyEvent *  e 
) const

Compare a key event with an event pattern.

A key event matches the pattern when both have the same key value and in the state value the same key flags (Qt::KeyButtonMask) are set.

Parameters:
patternIndex of the event pattern
eKey event
Returns:
true if matches
See also:
mouseMatch()

Definition at line 248 of file qwt_event_pattern.cpp.

Referenced by QwtPickerPolygonMachine::transition(), QwtPickerDragRectMachine::transition(), QwtPickerClickRectMachine::transition(), QwtPickerDragPointMachine::transition(), QwtPickerClickPointMachine::transition(), QwtPlotZoomer::widgetKeyPressEvent(), and QwtPicker::widgetKeyPressEvent().

{
    bool ok = false;

    if ( e && pattern < (uint)d_keyPattern.count() )
        ok = keyMatch(d_keyPattern[int(pattern)], e);

    return ok;
}
bool QwtEventPattern::keyMatch ( const KeyPattern pattern,
const QKeyEvent *  e 
) const [protected, virtual]

Compare a key event with an event pattern.

A key event matches the pattern when both have the same key value and in the state value the same key flags (Qt::KeyButtonMask) are set.

Parameters:
patternKey event pattern
eKey event
Returns:
true if matches
See also:
mouseMatch()

Definition at line 272 of file qwt_event_pattern.cpp.

References QwtEventPattern::KeyPattern::key, and QwtEventPattern::KeyPattern::state.

{
    if ( e->key() != pattern.key)
        return false;

    const bool matched =
#if QT_VERSION < 0x040000
        (e->state() & Qt::KeyButtonMask) == 
            (pattern.state & Qt::KeyButtonMask);
#else
        (e->modifiers() & Qt::KeyboardModifierMask) == 
            (int)(pattern.state & Qt::KeyboardModifierMask);
#endif

    return matched;
}
const QMemArray< QwtEventPattern::KeyPattern > & QwtEventPattern::keyPattern (  ) const

Return key patterns.

Definition at line 163 of file qwt_event_pattern.cpp.

{
    return d_keyPattern;
}
QMemArray< QwtEventPattern::KeyPattern > & QwtEventPattern::keyPattern (  )

Return Key patterns.

Definition at line 175 of file qwt_event_pattern.cpp.

{
    return d_keyPattern;
}
bool QwtEventPattern::mouseMatch ( uint  pattern,
const QMouseEvent *  e 
) const

Compare a mouse event with an event pattern.

A mouse event matches the pattern when both have the same button value and in the state value the same key flags(Qt::KeyButtonMask) are set.

Parameters:
patternIndex of the event pattern
eMouse event
Returns:
true if matches
See also:
keyMatch()

Definition at line 193 of file qwt_event_pattern.cpp.

Referenced by QwtPickerPolygonMachine::transition(), QwtPickerDragRectMachine::transition(), QwtPickerClickRectMachine::transition(), QwtPickerDragPointMachine::transition(), QwtPickerClickPointMachine::transition(), and QwtPlotZoomer::widgetMouseReleaseEvent().

{
    bool ok = false;

    if ( e && pattern < (uint)d_mousePattern.count() )
        ok = mouseMatch(d_mousePattern[int(pattern)], e);

    return ok;
}
bool QwtEventPattern::mouseMatch ( const MousePattern pattern,
const QMouseEvent *  e 
) const [protected, virtual]

Compare a mouse event with an event pattern.

A mouse event matches the pattern when both have the same button value and in the state value the same key flags(Qt::KeyButtonMask) are set.

Parameters:
patternMouse event pattern
eMouse event
Returns:
true if matches
See also:
keyMatch()

Definition at line 217 of file qwt_event_pattern.cpp.

References QwtEventPattern::MousePattern::button, and QwtEventPattern::MousePattern::state.

{
    if ( e->button() != pattern.button )
        return false;

    const bool matched =
#if QT_VERSION < 0x040000
        (e->state() & Qt::KeyButtonMask) == 
            (pattern.state & Qt::KeyButtonMask);
#else
        (e->modifiers() & Qt::KeyboardModifierMask) == 
            (int)(pattern.state & Qt::KeyboardModifierMask);
#endif

    return matched;
}
QMemArray< QwtEventPattern::MousePattern > & QwtEventPattern::mousePattern (  )

Return ,ouse patterns.

Definition at line 169 of file qwt_event_pattern.cpp.

{
    return d_mousePattern;
}
const QMemArray< QwtEventPattern::MousePattern > & QwtEventPattern::mousePattern (  ) const

Return mouse patterns.

Definition at line 156 of file qwt_event_pattern.cpp.

{
    return d_mousePattern;
}
void QwtEventPattern::setKeyPattern ( uint  pattern,
int  key,
int  state = Qt::NoButton 
)

Change one key pattern

Parameters:
patternIndex of the pattern
keyKey
stateState
See also:
QKeyEvent

Definition at line 133 of file qwt_event_pattern.cpp.

References int().

Referenced by initKeyPattern().

{
    if ( pattern < (uint)d_keyPattern.count() )
    {
        d_keyPattern[int(pattern)].key = key;
        d_keyPattern[int(pattern)].state = state;
    }
}
void QwtEventPattern::setKeyPattern ( const QMemArray< KeyPattern > &  pattern )

Change the key event patterns.

Definition at line 149 of file qwt_event_pattern.cpp.

{
    d_keyPattern = pattern;
}
void QwtEventPattern::setMousePattern ( uint  pattern,
int  button,
int  state = Qt::NoButton 
)

Change one mouse pattern

Parameters:
patternIndex of the pattern
buttonButton
stateState
See also:
QMouseEvent

Definition at line 115 of file qwt_event_pattern.cpp.

References int().

Referenced by initMousePattern().

{
    if ( pattern < (uint)d_mousePattern.count() )
    {
        d_mousePattern[int(pattern)].button = button;
        d_mousePattern[int(pattern)].state = state;
    }
}
void QwtEventPattern::setMousePattern ( const QMemArray< MousePattern > &  pattern )

Change the mouse event patterns.

Definition at line 143 of file qwt_event_pattern.cpp.

{
    d_mousePattern = pattern;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines