From 15cdc3414964bf024625c67497b2cd5db8934908 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= <abx@abx.art.pl> Date: Wed, 13 Apr 2005 17:51:16 +0000 Subject: [PATCH] wxStreamToTextRedirector fixes, define wxHAS_TEXT_WINDOW_STREAM. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/textctrl.h | 40 +++++++++++++++++------------------- samples/widgets/textctrl.cpp | 11 +++++----- src/common/textcmn.cpp | 4 ++-- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h index 0693fca9a4..0f5ed15747 100644 --- a/include/wx/textctrl.h +++ b/include/wx/textctrl.h @@ -28,26 +28,24 @@ #include "wx/dynarray.h" // wxArrayInt #include "wx/gdicmn.h" // wxPoint -// 16-bit Borland 4.0 doesn't seem to allow multiple inheritance with wxWindow -// and streambuf: it complains about deriving a huge class from the huge class -// streambuf. !! Also, can't use streambuf if making or using a DLL :-( +// Open Watcom 1.3 does allow only ios::rdbuf() while +// we want something with streambuf parameter +// Also, can't use streambuf if making or using a DLL :-( -#if (defined(__BORLANDC__)) || defined(__MWERKS__) || \ +#if defined(__WATCOMC__) || \ + defined(__MWERKS__) || \ (defined(__WINDOWS__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL))) - #define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM - #if wxUSE_STD_IOSTREAM - #include "wx/ioswrap.h" // derivation: we need the full decls. - #else // !wxUSE_STD_IOSTREAM - // can't compile this feature in if we don't use streams at all - #define NO_TEXT_WINDOW_STREAM - #endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM + #define wxHAS_TEXT_WINDOW_STREAM 0 +#elif wxUSE_STD_IOSTREAM + #include "wx/ioswrap.h" + #define wxHAS_TEXT_WINDOW_STREAM 1 +#else + #define wxHAS_TEXT_WINDOW_STREAM 0 #endif -#if defined(__WXMSW__) && defined(__MINGW32__) - #include "wx/msw/winundef.h" +#if WXWIN_COMPATIBILITY_2_4 && !wxHAS_TEXT_WINDOW_STREAM + // define old flag if one could use it somewhere + #define NO_TEXT_WINDOW_STREAM #endif class WXDLLEXPORT wxTextCtrl; @@ -267,7 +265,7 @@ private: // ---------------------------------------------------------------------------- class WXDLLEXPORT wxTextCtrlBase : public wxControl -#ifndef NO_TEXT_WINDOW_STREAM +#if wxHAS_TEXT_WINDOW_STREAM , public wxSTD streambuf #endif @@ -384,9 +382,9 @@ public: virtual void SetEditable(bool editable) = 0; // override streambuf method -#ifndef NO_TEXT_WINDOW_STREAM +#if wxHAS_TEXT_WINDOW_STREAM int overflow(int i); -#endif // NO_TEXT_WINDOW_STREAM +#endif // wxHAS_TEXT_WINDOW_STREAM // stream-like insertion operators: these are always available, whether we // were, or not, compiled with streambuf support @@ -503,7 +501,7 @@ typedef void (wxEvtHandler::*wxTextUrlEventFunction)(wxTextUrlEvent&); #define EVT_TEXT_URL(id, fn) wx__DECLARE_TEXTURLEVT(URL, id, fn) #define EVT_TEXT_MAXLEN(id, fn) wx__DECLARE_TEXTEVT(MAXLEN, id, fn) -#ifndef NO_TEXT_WINDOW_STREAM +#if wxHAS_TEXT_WINDOW_STREAM // ---------------------------------------------------------------------------- // wxStreamToTextRedirector: this class redirects all data sent to the given @@ -545,7 +543,7 @@ private: wxSTD streambuf *m_sbufOld; }; -#endif // !NO_TEXT_WINDOW_STREAM +#endif // wxHAS_TEXT_WINDOW_STREAM #endif // wxUSE_TEXTCTRL diff --git a/samples/widgets/textctrl.cpp b/samples/widgets/textctrl.cpp index 8377e4c079..e9282d977f 100644 --- a/samples/widgets/textctrl.cpp +++ b/samples/widgets/textctrl.cpp @@ -40,6 +40,7 @@ #endif #include "wx/sizer.h" +#include "wx/ioswrap.h" #include "widgets.h" @@ -554,7 +555,7 @@ wxTextCtrl *TextWidgetsPage::CreateInfoText() wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, - wxSize(s_maxWidth, -1), + wxSize(s_maxWidth, wxDefaultCoord), wxTE_READONLY); return text; } @@ -887,13 +888,11 @@ void TextWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) void TextWidgetsPage::OnStreamRedirector(wxCommandEvent& WXUNUSED(event)) { -// Note, NO_TEXT_WINDOW_STREAM is private flag of wxWidgets header -// it's simpler to check it rather than duplicate whole -#ifdef NO_TEXT_WINDOW_STREAM - wxMessageBox(_T("This wxWidgets build does not support wxStreamToTextRedirector")); -#else +#if wxHAS_TEXT_WINDOW_STREAM wxStreamToTextRedirector redirect(m_text); wxString str( _T("Outputed to cout, appears in wxTextCtrl!") ); cout << str << endl; +#else + wxMessageBox(_T("This wxWidgets build does not support wxStreamToTextRedirector")); #endif } diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp index 977de53640..a9f1f0b34d 100644 --- a/src/common/textcmn.cpp +++ b/src/common/textcmn.cpp @@ -299,7 +299,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(const wxChar c) // streambuf methods implementation // ---------------------------------------------------------------------------- -#ifndef NO_TEXT_WINDOW_STREAM +#if wxHAS_TEXT_WINDOW_STREAM int wxTextCtrlBase::overflow(int c) { @@ -309,7 +309,7 @@ int wxTextCtrlBase::overflow(int c) return 0; } -#endif // NO_TEXT_WINDOW_STREAM +#endif // wxHAS_TEXT_WINDOW_STREAM // ---------------------------------------------------------------------------- // clipboard stuff -- 2.47.2