X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1b82138efe9aacda4e0ad7ce4b1551d624524c4..f1d7cbac4369e180a8d7c19f386b301196d09369:/src/common/textcmn.cpp?ds=sidebyside diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 33796a5371..c854878f7a 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -13,6 +13,10 @@ // declarations // ============================================================================ +#ifdef __GNUG__ + #pragma implementation "textctrlbase.h" +#endif + // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -20,7 +24,11 @@ #pragma hdrstop #endif +#if wxUSE_TEXTCTRL + #ifndef WX_PRECOMP + #include "wx/intl.h" + #include "wx/log.h" #include "wx/textctrl.h" #endif // WX_PRECOMP @@ -44,6 +52,49 @@ 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 +#endif // NO_TEXT_WINDOW_STREAM +} + +wxTextCtrlBase::~wxTextCtrlBase() +{ +#ifndef NO_TEXT_WINDOW_STREAM +#if !wxUSE_IOSTREAMH + delete[] m_streambuf; +#endif +#endif +} + +// ---------------------------------------------------------------------------- +// style functions - not implemented here +// ---------------------------------------------------------------------------- + +// apply styling to text range +bool wxTextCtrlBase::SetStyle(long WXUNUSED(start), long WXUNUSED(end), + const wxTextAttr& WXUNUSED(style)) +{ + // to be implemented in derived TextCtrl classes + return FALSE; +} + +// change default text attributes +bool wxTextCtrlBase::SetDefaultStyle(const wxTextAttr &style) +{ + m_defaultStyle = style; + return TRUE; +} + +// get default text attributes +const wxTextAttr& wxTextCtrlBase::GetDefaultStyle() const +{ + return m_defaultStyle; } // ---------------------------------------------------------------------------- @@ -52,6 +103,7 @@ wxTextCtrlBase::wxTextCtrlBase() bool wxTextCtrlBase::LoadFile(const wxString& filename) { +#if wxUSE_FFILE wxFFile file(filename); if ( file.IsOpened() ) { @@ -69,6 +121,7 @@ bool wxTextCtrlBase::LoadFile(const wxString& filename) } wxLogError(_("File couldn't be loaded.")); +#endif // wxUSE_FFILE return FALSE; } @@ -79,11 +132,12 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) if ( !filenameToUse ) { // what kind of message to give? is it an error or a program bug? - wxLogDebug(_T("Can't save textctrl to file without filename.")); + wxLogDebug(wxT("Can't save textctrl to file without filename.")); return FALSE; } +#if wxUSE_FFILE wxFFile file(filename, "w"); if ( file.IsOpened() && file.Write(GetValue()) ) { @@ -96,6 +150,7 @@ bool wxTextCtrlBase::SaveFile(const wxString& filename) } wxLogError(_("The text couldn't be saved.")); +#endif // wxUSE_FFILE return FALSE; } @@ -113,7 +168,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(const wxString& s) wxTextCtrl& wxTextCtrlBase::operator<<(float f) { wxString str; - str.Printf(_T("%.2f"), f); + str.Printf(wxT("%.2f"), f); AppendText(str); return *TEXTCTRL(this); } @@ -121,7 +176,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(float f) wxTextCtrl& wxTextCtrlBase::operator<<(double d) { wxString str; - str.Printf(_T("%.2f"), d); + str.Printf(wxT("%.2f"), d); AppendText(str); return *TEXTCTRL(this); } @@ -129,7 +184,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(double d) wxTextCtrl& wxTextCtrlBase::operator<<(int i) { wxString str; - str.Printf(_T("%d"), i); + str.Printf(wxT("%d"), i); AppendText(str); return *TEXTCTRL(this); } @@ -137,12 +192,12 @@ wxTextCtrl& wxTextCtrlBase::operator<<(int i) wxTextCtrl& wxTextCtrlBase::operator<<(long i) { wxString str; - str.Printf(_T("%ld"), i); + str.Printf(wxT("%ld"), i); AppendText(str); return *TEXTCTRL(this); } -wxTextCtrl& wxTextCtrlBase::operator<<(const char c) +wxTextCtrl& wxTextCtrlBase::operator<<(const wxChar c) { return operator<<(wxString(c)); } @@ -184,3 +239,38 @@ 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()); +} + +#endif // wxUSE_TEXTCTRL +