00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#include <qevent.h>
00011
#include "qwt_event_pattern.h"
00012
#include "qwt_picker_machine.h"
00013
00015 QwtPickerMachine::QwtPickerMachine():
00016 d_state(0)
00017 {
00018 }
00019
00021 QwtPickerMachine::~QwtPickerMachine()
00022 {
00023 }
00024
00026 int QwtPickerMachine::state()
const
00027
{
00028
return d_state;
00029 }
00030
00032 void QwtPickerMachine::setState(
int state)
00033 {
00034 d_state = state;
00035 }
00036
00038 void QwtPickerMachine::reset()
00039 {
00040
setState(0);
00041 }
00042
00044 QValueList<QwtPickerMachine::Command>
QwtPickerClickPointMachine::transition(
00045
const QwtEventPattern &eventPattern,
const QEvent *e)
00046 {
00047 QValueList<QwtPickerMachine::Command> cmdList;
00048
00049
switch(e->type())
00050 {
00051
case QEvent::MouseButtonPress:
00052 {
00053
if ( eventPattern.
mouseMatch(
00054 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00055 {
00056 cmdList += Begin;
00057 cmdList += Append;
00058 cmdList += End;
00059 }
00060
break;
00061 }
00062
case QEvent::KeyPress:
00063 {
00064
if ( eventPattern.
keyMatch(
00065 QwtEventPattern::KeySelect1, (
const QKeyEvent *)e) )
00066 {
00067 cmdList += Begin;
00068 cmdList += Append;
00069 cmdList += End;
00070 }
00071
break;
00072 }
00073
default:
00074
break;
00075 }
00076
00077
return cmdList;
00078 }
00079
00081 QValueList<QwtPickerMachine::Command>
QwtPickerDragPointMachine::transition(
00082
const QwtEventPattern &eventPattern,
const QEvent *e)
00083 {
00084 QValueList<QwtPickerMachine::Command> cmdList;
00085
00086
switch(e->type())
00087 {
00088
case QEvent::MouseButtonPress:
00089 {
00090
if ( eventPattern.
mouseMatch(
00091 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00092 {
00093
if (
state() == 0 )
00094 {
00095 cmdList += Begin;
00096 cmdList += Append;
00097
setState(1);
00098 }
00099 }
00100
break;
00101 }
00102
case QEvent::MouseMove:
00103
case QEvent::Wheel:
00104 {
00105
if (
state() != 0 )
00106 cmdList += Move;
00107
break;
00108 }
00109
case QEvent::MouseButtonRelease:
00110 {
00111
if (
state() != 0 )
00112 {
00113 cmdList += End;
00114
setState(0);
00115 }
00116
break;
00117 }
00118
case QEvent::KeyPress:
00119 {
00120
if ( eventPattern.
keyMatch(
00121 QwtEventPattern::KeySelect1, (
const QKeyEvent *)e) )
00122 {
00123
if (
state() == 0 )
00124 {
00125 cmdList += Begin;
00126 cmdList += Append;
00127
setState(1);
00128 }
00129
else
00130 {
00131 cmdList += End;
00132
setState(0);
00133 }
00134 }
00135
break;
00136 }
00137
default:
00138
break;
00139 }
00140
00141
return cmdList;
00142 }
00143
00145 QValueList<QwtPickerMachine::Command>
QwtPickerClickRectMachine::transition(
00146
const QwtEventPattern &eventPattern,
const QEvent *e)
00147 {
00148 QValueList<QwtPickerMachine::Command> cmdList;
00149
00150
switch(e->type())
00151 {
00152
case QEvent::MouseButtonPress:
00153 {
00154
if ( eventPattern.
mouseMatch(
00155 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00156 {
00157
switch(
state())
00158 {
00159
case 0:
00160 {
00161 cmdList += Begin;
00162 cmdList += Append;
00163
setState(1);
00164
break;
00165 }
00166
case 1:
00167 {
00168
00169
break;
00170 }
00171
default:
00172 {
00173 cmdList += End;
00174
setState(0);
00175 }
00176 }
00177 }
00178 }
00179
case QEvent::MouseMove:
00180
case QEvent::Wheel:
00181 {
00182
if (
state() != 0 )
00183 cmdList += Move;
00184
break;
00185 }
00186
case QEvent::MouseButtonRelease:
00187 {
00188
if ( eventPattern.
mouseMatch(
00189 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00190 {
00191
if (
state() == 1 )
00192 {
00193 cmdList += Append;
00194
setState(2);
00195 }
00196 }
00197
break;
00198 }
00199
case QEvent::KeyPress:
00200 {
00201
if ( eventPattern.
keyMatch(
00202 QwtEventPattern::KeySelect1, (
const QKeyEvent *)e) )
00203 {
00204
if (
state() == 0 )
00205 {
00206 cmdList += Begin;
00207 cmdList += Append;
00208
setState(1);
00209 }
00210
else
00211 {
00212
if (
state() == 1 )
00213 {
00214 cmdList += Append;
00215
setState(2);
00216 }
00217
else if (
state() == 2 )
00218 {
00219 cmdList += End;
00220
setState(0);
00221 }
00222 }
00223 }
00224
break;
00225 }
00226
default:
00227
break;
00228 }
00229
00230
return cmdList;
00231 }
00232
00234 QValueList<QwtPickerMachine::Command>
QwtPickerDragRectMachine::transition(
00235
const QwtEventPattern &eventPattern,
const QEvent *e)
00236 {
00237 QValueList<QwtPickerMachine::Command> cmdList;
00238
00239
switch(e->type())
00240 {
00241
case QEvent::MouseButtonPress:
00242 {
00243
if ( eventPattern.
mouseMatch(
00244 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00245 {
00246
if (
state() == 0 )
00247 {
00248 cmdList += Begin;
00249 cmdList += Append;
00250 cmdList += Append;
00251
setState(2);
00252 }
00253 }
00254
break;
00255 }
00256
case QEvent::MouseMove:
00257
case QEvent::Wheel:
00258 {
00259
if (
state() != 0 )
00260 cmdList += Move;
00261
break;
00262 }
00263
case QEvent::MouseButtonRelease:
00264 {
00265
if (
state() == 2 )
00266 {
00267 cmdList += End;
00268
setState(0);
00269 }
00270
break;
00271 }
00272
case QEvent::KeyPress:
00273 {
00274
if ( eventPattern.
keyMatch(
00275 QwtEventPattern::KeySelect1, (
const QKeyEvent *)e) )
00276 {
00277
if (
state() == 0 )
00278 {
00279 cmdList += Begin;
00280 cmdList += Append;
00281 cmdList += Append;
00282
setState(2);
00283 }
00284
else
00285 {
00286 cmdList += End;
00287
setState(0);
00288 }
00289 }
00290
break;
00291 }
00292
default:
00293
break;
00294 }
00295
00296
return cmdList;
00297 }
00298
00300 QValueList<QwtPickerMachine::Command>
QwtPickerPolygonMachine::transition(
00301
const QwtEventPattern &eventPattern,
const QEvent *e)
00302 {
00303 QValueList<QwtPickerMachine::Command> cmdList;
00304
00305
switch(e->type())
00306 {
00307
case QEvent::MouseButtonPress:
00308 {
00309
if ( eventPattern.
mouseMatch(
00310 QwtEventPattern::MouseSelect1, (
const QMouseEvent *)e) )
00311 {
00312
if (
state() == 0)
00313 {
00314 cmdList += Begin;
00315 cmdList += Append;
00316 cmdList += Append;
00317
setState(1);
00318 }
00319
else
00320 {
00321 cmdList += End;
00322
setState(0);
00323 }
00324 }
00325
if ( eventPattern.
mouseMatch(
00326 QwtEventPattern::MouseSelect2, (
const QMouseEvent *)e) )
00327 {
00328
if (
state() == 1)
00329 cmdList += Append;
00330 }
00331
break;
00332 }
00333
case QEvent::MouseMove:
00334
case QEvent::Wheel:
00335 {
00336
if (
state() != 0 )
00337 cmdList += Move;
00338
break;
00339 }
00340
case QEvent::KeyPress:
00341 {
00342
if ( eventPattern.
keyMatch(
00343 QwtEventPattern::KeySelect1, (
const QKeyEvent *)e) )
00344 {
00345
if (
state() == 0 )
00346 {
00347 cmdList += Begin;
00348 cmdList += Append;
00349 cmdList += Append;
00350
setState(1);
00351 }
00352
else
00353 {
00354 cmdList += End;
00355
setState(0);
00356 }
00357 }
00358
else if ( eventPattern.
keyMatch(
00359 QwtEventPattern::KeySelect2, (
const QKeyEvent *)e) )
00360 {
00361
if (
state() == 1 )
00362 cmdList += Append;
00363 }
00364
break;
00365 }
00366
default:
00367
break;
00368 }
00369
00370
return cmdList;
00371 }