improve wxMessageOutputBest console output under Windows (closes 9146)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -100,21 +100,6 @@ private:
|
||||
#pragma warning (default:4275)
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// implementation showing the message to the user in "best" possible way: uses
|
||||
// native message box if available (currently only under Windows) and stderr
|
||||
// otherwise; unlike wxMessageOutputMessageBox this class is always safe to use
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxMessageOutputBest : public wxMessageOutput
|
||||
{
|
||||
public:
|
||||
wxMessageOutputBest() { }
|
||||
|
||||
protected:
|
||||
virtual void Output(const wxString& str);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// implementation which sends output to stderr
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -126,6 +111,34 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void Output(const wxString& str);
|
||||
|
||||
// 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);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// 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) { }
|
||||
|
||||
protected:
|
||||
virtual void Output(const wxString& str);
|
||||
|
||||
private:
|
||||
wxMessageOutputFlags m_flags;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -149,7 +162,7 @@ protected:
|
||||
// implementation using the native way of outputting debug messages
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_BASE wxMessageOutputDebug : public wxMessageOutput
|
||||
class WXDLLIMPEXP_BASE wxMessageOutputDebug : public wxMessageOutputStderr
|
||||
{
|
||||
public:
|
||||
wxMessageOutputDebug() { }
|
||||
@@ -171,5 +184,4 @@ protected:
|
||||
virtual void Output(const wxString& str);
|
||||
};
|
||||
|
||||
#endif
|
||||
// _WX_MSGOUT_H_
|
||||
#endif // _WX_MSGOUT_H_
|
||||
|
@@ -65,6 +65,23 @@ public:
|
||||
virtual GSocketManager *GetSocketManager() { return ms_manager; }
|
||||
#endif // wxUSE_SOCKETS
|
||||
|
||||
|
||||
#ifndef __WXWINCE__
|
||||
// console helpers
|
||||
// ---------------
|
||||
|
||||
// this method can be overridden by a derived class to always return true
|
||||
// or false to force [not] using the console for output to stderr
|
||||
//
|
||||
// by default console applications always return true from here while the
|
||||
// GUI ones only return true if they're being run from console and there is
|
||||
// no other activity happening in this console
|
||||
virtual bool CanUseStderr() = 0;
|
||||
|
||||
// write text to the console, return true if ok or false on error
|
||||
virtual bool WriteToStderr(const wxString& text) = 0;
|
||||
#endif // !__WXWINCE__
|
||||
|
||||
protected:
|
||||
// implementation of WaitForThread() for the console applications which is
|
||||
// also used by the GUI code if it doesn't [yet|already} dispatch events
|
||||
|
@@ -28,6 +28,10 @@ public:
|
||||
#endif
|
||||
virtual bool DoMessageFromThreadWait();
|
||||
virtual WXDWORD WaitForThread(WXHANDLE hThread);
|
||||
#ifndef __WXWINCE__
|
||||
virtual bool CanUseStderr() { return true; }
|
||||
virtual bool WriteToStderr(const wxString& text);
|
||||
#endif // !__WXWINCE__
|
||||
};
|
||||
|
||||
#if wxUSE_GUI
|
||||
@@ -45,9 +49,13 @@ public:
|
||||
virtual bool DoMessageFromThreadWait();
|
||||
virtual wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL) const;
|
||||
virtual WXDWORD WaitForThread(WXHANDLE hThread);
|
||||
|
||||
#ifndef __WXWINCE__
|
||||
virtual bool CanUseStderr();
|
||||
virtual bool WriteToStderr(const wxString& text);
|
||||
#endif // !__WXWINCE__
|
||||
};
|
||||
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
#endif // _WX_MSW_APPTRAIT_H_
|
||||
|
||||
|
Reference in New Issue
Block a user