1///////////////////////////////////////////////////////////////////////////////
2// Name:        wx/msgout.h
3// Purpose:     wxMessageOutput class. Shows a message to the user
4// Author:      Mattia Barbon
5// Modified by:
6// Created:     17.07.02
7// RCS-ID:      $Id: msgout.h 35690 2005-09-25 20:23:30Z VZ $
8// Copyright:   (c) Mattia Barbon
9// Licence:     wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_MSGOUT_H_
13#define _WX_MSGOUT_H_
14
15// ----------------------------------------------------------------------------
16// headers
17// ----------------------------------------------------------------------------
18
19#include "wx/defs.h"
20#include "wx/wxchar.h"
21
22// ----------------------------------------------------------------------------
23// wxMessageOutput is a class abstracting formatted output target, i.e.
24// something you can printf() to
25// ----------------------------------------------------------------------------
26
27class WXDLLIMPEXP_BASE wxMessageOutput
28{
29public:
30    virtual ~wxMessageOutput() { }
31
32    // show a message to the user
33    virtual void Printf(const wxChar* format, ...)  ATTRIBUTE_PRINTF_2 = 0;
34
35    // gets the current wxMessageOutput object (may be NULL during
36    // initialization or shutdown)
37    static wxMessageOutput* Get();
38
39    // sets the global wxMessageOutput instance; returns the previous one
40    static wxMessageOutput* Set(wxMessageOutput* msgout);
41
42private:
43    static wxMessageOutput* ms_msgOut;
44};
45
46// ----------------------------------------------------------------------------
47// implementation showing the message to the user in "best" possible way: uses
48// native message box if available (currently only under Windows) and stderr
49// otherwise; unlike wxMessageOutputMessageBox this class is always safe to use
50// ----------------------------------------------------------------------------
51
52class WXDLLIMPEXP_BASE wxMessageOutputBest : public wxMessageOutput
53{
54public:
55    wxMessageOutputBest() { }
56
57    virtual void Printf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
58};
59
60// ----------------------------------------------------------------------------
61// implementation which sends output to stderr
62// ----------------------------------------------------------------------------
63
64class WXDLLIMPEXP_BASE wxMessageOutputStderr : public wxMessageOutput
65{
66public:
67    wxMessageOutputStderr() { }
68
69    virtual void Printf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
70};
71
72// ----------------------------------------------------------------------------
73// implementation which shows output in a message box
74// ----------------------------------------------------------------------------
75
76#if wxUSE_GUI
77
78class WXDLLIMPEXP_CORE wxMessageOutputMessageBox : public wxMessageOutput
79{
80public:
81    wxMessageOutputMessageBox() { }
82
83    virtual void Printf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
84};
85
86#endif // wxUSE_GUI
87
88// ----------------------------------------------------------------------------
89// implementation using the native way of outputting debug messages
90// ----------------------------------------------------------------------------
91
92class WXDLLIMPEXP_BASE wxMessageOutputDebug : public wxMessageOutput
93{
94public:
95    wxMessageOutputDebug() { }
96
97    virtual void Printf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
98};
99
100// ----------------------------------------------------------------------------
101// implementation using wxLog (mainly for backwards compatibility)
102// ----------------------------------------------------------------------------
103
104class WXDLLIMPEXP_BASE wxMessageOutputLog : public wxMessageOutput
105{
106public:
107    wxMessageOutputLog() { }
108
109    virtual void Printf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
110};
111
112#endif
113    // _WX_MSGOUT_H_
114