WX_DEFINE_VARARG_FUNC_VOID(Printf, DoPrintf)
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2 = 0;
+ void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str) = 0;
};
#ifdef __VISUALC__
wxMessageOutputBest() { }
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str);
};
// ----------------------------------------------------------------------------
wxMessageOutputStderr() { }
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str);
};
// ----------------------------------------------------------------------------
wxMessageOutputMessageBox() { }
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str);
};
#endif // wxUSE_GUI
wxMessageOutputDebug() { }
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str);
};
// ----------------------------------------------------------------------------
wxMessageOutputLog() { }
protected:
- virtual void DoPrintf(const wxChar* format, ...) ATTRIBUTE_PRINTF_2;
+ virtual void Output(const wxString& str);
};
#endif
return old;
}
+void wxMessageOutputBase::DoPrintf(const wxChar* format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ wxString out;
+
+ out.PrintfV(format, args);
+ va_end(args);
+
+ Output(out);
+}
+
// ----------------------------------------------------------------------------
// wxMessageOutputBest
// ----------------------------------------------------------------------------
#endif // __WINDOWS__
-void wxMessageOutputBest::DoPrintf(const wxChar* format, ...)
+void wxMessageOutputBest::Output(const wxString& str)
{
- va_list args;
- va_start(args, format);
- wxString out;
-
- out.PrintfV(format, args);
- va_end(args);
-
#ifdef __WINDOWS__
if ( !IsInConsole() )
{
- ::MessageBox(NULL, out, _T("wxWidgets"), MB_ICONINFORMATION | MB_OK);
+ ::MessageBox(NULL, str, _T("wxWidgets"), MB_ICONINFORMATION | MB_OK);
}
else
#endif // __WINDOWS__/!__WINDOWS__
{
- fprintf(stderr, "%s", (const char*) out.mb_str());
+ const wxWX2MBbuf buf(str.mb_str());
+
+ if ( buf )
+ fprintf(stderr, "%s", (const char*) buf);
+ else // print at least something
+ fprintf(stderr, "%s", (const char*) str.ToAscii());
}
}
// wxMessageOutputStderr
// ----------------------------------------------------------------------------
-void wxMessageOutputStderr::DoPrintf(const wxChar* format, ...)
+void wxMessageOutputStderr::Output(const wxString& str)
{
- va_list args;
- va_start(args, format);
- wxString out;
-
- out.PrintfV(format, args);
- va_end(args);
+ const wxWX2MBbuf buf(str.mb_str());
- fprintf(stderr, "%s", (const char*) out.mb_str());
+ if ( buf )
+ fprintf(stderr, "%s", (const char*) buf);
+ else // print at least something
+ fprintf(stderr, "%s", (const char*) str.ToAscii());
}
// ----------------------------------------------------------------------------
// wxMessageOutputDebug
// ----------------------------------------------------------------------------
-void wxMessageOutputDebug::DoPrintf(const wxChar* format, ...)
+void wxMessageOutputDebug::Output(const wxString& str)
{
- wxString out;
-
- va_list args;
- va_start(args, format);
-
- out.PrintfV(format, args);
- va_end(args);
+ wxString out(str);
#if defined(__WXMSW__) && !defined(__WXMICROWIN__)
out.Replace(wxT("\t"), wxT(" "));
// wxMessageOutputLog
// ----------------------------------------------------------------------------
-void wxMessageOutputLog::DoPrintf(const wxChar* format, ...)
+void wxMessageOutputLog::Output(const wxString& str)
{
- wxString out;
-
- va_list args;
- va_start(args, format);
-
- out.PrintfV(format, args);
- va_end(args);
+ wxString out(str);
out.Replace(wxT("\t"), wxT(" "));
#if wxUSE_GUI
-void wxMessageOutputMessageBox::DoPrintf(const wxChar* format, ...)
+void wxMessageOutputMessageBox::Output(const wxString& str)
{
- va_list args;
- va_start(args, format);
- wxString out;
-
- out.PrintfV(format, args);
- va_end(args);
+ wxString out(str);
// the native MSW msg box understands the TABs, others don't
#ifndef __WXMSW__