X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/65ca8c0b797944fc19880a56041edf249089d109..9feb77164b5c3104bf42729b6324021a762fa741:/include/wx/log.h?ds=inline diff --git a/include/wx/log.h b/include/wx/log.h index ee2f933f8f..5d97fe53e2 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -6,7 +6,7 @@ // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_LOG_H_ @@ -101,7 +101,7 @@ enum #define wxTraceOleCalls 0x0100 // OLE interface calls #endif -#include "wx/ioswrap.h" +#include "wx/iosfwrap.h" // ---------------------------------------------------------------------------- // derive from this class to redirect (or suppress, or ...) log messages @@ -143,22 +143,19 @@ public: // and iostream logs don't need it, but wxGuiLog does to avoid showing // 17 modal dialogs one after another) virtual void Flush(); - // call to Flush() may be optimized: call it only if this function - // returns true (although Flush() also returns immediately if there is - // no messages, this functions is more efficient because inline) - bool HasPendingMessages() const { return m_bHasMessages; } - // only one sink is active at each moment // flush the active target if any static void FlushActive() { if ( !ms_suspendCount ) { wxLog *log = GetActiveTarget(); - if ( log && log->HasPendingMessages() ) + if ( log ) log->Flush(); } } + + // only one sink is active at each moment // get current log target, will call wxApp::CreateLogTarget() to // create one if none exists static wxLog *GetActiveTarget(); @@ -224,9 +221,11 @@ public: // make dtor virtual for all derived classes virtual ~wxLog() { } -protected: - bool m_bHasMessages; // any messages in the queue? + // this method exists for backwards compatibility only, don't use + bool HasPendingMessages() const { return TRUE; } + +protected: // the logging functions that can be overriden // default DoLog() prepends the time stamp and a prefix corresponding // to the message to szString and then passes it to DoLogString() @@ -369,6 +368,8 @@ private: // do we pass the messages to the old logger? bool m_bPassMessages; + + DECLARE_NO_COPY_CLASS(wxLogChain) }; // a chain log target which uses itself as the new logger @@ -378,110 +379,9 @@ public: wxLogPassThrough(); }; -// ---------------------------------------------------------------------------- -// the following log targets are only compiled in if the we're compiling the -// GUI part (andnot just the base one) of the library, they're implemented in -// src/generic/logg.cpp *and not src/common/log.cpp unlike all the rest) -// ---------------------------------------------------------------------------- - #if wxUSE_GUI - -#if wxUSE_TEXTCTRL - -// log everything to a text window (GUI only of course) -class WXDLLEXPORT wxLogTextCtrl : public wxLog -{ -public: - wxLogTextCtrl(wxTextCtrl *pTextCtrl); - -private: - // implement sink function - virtual void DoLogString(const wxChar *szString, time_t t); - - // the control we use - wxTextCtrl *m_pTextCtrl; -}; - -#endif // wxUSE_TEXTCTRL - -// ---------------------------------------------------------------------------- -// GUI log target, the default one for wxWindows programs -// ---------------------------------------------------------------------------- - -#if wxUSE_LOGGUI - -class WXDLLEXPORT wxLogGui : public wxLog -{ -public: - // ctor - wxLogGui(); - - // show all messages that were logged since the last Flush() - virtual void Flush(); - -protected: - virtual void DoLog(wxLogLevel level, const wxChar *szString, time_t t); - - // empty everything - void Clear(); - - wxArrayString m_aMessages; // the log message texts - wxArrayInt m_aSeverity; // one of wxLOG_XXX values - wxArrayLong m_aTimes; // the time of each message - bool m_bErrors, // do we have any errors? - m_bWarnings; // any warnings? -}; - -#endif // wxUSE_LOGGUI - -// ---------------------------------------------------------------------------- -// (background) log window: this class forwards all log messages to the log -// target which was active when it was instantiated, but also collects them -// to the log window. This window has it's own menu which allows the user to -// close it, clear the log contents or save it to the file. -// ---------------------------------------------------------------------------- - -#if wxUSE_LOGWINDOW - -class WXDLLEXPORT wxLogWindow : public wxLogPassThrough -{ -public: - wxLogWindow(wxFrame *pParent, // the parent frame (can be NULL) - const wxChar *szTitle, // the title of the frame - bool bShow = TRUE, // show window immediately? - bool bPassToOld = TRUE); // pass messages to the old target? - - ~wxLogWindow(); - - // window operations - // show/hide the log window - void Show(bool bShow = TRUE); - // retrieve the pointer to the frame - wxFrame *GetFrame() const; - - // overridables - // called immediately after the log frame creation allowing for - // any extra initializations - virtual void OnFrameCreate(wxFrame *frame); - // called if the user closes the window interactively, will not be - // called if it is destroyed for another reason (such as when program - // exits) - return TRUE from here to allow the frame to close, FALSE - // to prevent this from happening - virtual bool OnFrameClose(wxFrame *frame); - // called right before the log frame is going to be deleted: will - // always be called unlike OnFrameClose() - virtual void OnFrameDelete(wxFrame *frame); - -protected: - virtual void DoLog(wxLogLevel level, const wxChar *szString, time_t t); - virtual void DoLogString(const wxChar *szString, time_t t); - -private: - wxLogFrame *m_pLogFrame; // the log frame -}; - -#endif // wxUSE_LOGWINDOW - + // include GUI log targets: + #include "wx/generic/logg.h" #endif // wxUSE_GUI // ============================================================================ @@ -530,6 +430,20 @@ inline void WXDLLEXPORT wxVLog##level(arg1, const wxChar *szFormat, \ va_list argptr) {} \ inline void WXDLLEXPORT wxLog##level(arg1, const wxChar *szFormat, ...) {} +// Empty Class to fake wxLogNull +class WXDLLEXPORT wxLogNull +{ +public: + wxLogNull() {} +}; + +// Dummy macros to replace some functions. +#define wxSysErrorCode() (unsigned long)0 +#define wxSysErrorMsg( X ) (const wxChar*)NULL + +// Fake symbolic trace masks... for those that are used frequently +#define wxTRACE_OleCalls wxT("") // OLE interface calls + #endif // wxUSE_LOG/!wxUSE_LOG // a generic function for all levels (level is passes as parameter) @@ -619,4 +533,3 @@ void WXDLLEXPORT wxSafeShowMessage(const wxString& title, const wxString& text); #endif // _WX_LOG_H_ -// vi:sts=4:sw=4:et