Qwt User's Guide  5.2.3
qwt_event_pattern.h
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 #ifndef QWT_EVENT_PATTERN
11 #define QWT_EVENT_PATTERN 1
12 
13 #include <qnamespace.h>
14 #include "qwt_array.h"
15 
16 class QMouseEvent;
17 class QKeyEvent;
18 
28 class QWT_EXPORT QwtEventPattern
29 {
30 public:
80  {
81  MouseSelect1,
82  MouseSelect2,
83  MouseSelect3,
84  MouseSelect4,
85  MouseSelect5,
86  MouseSelect6,
87 
88  MousePatternCount
89  };
90 
119  {
120  KeySelect1,
121  KeySelect2,
122  KeyAbort,
123 
124  KeyLeft,
125  KeyRight,
126  KeyUp,
127  KeyDown,
128 
129  KeyRedo,
130  KeyUndo,
131  KeyHome,
132 
133  KeyPatternCount
134  };
135 
138  {
139  public:
140  MousePattern(int btn = Qt::NoButton, int st = Qt::NoButton)
141  {
142  button = btn;
143  state = st;
144  }
145 
146  int button;
147  int state;
148  };
149 
152  {
153  public:
154  KeyPattern(int k = 0, int st = Qt::NoButton)
155  {
156  key = k;
157  state = st;
158  }
159 
160  int key;
161  int state;
162  };
163 
164  QwtEventPattern();
165  virtual ~QwtEventPattern();
166 
167  void initMousePattern(int numButtons);
168  void initKeyPattern();
169 
170  void setMousePattern(uint pattern, int button, int state = Qt::NoButton);
171  void setKeyPattern(uint pattern, int key, int state = Qt::NoButton);
172 
173  void setMousePattern(const QwtArray<MousePattern> &);
174  void setKeyPattern(const QwtArray<KeyPattern> &);
175 
176  const QwtArray<MousePattern> &mousePattern() const;
177  const QwtArray<KeyPattern> &keyPattern() const;
178 
179  QwtArray<MousePattern> &mousePattern();
180  QwtArray<KeyPattern> &keyPattern();
181 
182  bool mouseMatch(uint pattern, const QMouseEvent *) const;
183  bool keyMatch(uint pattern, const QKeyEvent *) const;
184 
185 protected:
186  virtual bool mouseMatch(const MousePattern &, const QMouseEvent *) const;
187  virtual bool keyMatch(const KeyPattern &, const QKeyEvent *) const;
188 
189 private:
190 
191 #if defined(_MSC_VER)
192 #pragma warning(push)
193 #pragma warning(disable: 4251)
194 #endif
195  QwtArray<MousePattern> d_mousePattern;
196  QwtArray<KeyPattern> d_keyPattern;
197 #if defined(_MSC_VER)
198 #pragma warning(pop)
199 #endif
200 };
201 
202 inline bool operator==(QwtEventPattern::MousePattern b1,
204 {
205  return b1.button == b2.button && b1.state == b2.state;
206 }
207 
208 inline bool operator==(QwtEventPattern::KeyPattern b1,
210 {
211  return b1.key == b2.key && b1.state == b2.state;
212 }
213 
214 #if defined(QWT_TEMPLATEDLL)
215 // MOC_SKIP_BEGIN
216 template class QWT_EXPORT QwtArray<QwtEventPattern::MousePattern>;
217 template class QWT_EXPORT QwtArray<QwtEventPattern::KeyPattern>;
218 // MOC_SKIP_END
219 #endif
220 
221 #endif