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