00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_EVENT_PATTERN
00011 #define QWT_EVENT_PATTERN 1
00012
00013 #include "qwt_global.h"
00014 #include <qnamespace.h>
00015 #include <qvector.h>
00016
00017 class QMouseEvent;
00018 class QKeyEvent;
00019
00029 class QWT_EXPORT QwtEventPattern
00030 {
00031 public:
00080 enum MousePatternCode
00081 {
00082 MouseSelect1,
00083 MouseSelect2,
00084 MouseSelect3,
00085 MouseSelect4,
00086 MouseSelect5,
00087 MouseSelect6,
00088
00089 MousePatternCount
00090 };
00091
00119 enum KeyPatternCode
00120 {
00121 KeySelect1,
00122 KeySelect2,
00123 KeyAbort,
00124
00125 KeyLeft,
00126 KeyRight,
00127 KeyUp,
00128 KeyDown,
00129
00130 KeyRedo,
00131 KeyUndo,
00132 KeyHome,
00133
00134 KeyPatternCount
00135 };
00136
00138 class MousePattern
00139 {
00140 public:
00142 MousePattern( int btn = Qt::NoButton, int st = Qt::NoButton )
00143 {
00144 button = btn;
00145 state = st;
00146 }
00147
00149 int button;
00150
00152 int state;
00153 };
00154
00156 class KeyPattern
00157 {
00158 public:
00160 KeyPattern( int k = 0, int st = Qt::NoButton )
00161 {
00162 key = k;
00163 state = st;
00164 }
00165
00167 int key;
00168
00170 int state;
00171 };
00172
00173 QwtEventPattern();
00174 virtual ~QwtEventPattern();
00175
00176 void initMousePattern( int numButtons );
00177 void initKeyPattern();
00178
00179 void setMousePattern( uint pattern, int button, int state = Qt::NoButton );
00180 void setKeyPattern( uint pattern, int key, int state = Qt::NoButton );
00181
00182 void setMousePattern( const QVector<MousePattern> & );
00183 void setKeyPattern( const QVector<KeyPattern> & );
00184
00185 const QVector<MousePattern> &mousePattern() const;
00186 const QVector<KeyPattern> &keyPattern() const;
00187
00188 QVector<MousePattern> &mousePattern();
00189 QVector<KeyPattern> &keyPattern();
00190
00191 bool mouseMatch( uint pattern, const QMouseEvent * ) const;
00192 bool keyMatch( uint pattern, const QKeyEvent * ) const;
00193
00194 protected:
00195 virtual bool mouseMatch( const MousePattern &, const QMouseEvent * ) const;
00196 virtual bool keyMatch( const KeyPattern &, const QKeyEvent * ) const;
00197
00198 private:
00199
00200 #if defined(_MSC_VER)
00201 #pragma warning(push)
00202 #pragma warning(disable: 4251)
00203 #endif
00204 QVector<MousePattern> d_mousePattern;
00205 QVector<KeyPattern> d_keyPattern;
00206 #if defined(_MSC_VER)
00207 #pragma warning(pop)
00208 #endif
00209 };
00210
00212 inline bool operator==( QwtEventPattern::MousePattern b1,
00213 QwtEventPattern::MousePattern b2 )
00214 {
00215 return b1.button == b2.button && b1.state == b2.state;
00216 }
00217
00219 inline bool operator==( QwtEventPattern::KeyPattern b1,
00220 QwtEventPattern::KeyPattern b2 )
00221 {
00222 return b1.key == b2.key && b1.state == b2.state;
00223 }
00224
00225 #endif