| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/msgout.h
 
- // Purpose:     wxMessageOutput class. Shows a message to the user
 
- // Author:      Mattia Barbon
 
- // Modified by:
 
- // Created:     17.07.02
 
- // Copyright:   (c) Mattia Barbon
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_MSGOUT_H_
 
- #define _WX_MSGOUT_H_
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #include "wx/defs.h"
 
- #include "wx/chartype.h"
 
- #include "wx/strvararg.h"
 
- // ----------------------------------------------------------------------------
 
- // wxMessageOutput is a class abstracting formatted output target, i.e.
 
- // something you can printf() to
 
- // ----------------------------------------------------------------------------
 
- // NB: VC6 has a bug that causes linker errors if you have template methods
 
- //     in a class using __declspec(dllimport). The solution is to split such
 
- //     class into two classes, one that contains the template methods and does
 
- //     *not* use WXDLLIMPEXP_BASE and another class that contains the rest
 
- //     (with DLL linkage).
 
- class wxMessageOutputBase
 
- {
 
- public:
 
-     virtual ~wxMessageOutputBase() { }
 
-     // show a message to the user
 
-     // void Printf(const wxString& format, ...) = 0;
 
-     WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wxFormatString&),
 
-                                DoPrintfWchar, DoPrintfUtf8)
 
- #ifdef __WATCOMC__
 
-     // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
 
-     WX_VARARG_WATCOM_WORKAROUND(void, Printf, 1, (const wxString&),
 
-                                 (wxFormatString(f1)));
 
-     WX_VARARG_WATCOM_WORKAROUND(void, Printf, 1, (const wxCStrData&),
 
-                                 (wxFormatString(f1)));
 
-     WX_VARARG_WATCOM_WORKAROUND(void, Printf, 1, (const char*),
 
-                                 (wxFormatString(f1)));
 
-     WX_VARARG_WATCOM_WORKAROUND(void, Printf, 1, (const wchar_t*),
 
-                                 (wxFormatString(f1)));
 
- #endif
 
-     // called by DoPrintf() to output formatted string but can also be called
 
-     // directly if no formatting is needed
 
-     virtual void Output(const wxString& str) = 0;
 
- protected:
 
-     // NB: this is pure virtual so that it can be implemented in dllexported
 
-     //     wxMessagOutput class
 
- #if !wxUSE_UTF8_LOCALE_ONLY
 
-     virtual void DoPrintfWchar(const wxChar *format, ...) = 0;
 
- #endif
 
- #if wxUSE_UNICODE_UTF8
 
-     virtual void DoPrintfUtf8(const char *format, ...) = 0;
 
- #endif
 
- };
 
- #ifdef __VISUALC__
 
-     // "non dll-interface class 'wxStringPrintfMixin' used as base interface
 
-     // for dll-interface class 'wxString'" -- this is OK in our case
 
-     #pragma warning (push)
 
-     #pragma warning (disable:4275)
 
- #endif
 
- class WXDLLIMPEXP_BASE wxMessageOutput : public wxMessageOutputBase
 
- {
 
- public:
 
-     virtual ~wxMessageOutput() { }
 
-     // gets the current wxMessageOutput object (may be NULL during
 
-     // initialization or shutdown)
 
-     static wxMessageOutput* Get();
 
-     // sets the global wxMessageOutput instance; returns the previous one
 
-     static wxMessageOutput* Set(wxMessageOutput* msgout);
 
- protected:
 
- #if !wxUSE_UTF8_LOCALE_ONLY
 
-     virtual void DoPrintfWchar(const wxChar *format, ...);
 
- #endif
 
- #if wxUSE_UNICODE_UTF8
 
-     virtual void DoPrintfUtf8(const char *format, ...);
 
- #endif
 
- private:
 
-     static wxMessageOutput* ms_msgOut;
 
- };
 
- #ifdef __VISUALC__
 
-     #pragma warning (pop)
 
- #endif
 
- // ----------------------------------------------------------------------------
 
- // implementation which sends output to stderr or specified file
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_BASE wxMessageOutputStderr : public wxMessageOutput
 
- {
 
- public:
 
-     wxMessageOutputStderr(FILE *fp = stderr) : m_fp(fp) { }
 
-     virtual void Output(const wxString& str);
 
- protected:
 
-     // return the string with "\n" appended if it doesn't already terminate
 
-     // with it (in which case it's returned unchanged)
 
-     wxString AppendLineFeedIfNeeded(const wxString& str);
 
-     FILE *m_fp;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // implementation showing the message to the user in "best" possible way:
 
- // uses stderr or message box if available according to the flag given to ctor.
 
- // ----------------------------------------------------------------------------
 
- enum wxMessageOutputFlags
 
- {
 
-     wxMSGOUT_PREFER_STDERR = 0, // use stderr if available (this is the default)
 
-     wxMSGOUT_PREFER_MSGBOX = 1  // always use message box if available
 
- };
 
- class WXDLLIMPEXP_BASE wxMessageOutputBest : public wxMessageOutputStderr
 
- {
 
- public:
 
-     wxMessageOutputBest(wxMessageOutputFlags flags = wxMSGOUT_PREFER_STDERR)
 
-         : m_flags(flags) { }
 
-     virtual void Output(const wxString& str);
 
- private:
 
-     wxMessageOutputFlags m_flags;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // implementation which shows output in a message box
 
- // ----------------------------------------------------------------------------
 
- #if wxUSE_GUI && wxUSE_MSGDLG
 
- class WXDLLIMPEXP_CORE wxMessageOutputMessageBox : public wxMessageOutput
 
- {
 
- public:
 
-     wxMessageOutputMessageBox() { }
 
-     virtual void Output(const wxString& str);
 
- };
 
- #endif // wxUSE_GUI && wxUSE_MSGDLG
 
- // ----------------------------------------------------------------------------
 
- // implementation using the native way of outputting debug messages
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_BASE wxMessageOutputDebug : public wxMessageOutputStderr
 
- {
 
- public:
 
-     wxMessageOutputDebug() { }
 
-     virtual void Output(const wxString& str);
 
- };
 
- // ----------------------------------------------------------------------------
 
- // implementation using wxLog (mainly for backwards compatibility)
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_BASE wxMessageOutputLog : public wxMessageOutput
 
- {
 
- public:
 
-     wxMessageOutputLog() { }
 
-     virtual void Output(const wxString& str);
 
- };
 
- #endif // _WX_MSGOUT_H_
 
 
  |