added wxTextCtrl::EmulateKeyPress

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-04-07 22:29:04 +00:00
parent 15bee36fdf
commit 94af7d45ef
7 changed files with 121 additions and 67 deletions

View File

@@ -277,6 +277,84 @@ bool wxTextCtrlBase::CanPaste() const
return IsEditable();
}
// ----------------------------------------------------------------------------
// emulating key presses
// ----------------------------------------------------------------------------
bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event)
{
// the generic version is unused in wxMSW
#ifndef __WIN32__
wxChar ch;
int keycode = event.GetKeyCode();
switch ( keycode )
{
case WXK_NUMPAD0:
case WXK_NUMPAD1:
case WXK_NUMPAD2:
case WXK_NUMPAD3:
case WXK_NUMPAD4:
case WXK_NUMPAD5:
case WXK_NUMPAD6:
case WXK_NUMPAD7:
case WXK_NUMPAD8:
case WXK_NUMPAD9:
ch = _T('0') + keycode - WXK_NUMPAD0;
break;
case WXK_MULTIPLY:
case WXK_NUMPAD_MULTIPLY:
ch = _T('*');
break;
case WXK_ADD:
case WXK_NUMPAD_ADD:
ch = _T('+');
break;
case WXK_SUBTRACT:
case WXK_NUMPAD_SUBTRACT:
ch = _T('-');
break;
case WXK_DECIMAL:
case WXK_NUMPAD_DECIMAL:
ch = _T('.');
break;
case WXK_DIVIDE:
case WXK_NUMPAD_DIVIDE:
ch = _T('/');
break;
default:
if ( keycode < 256 && keycode >= 0 && isprint(keycode) )
{
// FIXME this is not going to work for non letters...
if ( !event.ShiftDown() )
{
keycode = tolower(keycode);
}
ch = (wxChar)keycode;
}
else
{
ch = _T('\0');
}
}
if ( ch )
{
WriteText(ch);
return TRUE;
}
#endif // !__WIN32__
return FALSE;
}
// ----------------------------------------------------------------------------
// selection and ranges
// ----------------------------------------------------------------------------