wxStreamToTextRedirector fixes, define wxHAS_TEXT_WINDOW_STREAM.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2005-04-13 17:51:16 +00:00
parent 934f1f0a3f
commit 15cdc34149
3 changed files with 27 additions and 30 deletions

View File

@@ -28,28 +28,26 @@
#include "wx/dynarray.h" // wxArrayInt #include "wx/dynarray.h" // wxArrayInt
#include "wx/gdicmn.h" // wxPoint #include "wx/gdicmn.h" // wxPoint
// 16-bit Borland 4.0 doesn't seem to allow multiple inheritance with wxWindow // Open Watcom 1.3 does allow only ios::rdbuf() while
// and streambuf: it complains about deriving a huge class from the huge class // we want something with streambuf parameter
// streambuf. !! Also, can't use streambuf if making or using a DLL :-( // 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))) (defined(__WINDOWS__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL)))
#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 WXWIN_COMPATIBILITY_2_4 && !wxHAS_TEXT_WINDOW_STREAM
// define old flag if one could use it somewhere
#define NO_TEXT_WINDOW_STREAM #define NO_TEXT_WINDOW_STREAM
#endif #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
#endif
#if defined(__WXMSW__) && defined(__MINGW32__)
#include "wx/msw/winundef.h"
#endif
class WXDLLEXPORT wxTextCtrl; class WXDLLEXPORT wxTextCtrl;
class WXDLLEXPORT wxTextCtrlBase; class WXDLLEXPORT wxTextCtrlBase;
@@ -267,7 +265,7 @@ private:
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxTextCtrlBase : public wxControl class WXDLLEXPORT wxTextCtrlBase : public wxControl
#ifndef NO_TEXT_WINDOW_STREAM #if wxHAS_TEXT_WINDOW_STREAM
, public wxSTD streambuf , public wxSTD streambuf
#endif #endif
@@ -384,9 +382,9 @@ public:
virtual void SetEditable(bool editable) = 0; virtual void SetEditable(bool editable) = 0;
// override streambuf method // override streambuf method
#ifndef NO_TEXT_WINDOW_STREAM #if wxHAS_TEXT_WINDOW_STREAM
int overflow(int i); int overflow(int i);
#endif // NO_TEXT_WINDOW_STREAM #endif // wxHAS_TEXT_WINDOW_STREAM
// stream-like insertion operators: these are always available, whether we // stream-like insertion operators: these are always available, whether we
// were, or not, compiled with streambuf support // 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_URL(id, fn) wx__DECLARE_TEXTURLEVT(URL, id, fn)
#define EVT_TEXT_MAXLEN(id, fn) wx__DECLARE_TEXTEVT(MAXLEN, 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 // wxStreamToTextRedirector: this class redirects all data sent to the given
@@ -545,7 +543,7 @@ private:
wxSTD streambuf *m_sbufOld; wxSTD streambuf *m_sbufOld;
}; };
#endif // !NO_TEXT_WINDOW_STREAM #endif // wxHAS_TEXT_WINDOW_STREAM
#endif // wxUSE_TEXTCTRL #endif // wxUSE_TEXTCTRL

View File

@@ -40,6 +40,7 @@
#endif #endif
#include "wx/sizer.h" #include "wx/sizer.h"
#include "wx/ioswrap.h"
#include "widgets.h" #include "widgets.h"
@@ -554,7 +555,7 @@ wxTextCtrl *TextWidgetsPage::CreateInfoText()
wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxEmptyString,
wxDefaultPosition, wxDefaultPosition,
wxSize(s_maxWidth, -1), wxSize(s_maxWidth, wxDefaultCoord),
wxTE_READONLY); wxTE_READONLY);
return text; return text;
} }
@@ -887,13 +888,11 @@ void TextWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
void TextWidgetsPage::OnStreamRedirector(wxCommandEvent& WXUNUSED(event)) void TextWidgetsPage::OnStreamRedirector(wxCommandEvent& WXUNUSED(event))
{ {
// Note, NO_TEXT_WINDOW_STREAM is private flag of wxWidgets header #if wxHAS_TEXT_WINDOW_STREAM
// 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
wxStreamToTextRedirector redirect(m_text); wxStreamToTextRedirector redirect(m_text);
wxString str( _T("Outputed to cout, appears in wxTextCtrl!") ); wxString str( _T("Outputed to cout, appears in wxTextCtrl!") );
cout << str << endl; cout << str << endl;
#else
wxMessageBox(_T("This wxWidgets build does not support wxStreamToTextRedirector"));
#endif #endif
} }

View File

@@ -299,7 +299,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(const wxChar c)
// streambuf methods implementation // streambuf methods implementation
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#ifndef NO_TEXT_WINDOW_STREAM #if wxHAS_TEXT_WINDOW_STREAM
int wxTextCtrlBase::overflow(int c) int wxTextCtrlBase::overflow(int c)
{ {
@@ -309,7 +309,7 @@ int wxTextCtrlBase::overflow(int c)
return 0; return 0;
} }
#endif // NO_TEXT_WINDOW_STREAM #endif // wxHAS_TEXT_WINDOW_STREAM
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// clipboard stuff // clipboard stuff