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