Add wxUSE_UIACTIONSIMULATOR and turn it off by default.

Disable the recently added wxUIActionSimulator class until the issues with it
mentioned at http://article.gmane.org/gmane.comp.lib.wxwidgets.devel/119792/
are fixed.

Also use "" around wx headers instead of <> in wx code itself.

See #11801.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-03-22 11:40:35 +00:00
parent 75738bb65b
commit 9b7e022676
19 changed files with 222 additions and 89 deletions

53
configure vendored
View File

@@ -1883,6 +1883,7 @@ Optional Features:
--enable-metafiles use wxMetaFile (Win32 only) --enable-metafiles use wxMetaFile (Win32 only)
--enable-dragimage use wxDragImage --enable-dragimage use wxDragImage
--enable-accessibility enable accessibility support --enable-accessibility enable accessibility support
--enable-uiactionsim use wxUIActionSimulator (experimental)
--enable-palette use wxPalette class --enable-palette use wxPalette class
--enable-image use wxImage class --enable-image use wxImage class
--enable-gif use gif images (GIF file format) --enable-gif use gif images (GIF file format)
@@ -2969,6 +2970,7 @@ DEFAULT_wxUSE_LIBSDL=no
DEFAULT_wxUSE_ACCESSIBILITY=no DEFAULT_wxUSE_ACCESSIBILITY=no
DEFAULT_wxUSE_IPV6=no DEFAULT_wxUSE_IPV6=no
DEFAULT_wxUSE_GSTREAMER8=no DEFAULT_wxUSE_GSTREAMER8=no
DEFAULT_wxUSE_UIACTIONSIMULATOR=no
DEFAULT_wxUSE_UNICODE_UTF8=auto DEFAULT_wxUSE_UNICODE_UTF8=auto
DEFAULT_wxUSE_OPENGL=auto DEFAULT_wxUSE_OPENGL=auto
@@ -13557,6 +13559,50 @@ fi
echo "${ECHO_T}$result" >&6; } echo "${ECHO_T}$result" >&6; }
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
if test x"$enablestring" = xdisable; then
defaultval=yes
else
defaultval=no
fi
fi
{ echo "$as_me:$LINENO: checking for --${enablestring:-enable}-uiactionsim" >&5
echo $ECHO_N "checking for --${enablestring:-enable}-uiactionsim... $ECHO_C" >&6; }
# Check whether --enable-uiactionsim was given.
if test "${enable_uiactionsim+set}" = set; then
enableval=$enable_uiactionsim;
if test "$enableval" = yes; then
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=yes'
else
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=no'
fi
else
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=${'DEFAULT_wxUSE_UIACTIONSIMULATOR":-$defaultval}"
fi
eval "$wx_cv_use_uiactionsim"
if test x"$enablestring" = xdisable; then
if test $wxUSE_UIACTIONSIMULATOR = no; then
result=yes
else
result=no
fi
else
result=$wxUSE_UIACTIONSIMULATOR
fi
{ echo "$as_me:$LINENO: result: $result" >&5
echo "${ECHO_T}$result" >&6; }
enablestring= enablestring=
@@ -46306,6 +46352,13 @@ _ACEOF
fi fi
if test "$wxUSE_UIACTIONSIMULATOR" = "yes" ; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_UIACTIONSIMULATOR 1
_ACEOF
fi
USES_CONTROLS=0 USES_CONTROLS=0
if test "$wxUSE_CONTROLS" = "yes"; then if test "$wxUSE_CONTROLS" = "yes"; then

View File

@@ -387,6 +387,7 @@ dnl features disabled by default
DEFAULT_wxUSE_ACCESSIBILITY=no DEFAULT_wxUSE_ACCESSIBILITY=no
DEFAULT_wxUSE_IPV6=no DEFAULT_wxUSE_IPV6=no
DEFAULT_wxUSE_GSTREAMER8=no DEFAULT_wxUSE_GSTREAMER8=no
DEFAULT_wxUSE_UIACTIONSIMULATOR=no
dnl automatic features dnl automatic features
DEFAULT_wxUSE_UNICODE_UTF8=auto DEFAULT_wxUSE_UNICODE_UTF8=auto
@@ -1013,6 +1014,7 @@ WX_ARG_FEATURE(joystick, [ --enable-joystick use wxJoystick], wxUSE_JO
WX_ARG_FEATURE(metafile, [ --enable-metafiles use wxMetaFile (Win32 only)], wxUSE_METAFILE) WX_ARG_FEATURE(metafile, [ --enable-metafiles use wxMetaFile (Win32 only)], wxUSE_METAFILE)
WX_ARG_FEATURE(dragimage, [ --enable-dragimage use wxDragImage], wxUSE_DRAGIMAGE) WX_ARG_FEATURE(dragimage, [ --enable-dragimage use wxDragImage], wxUSE_DRAGIMAGE)
WX_ARG_FEATURE(accessibility,[ --enable-accessibility enable accessibility support], wxUSE_ACCESSIBILITY) WX_ARG_FEATURE(accessibility,[ --enable-accessibility enable accessibility support], wxUSE_ACCESSIBILITY)
WX_ARG_FEATURE(uiactionsim, [ --enable-uiactionsim use wxUIActionSimulator (experimental)], wxUSE_UIACTIONSIMULATOR)
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl support for image formats that do not rely on external library dnl support for image formats that do not rely on external library
@@ -6719,6 +6721,10 @@ if test "$wxUSE_MOUSEWHEEL" = "yes" ; then
AC_DEFINE(wxUSE_MOUSEWHEEL) AC_DEFINE(wxUSE_MOUSEWHEEL)
fi fi
if test "$wxUSE_UIACTIONSIMULATOR" = "yes" ; then
AC_DEFINE(wxUSE_UIACTIONSIMULATOR)
fi
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl GUI controls dnl GUI controls
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------

View File

@@ -1065,6 +1065,14 @@
# endif # endif
#endif /* !defined(wxUSE_TREECTRL) */ #endif /* !defined(wxUSE_TREECTRL) */
#ifndef wxUSE_UIACTIONSIMULATOR
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_UIACTIONSIMULATOR must be defined, please read comment near the top of this file."
# else
# define wxUSE_UIACTIONSIMULATOR 0
# endif
#endif /* !defined(wxUSE_UIACTIONSIMULATOR) */
#ifndef wxUSE_VALIDATORS #ifndef wxUSE_VALIDATORS
# ifdef wxABORT_ON_CONFIG_ERROR # ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_VALIDATORS must be defined, please read comment near the top of this file." # error "wxUSE_VALIDATORS must be defined, please read comment near the top of this file."

View File

@@ -1214,6 +1214,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1214,6 +1214,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1214,6 +1214,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1214,6 +1214,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1215,6 +1215,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1214,6 +1214,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -1210,6 +1210,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -9,19 +9,22 @@
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _UIACTIONSIMULATOR_H_ #ifndef _WX_UIACTIONSIMULATOR_H_
#define _UIACTIONSIMULATOR_H_ #define _WX_UIACTIONSIMULATOR_H_
#include <wx/defs.h> #include "wx/defs.h"
#include <wx/event.h>
#include <wx/dynarray.h> #if wxUSE_UIACTIONSIMULATOR
#include "wx/event.h"
#include "wx/dynarray.h"
class WXDLLIMPEXP_CORE wxUIActionSimulator class WXDLLIMPEXP_CORE wxUIActionSimulator
{ {
public: public:
wxUIActionSimulator(); wxUIActionSimulator();
~wxUIActionSimulator(); ~wxUIActionSimulator();
// Mouse related // Mouse related
bool MouseMove(long x, long y); bool MouseMove(long x, long y);
bool MouseDown(int button = wxMOUSE_BTN_LEFT); bool MouseDown(int button = wxMOUSE_BTN_LEFT);
@@ -29,23 +32,25 @@ public:
bool MouseClick(int button = wxMOUSE_BTN_LEFT); bool MouseClick(int button = wxMOUSE_BTN_LEFT);
bool MouseDblClick(int button = wxMOUSE_BTN_LEFT); bool MouseDblClick(int button = wxMOUSE_BTN_LEFT);
bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT); bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT);
// Keyboard related: // Keyboard related:
bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false) bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false)
{ return Key(keycode, true, shiftDown, cmdDown, altDown); } { return Key(keycode, true, shiftDown, cmdDown, altDown); }
bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false) bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false)
{ return Key(keycode, false, shiftDown, cmdDown, altDown); } { return Key(keycode, false, shiftDown, cmdDown, altDown); }
bool Char(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false); bool Char(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
protected: protected:
// Implementation-wise, since key events take more code to set up on GTK and Mac, it makes // Implementation-wise, since key events take more code to set up on GTK and Mac, it makes
// sense to handle both key down and key up in one method. However, I wanted the API for pressing // sense to handle both key down and key up in one method. However, I wanted the API for pressing
// and releasing the mouse and keyboard to be consistent, and I don't really like using a bool // and releasing the mouse and keyboard to be consistent, and I don't really like using a bool
// for pressed state, so I'm leaving this as an implementation detail. // for pressed state, so I'm leaving this as an implementation detail.
bool Key(int keycode, bool isDown=true, bool shiftDown=false, bool cmdDown=false, bool altDown=false); bool Key(int keycode, bool isDown=true, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
}; };
#endif #endif // wxUSE_UIACTIONSIMULATOR
#endif // _WX_UIACTIONSIMULATOR_H_

View File

@@ -1213,6 +1213,11 @@
#define wxUSE_MOUSEWHEEL 1 #define wxUSE_MOUSEWHEEL 1
// Include mouse wheel support // Include mouse wheel support
// Compile wxUIActionSimulator class?
//
// This is experimental code subject to change. It's not fully implemented yet.
#define wxUSE_UIACTIONSIMULATOR 0
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxDC classes for various output formats // wxDC classes for various output formats
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -10,18 +10,22 @@
@class wxUIActionSimulator @class wxUIActionSimulator
wxUIActionSimulator is a class used to simulate user interface actions wxUIActionSimulator is a class used to simulate user interface actions
such as a mouse click or a key press. such as a mouse click or a key press.
@note that this class is currently experimental and disabled by default,
you must set @c wxUSE_UIACTIONSIMULATOR to 1 in your setup.h file or use
configure @c --enable-uiactionsim option to enable it.
Common usages for this class would be to provide playback and record (aka macro recording) Common usages for this class would be to provide playback and record (aka macro recording)
functionality for users, or to drive unit tests by simulating user sessions. functionality for users, or to drive unit tests by simulating user sessions.
See the uiaction sample for example usage of this class. See the uiaction sample for example usage of this class.
NOTE: For keyboard operations, currently you must pass the keycode of the actual NOTE: For keyboard operations, currently you must pass the keycode of the actual
key on the keyboard. To simulate, e.g. IME actions, you'd need to simulate the actual key on the keyboard. To simulate, e.g. IME actions, you'd need to simulate the actual
keypresses needed to active the IME, then the keypresses needed to type and select keypresses needed to active the IME, then the keypresses needed to type and select
the desired character. the desired character.
@library{wxcore} @library{wxcore}
*/ */
@@ -33,43 +37,43 @@ class wxUIActionSimulator
*/ */
wxUIActionSimulator(); wxUIActionSimulator();
~wxUIActionSimulator(); ~wxUIActionSimulator();
/** /**
Move the mouse to the specified coordinates. Move the mouse to the specified coordinates.
@param x @param x
x coordinate to move to, in screen coordinates. x coordinate to move to, in screen coordinates.
@param y @param y
y coordinate to move to, in screen coordinates. y coordinate to move to, in screen coordinates.
*/ */
bool MouseMove(long x, long y); bool MouseMove(long x, long y);
/** /**
Press a mouse button. Press a mouse button.
@param button @param button
Button to press. Valid constants are wxMOUSE_BTN_LEFT, wxMOUSE_BTN_MIDDLE, and wxMOUSE_BTN_RIGHT. Button to press. Valid constants are wxMOUSE_BTN_LEFT, wxMOUSE_BTN_MIDDLE, and wxMOUSE_BTN_RIGHT.
*/ */
bool MouseDown(int button = wxMOUSE_BTN_LEFT); bool MouseDown(int button = wxMOUSE_BTN_LEFT);
/** /**
Release a mouse button. Release a mouse button.
@param button @param button
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants. Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
*/ */
bool MouseUp(int button = wxMOUSE_BTN_LEFT); bool MouseUp(int button = wxMOUSE_BTN_LEFT);
/** /**
Click a mouse button. Click a mouse button.
@param button @param button
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants. Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
*/ */
bool MouseClick(int button = wxMOUSE_BTN_LEFT); bool MouseClick(int button = wxMOUSE_BTN_LEFT);
/** /**
Double-click a mouse button. Double-click a mouse button.
@param button @param button
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants. Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
*/ */
@@ -77,70 +81,70 @@ class wxUIActionSimulator
/** /**
Perform a drag and drop operation. Perform a drag and drop operation.
@param x1 @param x1
x start coordinate, in screen coordinates. x start coordinate, in screen coordinates.
@param y1 @param y1
y start coordinate, in screen coordinates. y start coordinate, in screen coordinates.
@param x2 @param x2
x desintation coordinate, in screen coordinates. x desintation coordinate, in screen coordinates.
@param y2 @param y2
y destination coordinate, in screen coordinates. y destination coordinate, in screen coordinates.
@param button @param button
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants. Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
*/ */
bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT); bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT);
/** /**
Press a key. Press a key.
@param keycode @param keycode
key to operate on, as an integer. key to operate on, as an integer.
@param shiftDown @param shiftDown
true if the shift key should be pressed, false otherwise. true if the shift key should be pressed, false otherwise.
@param cmdDown @param cmdDown
true if the cmd key should be pressed, false otherwise. true if the cmd key should be pressed, false otherwise.
@param altDown @param altDown
true if the alt key should be pressed, false otherwise. true if the alt key should be pressed, false otherwise.
*/ */
bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false); bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
/** /**
Release a key. Release a key.
@param keycode @param keycode
key to operate on, as an integer. key to operate on, as an integer.
@param shiftDown @param shiftDown
true if the shift key should be pressed, false otherwise. true if the shift key should be pressed, false otherwise.
@param cmdDown @param cmdDown
true if the cmd key should be pressed, false otherwise. true if the cmd key should be pressed, false otherwise.
@param altDown @param altDown
true if the alt key should be pressed, false otherwise. true if the alt key should be pressed, false otherwise.
*/ */
bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false); bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
/** /**
Press and release a key. Press and release a key.
@param keycode @param keycode
key to operate on, as an integer. key to operate on, as an integer.
@param shiftDown @param shiftDown
true if the shift key should be pressed, false otherwise. true if the shift key should be pressed, false otherwise.
@param cmdDown @param cmdDown
true if the cmd key should be pressed, false otherwise. true if the cmd key should be pressed, false otherwise.
@param altDown @param altDown
true if the alt key should be pressed, false otherwise. true if the alt key should be pressed, false otherwise.
*/ */

View File

@@ -24,6 +24,8 @@
#pragma hdrstop #pragma hdrstop
#endif #endif
#if wxUSE_UIACTIONSIMULATOR
// for all others, include the necessary headers (this file is usually all you // for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWidgets headers) // need because it includes almost all "standard" wxWidgets headers)
#ifndef WX_PRECOMP #ifndef WX_PRECOMP
@@ -164,3 +166,5 @@ void MyFrame::OnButtonPressed(wxCommandEvent&)
{ {
m_buttonPressed = true; m_buttonPressed = true;
} }
#endif // wxUSE_UIACTIONSIMULATOR

View File

@@ -520,6 +520,8 @@
#define wxUSE_MOUSEWHEEL 0 #define wxUSE_MOUSEWHEEL 0
#define wxUSE_UIACTIONSIMULATOR 0
#define wxUSE_POSTSCRIPT 0 #define wxUSE_POSTSCRIPT 0

View File

@@ -11,6 +11,8 @@
#include "wx/wxprec.h" #include "wx/wxprec.h"
#if wxUSE_UIACTIONSIMULATOR
#include "wx/uiaction.h" #include "wx/uiaction.h"
wxUIActionSimulator::wxUIActionSimulator() wxUIActionSimulator::wxUIActionSimulator()
@@ -22,21 +24,21 @@ wxUIActionSimulator::~wxUIActionSimulator()
} }
bool wxUIActionSimulator::MouseClick(int button) bool wxUIActionSimulator::MouseClick(int button)
{ {
MouseDown(button); MouseDown(button);
MouseUp(button); MouseUp(button);
return true; return true;
} }
bool wxUIActionSimulator::MouseDblClick(int button) bool wxUIActionSimulator::MouseDblClick(int button)
{ {
MouseDown(button); MouseDown(button);
MouseUp(button); MouseUp(button);
MouseDown(button); MouseDown(button);
MouseUp(button); MouseUp(button);
return true; return true;
} }
@@ -44,9 +46,9 @@ bool wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2, int
{ {
MouseMove(x1, y1); MouseMove(x1, y1);
MouseDown(button); MouseDown(button);
MouseMove(x2, y2); MouseMove(x2, y2);
MouseUp(button); MouseUp(button);
return true; return true;
} }
@@ -54,6 +56,8 @@ bool wxUIActionSimulator::Char(int keycode, bool shiftDown, bool cmdDown, bool
{ {
Key(keycode, false, shiftDown, cmdDown, altDown); Key(keycode, false, shiftDown, cmdDown, altDown);
Key(keycode, true, shiftDown, cmdDown, altDown); Key(keycode, true, shiftDown, cmdDown, altDown);
return true; return true;
} }
#endif // wxUSE_UIACTIONSIMULATOR

View File

@@ -11,13 +11,11 @@
#include "wx/wxprec.h" #include "wx/wxprec.h"
#ifndef WX_PRECOMP #if wxUSE_UIACTIONSIMULATOR
#include "wx/defs.h"
#endif
#include "wx/uiaction.h" #include "wx/uiaction.h"
#include <windows.h> #include "wx/msw/wrapwin.h"
DWORD EventTypeForMouseButton(int button, bool isDown) DWORD EventTypeForMouseButton(int button, bool isDown)
{ {
@@ -38,7 +36,7 @@ DWORD EventTypeForMouseButton(int button, bool isDown)
return MOUSEEVENTF_MIDDLEDOWN; return MOUSEEVENTF_MIDDLEDOWN;
else else
return MOUSEEVENTF_MIDDLEUP; return MOUSEEVENTF_MIDDLEUP;
default: default:
wxFAIL_MSG("Unsupported button passed in."); wxFAIL_MSG("Unsupported button passed in.");
return -1; return -1;
@@ -54,7 +52,7 @@ bool wxUIActionSimulator::MouseDown(int button)
} }
bool wxUIActionSimulator::MouseMove(long x, long y) bool wxUIActionSimulator::MouseMove(long x, long y)
{ {
mouse_event(MOUSEEVENTF_MOVE, x, y, 0, 0); mouse_event(MOUSEEVENTF_MOVE, x, y, 0, 0);
return true; return true;
} }
@@ -76,3 +74,4 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool shiftDown, bool cmd
return true; return true;
} }
#endif // wxUSE_UIACTIONSIMULATOR

View File

@@ -9,8 +9,11 @@
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#include <wx/defs.h> #include "wx/defs.h"
#include <wx/uiaction.h>
#if wxUSE_UIACTIONSIMULATOR
#include "wx/uiaction.h"
#include <ApplicationServices/ApplicationServices.h> #include <ApplicationServices/ApplicationServices.h>
@@ -30,9 +33,9 @@ CGEventType CGEventTypeForMouseButton(int button, bool isDown)
return kCGEventRightMouseDown; return kCGEventRightMouseDown;
else else
return kCGEventRightMouseUp; return kCGEventRightMouseUp;
// Apparently all other buttons use the constant OtherMouseDown // Apparently all other buttons use the constant OtherMouseDown
default: default:
if (isDown) if (isDown)
return kCGEventOtherMouseDown; return kCGEventOtherMouseDown;
@@ -55,13 +58,13 @@ bool wxUIActionSimulator::MouseDown(int button)
{ {
CGPoint pos; CGPoint pos;
int x, y; int x, y;
wxGetMousePosition(&x, &y); wxGetMousePosition(&x, &y);
pos.x = x; pos.x = x;
pos.y = y; pos.y = y;
CGEventType type = CGEventTypeForMouseButton(button, true); CGEventType type = CGEventTypeForMouseButton(button, true);
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button); CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button);
CGEventSetType(event, type); CGEventSetType(event, type);
if (event) if (event)
{ {
CGEventPost(tap, event); CGEventPost(tap, event);
@@ -78,13 +81,13 @@ bool wxUIActionSimulator::MouseMove(long x, long y)
CGEventType type = kCGEventMouseMoved; CGEventType type = kCGEventMouseMoved;
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, kCGMouseButtonLeft); CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, kCGMouseButtonLeft);
CGEventSetType(event, type); CGEventSetType(event, type);
if (event) if (event)
{ {
CGEventPost(tap, event); CGEventPost(tap, event);
} }
CFRelease(event); CFRelease(event);
return true; return true;
} }
@@ -92,13 +95,13 @@ bool wxUIActionSimulator::MouseUp(int button)
{ {
CGPoint pos; CGPoint pos;
int x, y; int x, y;
wxGetMousePosition(&x, &y); wxGetMousePosition(&x, &y);
pos.x = x; pos.x = x;
pos.y = y; pos.y = y;
CGEventType type = CGEventTypeForMouseButton(button, false); CGEventType type = CGEventTypeForMouseButton(button, false);
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button); CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button);
CGEventSetType(event, type); CGEventSetType(event, type);
if (event) if (event)
{ {
CGEventPost(tap, event); CGEventPost(tap, event);
@@ -125,8 +128,9 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool shiftDown, bool cmd
SendCharCode((CGCharCode)58, false); SendCharCode((CGCharCode)58, false);
if (cmdDown) if (cmdDown)
SendCharCode((CGCharCode)55, false); SendCharCode((CGCharCode)55, false);
return true; return true;
} }
#endif // wxUSE_UIACTIONSIMULATOR

View File

@@ -9,8 +9,11 @@
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#include <wx/defs.h> #include "wx/defs.h"
#include <wx/uiaction.h>
#if wxUSE_UIACTIONSIMULATOR
#include "wx/uiaction.h"
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
@@ -35,12 +38,12 @@ void SendButtonEvent(int button, bool isDown)
} }
XEvent event; XEvent event;
Display *display = XOpenDisplay(0); Display *display = XOpenDisplay(0);
wxASSERT_MSG(display, "No display available!"); wxASSERT_MSG(display, "No display available!");
memset(&event, 0x00, sizeof(event)); memset(&event, 0x00, sizeof(event));
if (isDown) if (isDown)
event.type = ButtonPress; event.type = ButtonPress;
else else
@@ -48,16 +51,16 @@ void SendButtonEvent(int button, bool isDown)
event.xbutton.button = xbutton; event.xbutton.button = xbutton;
event.xbutton.same_screen = True; event.xbutton.same_screen = True;
XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.xbutton.root, &event.xbutton.window, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state); XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.xbutton.root, &event.xbutton.window, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
event.xbutton.subwindow = event.xbutton.window; event.xbutton.subwindow = event.xbutton.window;
while (event.xbutton.subwindow) while (event.xbutton.subwindow)
{ {
event.xbutton.window = event.xbutton.subwindow; event.xbutton.window = event.xbutton.subwindow;
XQueryPointer(display, event.xbutton.window, &event.xbutton.root, &event.xbutton.subwindow, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state); XQueryPointer(display, event.xbutton.window, &event.xbutton.root, &event.xbutton.subwindow, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
} }
XSendEvent(display, PointerWindow, True, 0xfff, &event); XSendEvent(display, PointerWindow, True, 0xfff, &event);
XFlush(display); XFlush(display);
XCloseDisplay(display); XCloseDisplay(display);
@@ -70,7 +73,7 @@ bool wxUIActionSimulator::MouseDown(int button)
} }
bool wxUIActionSimulator::MouseMove(long x, long y) bool wxUIActionSimulator::MouseMove(long x, long y)
{ {
Display *display = XOpenDisplay(0); Display *display = XOpenDisplay(0);
wxASSERT_MSG(display, "No display available!"); wxASSERT_MSG(display, "No display available!");
Window root = DefaultRootWindow(display); Window root = DefaultRootWindow(display);
@@ -90,11 +93,11 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
{ {
Display *display = XOpenDisplay(0); Display *display = XOpenDisplay(0);
wxASSERT_MSG(display, "No display available!"); wxASSERT_MSG(display, "No display available!");
XKeyEvent event; XKeyEvent event;
int mask = 0xfff; int mask = 0xfff;
memset(&event, 0x00, sizeof(event)); memset(&event, 0x00, sizeof(event));
if (isDown) { if (isDown) {
event.type = KeyPress; event.type = KeyPress;
mask = KeyPressMask; mask = KeyPressMask;
@@ -104,16 +107,16 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
mask = KeyReleaseMask; mask = KeyReleaseMask;
} }
event.same_screen = True; event.same_screen = True;
XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.root, &event.window, &event.x_root, &event.y_root, &event.x, &event.y, &event.state); XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.root, &event.window, &event.x_root, &event.y_root, &event.x, &event.y, &event.state);
event.subwindow = event.window; event.subwindow = event.window;
while (event.subwindow) while (event.subwindow)
{ {
event.window = event.subwindow; event.window = event.subwindow;
XQueryPointer(display, event.window, &event.root, &event.subwindow, &event.x_root, &event.y_root, &event.x, &event.y, &event.state); XQueryPointer(display, event.window, &event.root, &event.subwindow, &event.x_root, &event.y_root, &event.x, &event.y, &event.state);
} }
XSendEvent(display, PointerWindow, True, mask, (XEvent*) &event); XSendEvent(display, PointerWindow, True, mask, (XEvent*) &event);
XFlush(display); XFlush(display);
XCloseDisplay(display); XCloseDisplay(display);
@@ -121,3 +124,4 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
return true; return true;
} }
#endif // wxUSE_UIACTIONSIMULATOR