You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
309 lines
0 B
309 lines
0 B
15 years ago
|
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
|
||
|
* Qwt Widget Library
|
||
|
* Copyright (C) 1997 Josef Wilgen
|
||
|
* Copyright (C) 2002 Uwe Rathmann
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the Qwt License, Version 1.0
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#include <qevent.h>
|
||
|
#include "qwt_event_pattern.h"
|
||
|
#include "qwt_picker_machine.h"
|
||
|
|
||
|
//! Constructor
|
||
|
QwtPickerMachine::QwtPickerMachine():
|
||
|
d_state(0)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//! Destructor
|
||
|
QwtPickerMachine::~QwtPickerMachine()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//! Return the current state
|
||
|
int QwtPickerMachine::state() const
|
||
|
{
|
||
|
return d_state;
|
||
|
}
|
||
|
|
||
|
//! Change the current state
|
||
|
void QwtPickerMachine::setState(int state)
|
||
|
{
|
||
|
d_state = state;
|
||
|
}
|
||
|
|
||
|
//! Set the current state to 0.
|
||
14 years ago
|
void QwtPickerMachine::reset()
|
||
15 years ago
|
{
|
||
|
setState(0);
|
||
|
}
|
||
|
|
||
|
//! Transition
|
||
|
QwtPickerMachine::CommandList QwtPickerClickPointMachine::transition(
|
||
|
const QwtEventPattern &eventPattern, const QEvent *e)
|
||
14 years ago
|
{
|
||
15 years ago
|
QwtPickerMachine::CommandList cmdList;
|
||
|
|
||
14 years ago
|
switch(e->type()) {
|
||
|
case QEvent::MouseButtonPress: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += End;
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::KeyPress: {
|
||
|
if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect1, (const QKeyEvent *)e) ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += End;
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
15 years ago
|
}
|
||
|
|
||
|
return cmdList;
|
||
|
}
|
||
|
|
||
|
//! Transition
|
||
|
QwtPickerMachine::CommandList QwtPickerDragPointMachine::transition(
|
||
|
const QwtEventPattern &eventPattern, const QEvent *e)
|
||
14 years ago
|
{
|
||
15 years ago
|
QwtPickerMachine::CommandList cmdList;
|
||
|
|
||
14 years ago
|
switch(e->type()) {
|
||
|
case QEvent::MouseButtonPress: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
15 years ago
|
}
|
||
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::MouseMove:
|
||
|
case QEvent::Wheel: {
|
||
|
if ( state() != 0 )
|
||
|
cmdList += Move;
|
||
|
break;
|
||
|
}
|
||
|
case QEvent::MouseButtonRelease: {
|
||
|
if ( state() != 0 ) {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::KeyPress: {
|
||
|
if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect1, (const QKeyEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
|
} else {
|
||
15 years ago
|
cmdList += End;
|
||
|
setState(0);
|
||
|
}
|
||
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
15 years ago
|
}
|
||
|
|
||
|
return cmdList;
|
||
|
}
|
||
|
|
||
|
//! Transition
|
||
|
QwtPickerMachine::CommandList QwtPickerClickRectMachine::transition(
|
||
|
const QwtEventPattern &eventPattern, const QEvent *e)
|
||
14 years ago
|
{
|
||
15 years ago
|
QwtPickerMachine::CommandList cmdList;
|
||
|
|
||
14 years ago
|
switch(e->type()) {
|
||
|
case QEvent::MouseButtonPress: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
switch(state()) {
|
||
|
case 0: {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
|
break;
|
||
|
}
|
||
|
case 1: {
|
||
|
// Uh, strange we missed the MouseButtonRelease
|
||
|
break;
|
||
|
}
|
||
|
default: {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
|
}
|
||
15 years ago
|
}
|
||
|
}
|
||
14 years ago
|
}
|
||
|
case QEvent::MouseMove:
|
||
|
case QEvent::Wheel: {
|
||
|
if ( state() != 0 )
|
||
|
cmdList += Move;
|
||
|
break;
|
||
|
}
|
||
|
case QEvent::MouseButtonRelease: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
if ( state() == 1 ) {
|
||
|
cmdList += Append;
|
||
|
setState(2);
|
||
|
}
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::KeyPress: {
|
||
|
if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect1, (const QKeyEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
|
} else {
|
||
|
if ( state() == 1 ) {
|
||
15 years ago
|
cmdList += Append;
|
||
|
setState(2);
|
||
14 years ago
|
} else if ( state() == 2 ) {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
15 years ago
|
}
|
||
|
}
|
||
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
15 years ago
|
}
|
||
|
|
||
|
return cmdList;
|
||
|
}
|
||
|
|
||
|
//! Transition
|
||
|
QwtPickerMachine::CommandList QwtPickerDragRectMachine::transition(
|
||
|
const QwtEventPattern &eventPattern, const QEvent *e)
|
||
14 years ago
|
{
|
||
15 years ago
|
QwtPickerMachine::CommandList cmdList;
|
||
|
|
||
14 years ago
|
switch(e->type()) {
|
||
|
case QEvent::MouseButtonPress: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += Append;
|
||
|
setState(2);
|
||
15 years ago
|
}
|
||
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::MouseMove:
|
||
|
case QEvent::Wheel: {
|
||
|
if ( state() != 0 )
|
||
|
cmdList += Move;
|
||
|
break;
|
||
|
}
|
||
|
case QEvent::MouseButtonRelease: {
|
||
|
if ( state() == 2 ) {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::KeyPress: {
|
||
|
if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect1, (const QKeyEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += Append;
|
||
|
setState(2);
|
||
|
} else {
|
||
15 years ago
|
cmdList += End;
|
||
|
setState(0);
|
||
|
}
|
||
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
15 years ago
|
}
|
||
|
|
||
|
return cmdList;
|
||
|
}
|
||
|
|
||
|
//! Transition
|
||
|
QwtPickerMachine::CommandList QwtPickerPolygonMachine::transition(
|
||
|
const QwtEventPattern &eventPattern, const QEvent *e)
|
||
|
{
|
||
|
QwtPickerMachine::CommandList cmdList;
|
||
|
|
||
14 years ago
|
switch(e->type()) {
|
||
|
case QEvent::MouseButtonPress: {
|
||
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) ) {
|
||
|
if (state() == 0) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
|
} else {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
15 years ago
|
}
|
||
|
}
|
||
14 years ago
|
if ( eventPattern.mouseMatch(
|
||
|
QwtEventPattern::MouseSelect2, (const QMouseEvent *)e) ) {
|
||
|
if (state() == 1)
|
||
|
cmdList += Append;
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
case QEvent::MouseMove:
|
||
|
case QEvent::Wheel: {
|
||
|
if ( state() != 0 )
|
||
|
cmdList += Move;
|
||
|
break;
|
||
|
}
|
||
|
case QEvent::KeyPress: {
|
||
|
if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect1, (const QKeyEvent *)e) ) {
|
||
|
if ( state() == 0 ) {
|
||
|
cmdList += Begin;
|
||
|
cmdList += Append;
|
||
|
cmdList += Append;
|
||
|
setState(1);
|
||
|
} else {
|
||
|
cmdList += End;
|
||
|
setState(0);
|
||
15 years ago
|
}
|
||
14 years ago
|
} else if ( eventPattern.keyMatch(
|
||
|
QwtEventPattern::KeySelect2, (const QKeyEvent *)e) ) {
|
||
|
if ( state() == 1 )
|
||
|
cmdList += Append;
|
||
15 years ago
|
}
|
||
14 years ago
|
break;
|
||
|
}
|
||
|
default:
|
||
|
break;
|
||
15 years ago
|
}
|
||
|
|
||
|
return cmdList;
|
||
|
}
|