X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4bc1afd502a0f6f31bddb349a63f41a828f54ded..a308135449c51cbf067c128c9b61354ca7f899c9:/src/common/textcmn.cpp diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 1686e5c91e..7ced7d2de5 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -12,10 +12,11 @@ // ============================================================================ // declarations // ============================================================================ + #ifdef __GNUG__ #pragma implementation "textctrlbase.h" #endif - + // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -23,6 +24,8 @@ #pragma hdrstop #endif +#if wxUSE_TEXTCTRL + #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/log.h" @@ -43,6 +46,13 @@ // implementation // ============================================================================ +IMPLEMENT_DYNAMIC_CLASS(wxTextUrlEvent, wxCommandEvent) + +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_UPDATED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_ENTER) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_URL) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_MAXLEN) + // ---------------------------------------------------------------------------- // ctor // ---------------------------------------------------------------------------- @@ -50,13 +60,13 @@ wxTextCtrlBase::wxTextCtrlBase() { #ifndef NO_TEXT_WINDOW_STREAM - #if wxUSE_IOSTREAMH - if (allocate()) - setp(base(),ebuf()); - #else - m_streambuf=new char[64]; - setp(m_streambuf,m_streambuf+64); - #endif //wxUSE_IOSTREAMH + #if wxUSE_IOSTREAMH + if (allocate()) + setp(base(),ebuf()); + #else + m_streambuf = new char[64]; + setp(m_streambuf, m_streambuf + 64); + #endif //wxUSE_IOSTREAMH #endif // NO_TEXT_WINDOW_STREAM } @@ -64,7 +74,7 @@ wxTextCtrlBase::~wxTextCtrlBase() { #ifndef NO_TEXT_WINDOW_STREAM #if !wxUSE_IOSTREAMH - delete m_streambuf; + delete[] m_streambuf; #endif #endif } @@ -100,6 +110,7 @@ const wxTextAttr& wxTextCtrlBase::GetDefaultStyle() const bool wxTextCtrlBase::LoadFile(const wxString& filename) { +#if wxUSE_FFILE wxFFile file(filename); if ( file.IsOpened() ) { @@ -117,6 +128,7 @@ bool wxTextCtrlBase::LoadFile(const wxString& filename) } wxLogError(_("File couldn't be loaded.")); +#endif // wxUSE_FFILE return FALSE; } @@ -132,6 +144,7 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) return FALSE; } +#if wxUSE_FFILE wxFFile file(filename, "w"); if ( file.IsOpened() && file.Write(GetValue()) ) { @@ -144,6 +157,7 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) } wxLogError(_("The text couldn't be saved.")); +#endif // wxUSE_FFILE return FALSE; } @@ -232,3 +246,46 @@ int wxTextCtrlBase::underflow() #endif // NO_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(); +} + +// ---------------------------------------------------------------------------- +// misc +// ---------------------------------------------------------------------------- + +void wxTextCtrlBase::SelectAll() +{ + SetSelection(0, GetLastPosition()); +} + +#else // !wxUSE_TEXTCTRL + +// define this one even if !wxUSE_TEXTCTRL because it is also used by other +// controls (wxComboBox and wxSpinCtrl) +#include "wx/event.h" + +DEFINE_EVENT_TYPE(wxEVT_COMMAND_TEXT_UPDATED) + +#endif // wxUSE_TEXTCTRL/!wxUSE_TEXTCTRL +