X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c598f225189ff925264117e4f8d6c70f699b72ab..e5c4c38b5d3523bfac08987b5ec09d34f4f61caa:/src/common/textcmn.cpp diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 6a494d434c..0e194c6ba3 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -6,7 +6,7 @@ // Created: 13.07.99 // RCS-ID: $Id$ // Copyright: (c) wxWindows team -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -173,7 +173,7 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) } #if wxUSE_FFILE - wxFFile file(filename, "w"); + wxFFile file(filename, _T("w")); if ( file.IsOpened() && file.Write(GetValue()) ) { // it's not modified any longer @@ -278,7 +278,105 @@ bool wxTextCtrlBase::CanPaste() const } // ---------------------------------------------------------------------------- -// misc +// 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; + + case WXK_DELETE: + case WXK_NUMPAD_DELETE: + // delete the character at cursor + { + const long pos = GetInsertionPoint(), + last = GetLastPosition(); + if ( pos < last ) + Remove(pos, pos + 1); + } + break; + + case WXK_BACK: + // delete the character before the cursor + { + const long pos = GetInsertionPoint(); + if ( pos > 0 ) + Remove(pos - 1, pos); + } + break; + + default: + if ( keycode < 256 && keycode >= 0 && wxIsprint(keycode) ) + { + // FIXME this is not going to work for non letters... + if ( !event.ShiftDown() ) + { + keycode = wxTolower(keycode); + } + + ch = (wxChar)keycode; + } + else + { + ch = _T('\0'); + } + } + + if ( ch ) + { + WriteText(ch); + + return TRUE; + } +#endif // !__WIN32__ + + return FALSE; +} + +// ---------------------------------------------------------------------------- +// selection and ranges // ---------------------------------------------------------------------------- void wxTextCtrlBase::SelectAll() @@ -291,6 +389,11 @@ wxString wxTextCtrlBase::GetStringSelection() const long from, to; GetSelection(&from, &to); + return GetRange(from, to); +} + +wxString wxTextCtrlBase::GetRange(long from, long to) const +{ wxString sel; if ( from < to ) {