X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a02a5cfcf33bb2c0edae246c1b19e286bf86d422..eea4d01c65f9b29baa1193db762b4c6b8144af24:/src/common/uiactioncmn.cpp diff --git a/src/common/uiactioncmn.cpp b/src/common/uiactioncmn.cpp index 52747d1284..18dcbb7d82 100644 --- a/src/common/uiactioncmn.cpp +++ b/src/common/uiactioncmn.cpp @@ -1,59 +1,104 @@ ///////////////////////////////////////////////////////////////////////////// // Name: src/common/uiactioncmn.cpp // Purpose: wxUIActionSimulator common implementation -// Author: Kevin Ollivier +// Author: Kevin Ollivier, Steven Lamerton, Vadim Zeitlin // Modified by: // Created: 2010-03-06 -// RCS-ID: $Id: menu.cpp 54129 2008-06-11 19:30:52Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Kevin Ollivier +// (c) 2010 Steven Lamerton +// (c) 2010 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" -#include "wx/uiaction.h" - -wxUIActionSimulator::wxUIActionSimulator() -{ -} - -wxUIActionSimulator::~wxUIActionSimulator() -{ -} +#if wxUSE_UIACTIONSIMULATOR +#include "wx/uiaction.h" -bool wxUIActionSimulator::MouseClick(int button) +bool wxUIActionSimulator::MouseClick(int button) { MouseDown(button); MouseUp(button); - + return true; } -bool wxUIActionSimulator::MouseDblClick(int button) +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) +bool +wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2, + int button) { MouseMove(x1, y1); MouseDown(button); - MouseMove(x2, y2); + MouseMove(x2, y2); MouseUp(button); - + return true; } -bool wxUIActionSimulator::Char(int keycode, bool shiftDown, bool cmdDown, bool altDown) +bool +wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown) { - Key(keycode, false, shiftDown, cmdDown, altDown); - Key(keycode, true, shiftDown, cmdDown, altDown); - + 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) +{ + Key(keycode, modifiers, true); + Key(keycode, modifiers, false); + return true; -} +} + +bool wxUIActionSimulator::Text(const char *s) +{ + while ( *s != '\0' ) + { + const char ch = *s++; + + wxASSERT_MSG( ch, "Only letters are allowed" ); + + if ( !Char(ch, isupper(ch) ? wxMOD_SHIFT : 0) ) + return false; + } + + return true; +} + +#endif // wxUSE_UIACTIONSIMULATOR