source: ntrip/trunk/BNC/qwt/qwt_event_pattern.cpp @ 8127

Last change on this file since 8127 was 8127, checked in by stoecker, 2 years ago

update qwt and qwtpolar, many QT5 fixes (unfinished)

File size: 6.6 KB
Line 
1/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2 * Qwt Widget Library
3 * Copyright (C) 1997   Josef Wilgen
4 * Copyright (C) 2002   Uwe Rathmann
5 *
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 *****************************************************************************/
9
10#include "qwt_event_pattern.h"
11#include <qevent.h>
12
13/*!
14  Constructor
15
16  \sa MousePatternCode, KeyPatternCode
17*/
18
19QwtEventPattern::QwtEventPattern():
20    d_mousePattern( MousePatternCount ),
21    d_keyPattern( KeyPatternCount )
22{
23    initKeyPattern();
24    initMousePattern( 3 );
25}
26
27//! Destructor
28QwtEventPattern::~QwtEventPattern()
29{
30}
31
32/*!
33  Set default mouse patterns, depending on the number of mouse buttons
34
35  \param numButtons Number of mouse buttons ( <= 3 )
36  \sa MousePatternCode
37*/
38void QwtEventPattern::initMousePattern( int numButtons )
39{
40    d_mousePattern.resize( MousePatternCount );
41
42    switch ( numButtons )
43    {
44        case 1:
45        {
46            setMousePattern( MouseSelect1, Qt::LeftButton );
47            setMousePattern( MouseSelect2, Qt::LeftButton, Qt::ControlModifier );
48            setMousePattern( MouseSelect3, Qt::LeftButton, Qt::AltModifier );
49            break;
50        }
51        case 2:
52        {
53            setMousePattern( MouseSelect1, Qt::LeftButton );
54            setMousePattern( MouseSelect2, Qt::RightButton );
55            setMousePattern( MouseSelect3, Qt::LeftButton, Qt::AltModifier );
56            break;
57        }
58        default:
59        {
60            setMousePattern( MouseSelect1, Qt::LeftButton );
61            setMousePattern( MouseSelect2, Qt::RightButton );
62            setMousePattern( MouseSelect3, Qt::MidButton );
63        }
64    }
65
66    setMousePattern( MouseSelect4, d_mousePattern[MouseSelect1].button,
67        d_mousePattern[MouseSelect1].modifiers | Qt::ShiftModifier );
68
69    setMousePattern( MouseSelect5, d_mousePattern[MouseSelect2].button,
70        d_mousePattern[MouseSelect2].modifiers | Qt::ShiftModifier );
71
72    setMousePattern( MouseSelect6, d_mousePattern[MouseSelect3].button,
73        d_mousePattern[MouseSelect3].modifiers | Qt::ShiftModifier );
74}
75
76/*!
77  Set default mouse patterns.
78
79  \sa KeyPatternCode
80*/
81void QwtEventPattern::initKeyPattern()
82{
83    d_keyPattern.resize( KeyPatternCount );
84
85    setKeyPattern( KeySelect1, Qt::Key_Return );
86    setKeyPattern( KeySelect2, Qt::Key_Space );
87    setKeyPattern( KeyAbort, Qt::Key_Escape );
88
89    setKeyPattern( KeyLeft, Qt::Key_Left );
90    setKeyPattern( KeyRight, Qt::Key_Right );
91    setKeyPattern( KeyUp, Qt::Key_Up );
92    setKeyPattern( KeyDown, Qt::Key_Down );
93
94    setKeyPattern( KeyRedo, Qt::Key_Plus );
95    setKeyPattern( KeyUndo, Qt::Key_Minus );
96    setKeyPattern( KeyHome, Qt::Key_Escape );
97}
98
99/*!
100  Change one mouse pattern
101
102  \param pattern Index of the pattern
103  \param button Button
104  \param modifiers Keyboard modifiers
105
106  \sa QMouseEvent
107*/
108void QwtEventPattern::setMousePattern( MousePatternCode pattern, 
109    Qt::MouseButton button, Qt::KeyboardModifiers modifiers )
110{
111    if ( pattern >= 0 && pattern < MousePatternCount )
112    {
113        d_mousePattern[ pattern ].button = button;
114        d_mousePattern[ pattern ].modifiers = modifiers;
115    }
116}
117
118/*!
119  Change one key pattern
120
121  \param pattern Index of the pattern
122  \param key Key
123  \param modifiers Keyboard modifiers
124
125  \sa QKeyEvent
126*/
127void QwtEventPattern::setKeyPattern( KeyPatternCode pattern, 
128    int key, Qt::KeyboardModifiers modifiers )
129{
130    if ( pattern >= 0 && pattern < KeyPatternCount )
131    {
132        d_keyPattern[ pattern ].key = key;
133        d_keyPattern[ pattern ].modifiers = modifiers;
134    }
135}
136
137//! Change the mouse event patterns
138void QwtEventPattern::setMousePattern( const QVector<MousePattern> &pattern )
139{
140    d_mousePattern = pattern;
141}
142
143//! Change the key event patterns
144void QwtEventPattern::setKeyPattern( const QVector<KeyPattern> &pattern )
145{
146    d_keyPattern = pattern;
147}
148
149//! \return Mouse pattern
150const QVector<QwtEventPattern::MousePattern> &
151QwtEventPattern::mousePattern() const
152{
153    return d_mousePattern;
154}
155
156//! \return Key pattern
157const QVector<QwtEventPattern::KeyPattern> &
158QwtEventPattern::keyPattern() const
159{
160    return d_keyPattern;
161}
162
163//! \return Mouse pattern
164QVector<QwtEventPattern::MousePattern> &QwtEventPattern::mousePattern()
165{
166    return d_mousePattern;
167}
168
169//! \return Key pattern
170QVector<QwtEventPattern::KeyPattern> &QwtEventPattern::keyPattern()
171{
172    return d_keyPattern;
173}
174
175/*!
176  \brief Compare a mouse event with an event pattern.
177
178  A mouse event matches the pattern when both have the same button
179  value and in the state value the same key flags(Qt::KeyButtonMask)
180  are set.
181
182  \param code Index of the event pattern
183  \param event Mouse event
184  \return true if matches
185
186  \sa keyMatch()
187*/
188bool QwtEventPattern::mouseMatch( MousePatternCode code, 
189    const QMouseEvent *event ) const
190{
191    if ( code >= 0 && code < MousePatternCount )
192        return mouseMatch( d_mousePattern[ code ], event );
193
194    return false;
195}
196
197/*!
198  \brief Compare a mouse event with an event pattern.
199
200  A mouse event matches the pattern when both have the same button
201  value and in the state value the same key flags(Qt::KeyButtonMask)
202  are set.
203
204  \param pattern Mouse event pattern
205  \param event Mouse event
206  \return true if matches
207
208  \sa keyMatch()
209*/
210
211bool QwtEventPattern::mouseMatch( const MousePattern &pattern,
212    const QMouseEvent *event ) const
213{
214    if ( event == NULL )
215        return false;
216
217    const MousePattern mousePattern( event->button(), event->modifiers() );
218    return mousePattern == pattern;
219}
220
221/*!
222  \brief Compare a key event with an event pattern.
223
224  A key event matches the pattern when both have the same key
225  value and in the state value the same key flags (Qt::KeyButtonMask)
226  are set.
227
228  \param code Index of the event pattern
229  \param event Key event
230  \return true if matches
231
232  \sa mouseMatch()
233*/
234bool QwtEventPattern::keyMatch( KeyPatternCode code, 
235    const QKeyEvent *event ) const
236{
237    if ( code >= 0 && code < KeyPatternCount )
238        return keyMatch( d_keyPattern[ code ], event );
239
240    return false;
241}
242
243/*!
244  \brief Compare a key event with an event pattern.
245
246  A key event matches the pattern when both have the same key
247  value and in the state value the same key flags (Qt::KeyButtonMask)
248  are set.
249
250  \param pattern Key event pattern
251  \param event Key event
252  \return true if matches
253
254  \sa mouseMatch()
255*/
256
257bool QwtEventPattern::keyMatch(
258    const KeyPattern &pattern, const QKeyEvent *event ) const
259{
260    if ( event == NULL )
261        return false;
262
263    const KeyPattern keyPattern( event->key(), event->modifiers() );
264    return keyPattern == pattern;
265}
Note: See TracBrowser for help on using the repository browser.