1
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
3
* Copyright (C) 1997 Josef Wilgen
4
* Copyright (C) 2002 Uwe Rathmann
6
* This library is free software; you can redistribute it and/or
7
* modify it under the terms of the Qwt License, Version 1.0
8
*****************************************************************************/
11
#include "qwt_event_pattern.h"
16
\sa MousePatternCode, KeyPatternCode
19
QwtEventPattern::QwtEventPattern():
20
d_mousePattern(MousePatternCount),
21
d_keyPattern(KeyPatternCount)
28
QwtEventPattern::~QwtEventPattern()
33
Set default mouse patterns, depending on the number of mouse buttons
35
\param numButtons Number of mouse buttons ( <= 3 )
38
void QwtEventPattern::initMousePattern(int numButtons)
40
#if QT_VERSION < 0x040000
41
const int altButton = Qt::AltButton;
42
const int controlButton = Qt::ControlButton;
43
const int shiftButton = Qt::ShiftButton;
45
const int altButton = Qt::AltModifier;
46
const int controlButton = Qt::ControlModifier;
47
const int shiftButton = Qt::ShiftModifier;
50
d_mousePattern.resize(MousePatternCount);
56
setMousePattern(MouseSelect1, Qt::LeftButton);
57
setMousePattern(MouseSelect2, Qt::LeftButton, controlButton);
58
setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
63
setMousePattern(MouseSelect1, Qt::LeftButton);
64
setMousePattern(MouseSelect2, Qt::RightButton);
65
setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
70
setMousePattern(MouseSelect1, Qt::LeftButton);
71
setMousePattern(MouseSelect2, Qt::RightButton);
72
setMousePattern(MouseSelect3, Qt::MidButton);
75
for ( int i = 0; i < 3; i++ )
77
setMousePattern(MouseSelect4 + i,
78
d_mousePattern[MouseSelect1 + i].button,
79
d_mousePattern[MouseSelect1 + i].state | shiftButton);
84
Set default mouse patterns.
88
void QwtEventPattern::initKeyPattern()
90
d_keyPattern.resize(KeyPatternCount);
92
setKeyPattern(KeySelect1, Qt::Key_Return);
93
setKeyPattern(KeySelect2, Qt::Key_Space);
94
setKeyPattern(KeyAbort, Qt::Key_Escape);
96
setKeyPattern(KeyLeft, Qt::Key_Left);
97
setKeyPattern(KeyRight, Qt::Key_Right);
98
setKeyPattern(KeyUp, Qt::Key_Up);
99
setKeyPattern(KeyDown, Qt::Key_Down);
101
setKeyPattern(KeyRedo, Qt::Key_Plus);
102
setKeyPattern(KeyUndo, Qt::Key_Minus);
103
setKeyPattern(KeyHome, Qt::Key_Escape);
107
Change one mouse pattern
109
\param pattern Index of the pattern
115
void QwtEventPattern::setMousePattern(uint pattern, int button, int state)
117
if ( pattern < (uint)d_mousePattern.count() )
119
d_mousePattern[int(pattern)].button = button;
120
d_mousePattern[int(pattern)].state = state;
125
Change one key pattern
127
\param pattern Index of the pattern
133
void QwtEventPattern::setKeyPattern(uint pattern, int key, int state)
135
if ( pattern < (uint)d_keyPattern.count() )
137
d_keyPattern[int(pattern)].key = key;
138
d_keyPattern[int(pattern)].state = state;
142
//! Change the mouse event patterns
143
void QwtEventPattern::setMousePattern(const QwtArray<MousePattern> &pattern)
145
d_mousePattern = pattern;
148
//! Change the key event patterns
149
void QwtEventPattern::setKeyPattern(const QwtArray<KeyPattern> &pattern)
151
d_keyPattern = pattern;
154
//! Return mouse patterns
155
const QwtArray<QwtEventPattern::MousePattern> &
156
QwtEventPattern::mousePattern() const
158
return d_mousePattern;
161
//! Return key patterns
162
const QwtArray<QwtEventPattern::KeyPattern> &
163
QwtEventPattern::keyPattern() const
168
//! Return ,ouse patterns
169
QwtArray<QwtEventPattern::MousePattern> &QwtEventPattern::mousePattern()
171
return d_mousePattern;
174
//! Return Key patterns
175
QwtArray<QwtEventPattern::KeyPattern> &QwtEventPattern::keyPattern()
181
\brief Compare a mouse event with an event pattern.
183
A mouse event matches the pattern when both have the same button
184
value and in the state value the same key flags(Qt::KeyButtonMask)
187
\param pattern Index of the event pattern
189
\return true if matches
193
bool QwtEventPattern::mouseMatch(uint pattern, const QMouseEvent *e) const
197
if ( e && pattern < (uint)d_mousePattern.count() )
198
ok = mouseMatch(d_mousePattern[int(pattern)], e);
204
\brief Compare a mouse event with an event pattern.
206
A mouse event matches the pattern when both have the same button
207
value and in the state value the same key flags(Qt::KeyButtonMask)
210
\param pattern Mouse event pattern
212
\return true if matches
217
bool QwtEventPattern::mouseMatch(const MousePattern &pattern,
218
const QMouseEvent *e) const
220
if ( e->button() != pattern.button )
224
#if QT_VERSION < 0x040000
225
(e->state() & Qt::KeyButtonMask) ==
226
(pattern.state & Qt::KeyButtonMask);
228
(e->modifiers() & Qt::KeyboardModifierMask) ==
229
(int)(pattern.state & Qt::KeyboardModifierMask);
236
\brief Compare a key event with an event pattern.
238
A key event matches the pattern when both have the same key
239
value and in the state value the same key flags (Qt::KeyButtonMask)
242
\param pattern Index of the event pattern
244
\return true if matches
248
bool QwtEventPattern::keyMatch(uint pattern, const QKeyEvent *e) const
252
if ( e && pattern < (uint)d_keyPattern.count() )
253
ok = keyMatch(d_keyPattern[int(pattern)], e);
259
\brief Compare a key event with an event pattern.
261
A key event matches the pattern when both have the same key
262
value and in the state value the same key flags (Qt::KeyButtonMask)
265
\param pattern Key event pattern
267
\return true if matches
272
bool QwtEventPattern::keyMatch(
273
const KeyPattern &pattern, const QKeyEvent *e) const
275
if ( e->key() != pattern.key)
279
#if QT_VERSION < 0x040000
280
(e->state() & Qt::KeyButtonMask) ==
281
(pattern.state & Qt::KeyButtonMask);
283
(e->modifiers() & Qt::KeyboardModifierMask) ==
284
(int)(pattern.state & Qt::KeyboardModifierMask);