]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/log.h
preparing for fix to OSX problems
[wxWidgets.git] / include / wx / log.h
index ee2f933f8f786955fafcfb9812678214a53471fa..5d97fe53e2fe0ce09b95b15d00c65154471960d1 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     29/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Created:     29/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef   _WX_LOG_H_
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef   _WX_LOG_H_
@@ -101,7 +101,7 @@ enum
     #define wxTraceOleCalls 0x0100  // OLE interface calls
 #endif
 
     #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
 
 // ----------------------------------------------------------------------------
 // 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();
         // 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();
         // flush the active target if any
     static void FlushActive()
     {
         if ( !ms_suspendCount )
         {
             wxLog *log = GetActiveTarget();
-            if ( log && log->HasPendingMessages() )
+            if ( log )
                 log->Flush();
         }
     }
                 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();
         // 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() { }
 
     // 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()
     // 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;
 
     // 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
 };
 
 // a chain log target which uses itself as the new logger
@@ -378,110 +379,9 @@ public:
     wxLogPassThrough();
 };
 
     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_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
 
 // ============================================================================
 #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, ...) {}
 
                                      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)
 #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_
 
 
 #endif  // _WX_LOG_H_
 
-// vi:sts=4:sw=4:et