X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9d11268884fd82cfe72673566e403a40105ce703..797e38dde12c5dc2d99070eef25d9b8c2549d621:/src/common/textcmn.cpp diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 9da659d9fb..8fa4ad28c9 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -161,14 +161,14 @@ void wxTextAttr::operator= (const wxTextAttr& attr) bool wxTextCtrlBase::SetStyle(long WXUNUSED(start), long WXUNUSED(end), const wxTextAttr& WXUNUSED(style)) { - // to be implemented in derived TextCtrl classes + // to be implemented in derived classes return false; } // get the styling at the given position bool wxTextCtrlBase::GetStyle(long WXUNUSED(position), wxTextAttr& WXUNUSED(style)) { - // to be implemented in derived TextCtrl classes + // to be implemented in derived classes return false; } @@ -186,17 +186,11 @@ bool wxTextCtrlBase::SetDefaultStyle(const wxTextAttr& style) return true; } -// get default text attributes -const wxTextAttr& wxTextCtrlBase::GetDefaultStyle() const -{ - return m_defaultStyle; -} - // ---------------------------------------------------------------------------- // file IO functions // ---------------------------------------------------------------------------- -bool wxTextCtrlBase::LoadFile(const wxString& filename) +bool wxTextCtrlBase::DoLoadFile(const wxString& filename, int WXUNUSED(fileType)) { #if wxUSE_FFILE wxFFile file(filename); @@ -221,7 +215,7 @@ bool wxTextCtrlBase::LoadFile(const wxString& filename) return false; } -bool wxTextCtrlBase::SaveFile(const wxString& filename) +bool wxTextAreaBase::SaveFile(const wxString& filename, int fileType) { wxString filenameToUse = filename.empty() ? m_filename : filename; if ( filenameToUse.empty() ) @@ -232,16 +226,21 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) return false; } + return DoSaveFile(filenameToUse, fileType); +} + +bool wxTextCtrlBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType)) +{ #if wxUSE_FFILE - wxFFile file(filenameToUse, _T("w")); + wxFFile file(filename, _T("w")); if ( file.IsOpened() && file.Write(GetValue()) ) { + // if it worked, save for future calls + m_filename = filename; + // it's not modified any longer DiscardEdits(); - // if it worked, save for future calls - m_filename = filenameToUse; - return true; } #endif // wxUSE_FFILE @@ -314,43 +313,14 @@ int wxTextCtrlBase::overflow(int c) #endif // wxHAS_TEXT_WINDOW_STREAM -// ---------------------------------------------------------------------------- -// clipboard stuff -// ---------------------------------------------------------------------------- - -bool wxTextCtrlBase::CanCopy() const -{ - // can copy if there's a selection - long from, to; - GetSelection(&from, &to); - return from != to; -} - -bool wxTextCtrlBase::CanCut() const -{ - // can cut if there's a selection and if we're not read only - return CanCopy() && IsEditable(); -} - -bool wxTextCtrlBase::CanPaste() const -{ - // can paste if we are not read only - return IsEditable(); -} - // ---------------------------------------------------------------------------- // emulating key presses // ---------------------------------------------------------------------------- -#ifdef __WIN32__ -// the generic version is unused in wxMSW -bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& WXUNUSED(event)) -{ - return false; -} -#else // !__WIN32__ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event) { + // we have a native implementation for Win32 and so don't need this one +#ifndef __WIN32__ wxChar ch = 0; int keycode = event.GetKeyCode(); switch ( keycode ) @@ -442,38 +412,12 @@ bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event) return true; } +#else // __WIN32__ + wxUnusedVar(event); +#endif // !__WIN32__/__WIN32__ return false; } -#endif // !__WIN32__ - -// ---------------------------------------------------------------------------- -// selection and ranges -// ---------------------------------------------------------------------------- - -void wxTextCtrlBase::SelectAll() -{ - SetSelection(0, GetLastPosition()); -} - -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 ) - { - sel = GetValue().Mid(from, to - from); - } - - return sel; -} // do the window-specific processing after processing the update event void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) @@ -496,7 +440,7 @@ void wxTextCtrlBase::DoUpdateWindowUI(wxUpdateUIEvent& event) // ---------------------------------------------------------------------------- wxTextCtrlHitTestResult -wxTextCtrlBase::HitTest(const wxPoint& pt, wxTextCoord *x, wxTextCoord *y) const +wxTextAreaBase::HitTest(const wxPoint& pt, wxTextCoord *x, wxTextCoord *y) const { // implement in terms of the other overload as the native ports typically // can get the position and not (x, y) pair directly (although wxUniv @@ -513,13 +457,31 @@ wxTextCtrlBase::HitTest(const wxPoint& pt, wxTextCoord *x, wxTextCoord *y) const } wxTextCtrlHitTestResult -wxTextCtrlBase::HitTest(const wxPoint& WXUNUSED(pt), - long * WXUNUSED(pos)) const +wxTextAreaBase::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(pos)) const { // not implemented return wxTE_HT_UNKNOWN; } +// ---------------------------------------------------------------------------- +// events +// ---------------------------------------------------------------------------- + +/* static */ +bool wxTextCtrlBase::SendTextUpdatedEvent(wxWindow *win) +{ + wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, win->GetId()); + + // do not do this as it could be very inefficient if the text control + // contains a lot of text and we're not using ref-counted wxString + // implementation -- instead, event.GetString() will query the control for + // its current text if needed + //event.SetString(win->GetValue()); + + event.SetEventObject(win); + return win->GetEventHandler()->ProcessEvent(event); +} + #else // !wxUSE_TEXTCTRL // define this one even if !wxUSE_TEXTCTRL because it is also used by other