149 lines
3.1 KiB
C++
149 lines
3.1 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/common/uiactioncmn.cpp
|
|
// Purpose: wxUIActionSimulator common implementation
|
|
// Author: Kevin Ollivier, Steven Lamerton, Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 2010-03-06
|
|
// Copyright: (c) Kevin Ollivier
|
|
// (c) 2010 Steven Lamerton
|
|
// (c) 2010 Vadim Zeitlin
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#if wxUSE_UIACTIONSIMULATOR
|
|
|
|
#include "wx/uiaction.h"
|
|
|
|
bool wxUIActionSimulator::MouseClick(int button)
|
|
{
|
|
MouseDown(button);
|
|
MouseUp(button);
|
|
|
|
return true;
|
|
}
|
|
|
|
#ifndef __WXOSX__
|
|
|
|
bool wxUIActionSimulator::MouseDblClick(int button)
|
|
{
|
|
MouseDown(button);
|
|
MouseUp(button);
|
|
MouseDown(button);
|
|
MouseUp(button);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2,
|
|
int button)
|
|
{
|
|
MouseMove(x1, y1);
|
|
MouseDown(button);
|
|
MouseMove(x2, y2);
|
|
MouseUp(button);
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif
|
|
|
|
bool
|
|
wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown)
|
|
{
|
|
wxASSERT_MSG( (modifiers & wxMOD_ALTGR) != wxMOD_ALTGR,
|
|
"wxMOD_ALTGR is not implemented" );
|
|
wxASSERT_MSG( !(modifiers & wxMOD_META ),
|
|
"wxMOD_META is not implemented" );
|
|
wxASSERT_MSG( !(modifiers & wxMOD_WIN ),
|
|
"wxMOD_WIN is not implemented" );
|
|
|
|
if ( isDown )
|
|
SimulateModifiers(modifiers, true);
|
|
|
|
bool rc = DoKey(keycode, modifiers, isDown);
|
|
|
|
if ( !isDown )
|
|
SimulateModifiers(modifiers, false);
|
|
|
|
return rc;
|
|
}
|
|
|
|
void wxUIActionSimulator::SimulateModifiers(int modifiers, bool isDown)
|
|
{
|
|
if ( modifiers & wxMOD_SHIFT )
|
|
DoKey(WXK_SHIFT, modifiers, isDown);
|
|
if ( modifiers & wxMOD_ALT )
|
|
DoKey(WXK_ALT, modifiers, isDown);
|
|
if ( modifiers & wxMOD_CONTROL )
|
|
DoKey(WXK_CONTROL, modifiers, isDown);
|
|
}
|
|
|
|
bool wxUIActionSimulator::Char(int keycode, int modifiers)
|
|
{
|
|
switch(keycode)
|
|
{
|
|
case '0':
|
|
keycode = '0';
|
|
break;
|
|
case '1':
|
|
keycode = '1';
|
|
break;
|
|
case '2':
|
|
keycode = '2';
|
|
break;
|
|
case '3':
|
|
keycode = '3';
|
|
break;
|
|
case '4':
|
|
keycode = '4';
|
|
break;
|
|
case '5':
|
|
keycode = '5';
|
|
break;
|
|
case '6':
|
|
keycode = '6';
|
|
break;
|
|
case '7':
|
|
keycode = '7';
|
|
break;
|
|
case '8':
|
|
keycode = '8';
|
|
break;
|
|
case '9':
|
|
keycode = '9';
|
|
break;
|
|
case '+':
|
|
keycode = '+';
|
|
break;
|
|
case '-':
|
|
keycode = '-';
|
|
break;
|
|
case '.':
|
|
keycode = '.';
|
|
break;
|
|
default:
|
|
break;
|
|
};
|
|
|
|
Key(keycode, modifiers, true);
|
|
Key(keycode, modifiers, false);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool wxUIActionSimulator::Text(const char *s)
|
|
{
|
|
while ( *s != '\0' )
|
|
{
|
|
const char ch = *s++;
|
|
if ( !Char(ch, isupper(ch) ? wxMOD_SHIFT : 0) )
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif // wxUSE_UIACTIONSIMULATOR
|