]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/common/msgout.cpp
added missing include file for ProjectBuilder (Mac OS X)
[wxWidgets.git] / src / common / msgout.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: common/msgout.cpp
3// Purpose: wxMessageOutput implementation
4// Author: Mattia Barbon
5// Modified by:
6// Created: 17.07.02
7// RCS-ID: $Id$
8// Copyright: (c) the wxWindows team
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12// ============================================================================
13// declarations
14// ============================================================================
15
16// ---------------------------------------------------------------------------
17// headers
18// ---------------------------------------------------------------------------
19
20#ifdef __GNUG__
21 #pragma implementation "msgout.h"
22#endif
23
24// For compilers that support precompilation, includes "wx.h".
25#include "wx/wxprec.h"
26
27#if defined(__BORLANDC__)
28 #pragma hdrstop
29#endif
30
31#ifndef WX_PRECOMP
32 #include "wx/string.h"
33 #include "wx/ffile.h"
34 #include "wx/app.h"
35 #if wxUSE_GUI
36 #include "wx/msgdlg.h"
37 #endif // wxUSE_GUI
38#endif
39
40#include "wx/msgout.h"
41
42#include <stdarg.h>
43#include <stdio.h>
44
45// ===========================================================================
46// implementation
47// ===========================================================================
48
49wxMessageOutput* wxMessageOutput::ms_msgOut = 0;
50
51wxMessageOutput* wxMessageOutput::Get()
52{
53 // FIXME this is an hack
54 static bool inGet = FALSE;
55
56 if(!ms_msgOut && wxTheApp && !inGet)
57 {
58 inGet = TRUE;
59 wxTheApp->DoInit();
60 }
61
62 inGet = FALSE;
63 return ms_msgOut;
64}
65
66wxMessageOutput* wxMessageOutput::Set(wxMessageOutput* msgout)
67{
68 wxMessageOutput* old = ms_msgOut;
69 ms_msgOut = msgout;
70 return old;
71}
72
73// ----------------------------------------------------------------------------
74// wxMessageOutputStderr
75// ----------------------------------------------------------------------------
76
77void wxMessageOutputStderr::Printf(const wxChar* format, ...)
78{
79 va_list args;
80 va_start(args, format);
81 wxString out;
82
83 out.PrintfV(format, args);
84 va_end(args);
85
86 fprintf(stderr, "%s", out.mb_str());
87}
88
89// ----------------------------------------------------------------------------
90// wxMessageOutputMessageBox
91// ----------------------------------------------------------------------------
92
93#if wxUSE_GUI
94
95void wxMessageOutputMessageBox::Printf(const wxChar* format, ...)
96{
97 va_list args;
98 va_start(args, format);
99 wxString out;
100
101 out.PrintfV(format, args);
102 va_end(args);
103
104#ifndef __WXMSW__
105 out.Replace("\t"," ");
106#endif
107 ::wxMessageBox(out);
108}
109
110#endif // wxUSE_GUI
111
112// ----------------------------------------------------------------------------
113// wxMessageOutputLog
114// ----------------------------------------------------------------------------
115
116void wxMessageOutputLog::Printf(const wxChar* format, ...)
117{
118 va_list args;
119 va_start(args, format);
120 wxString out;
121
122 out.PrintfV(format, args);
123 va_end(args);
124
125 out.Replace("\t"," ");
126 // under Motif, wxMessageDialog needs a parent window, so we use
127 // wxLog, which is better than nothing
128 ::wxLogMessage("%s", out.c_str());
129}