]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_log.i
reSWIGged
[wxWidgets.git] / wxPython / src / _log.i
index 4a3b7e26b8670ee2090c23231c610a2ace92c001..8084857b0aff8b611f3eece52e336ea992b510b2 100644 (file)
@@ -61,7 +61,7 @@ public:
     static bool IsEnabled();
 
     // change the flag state, return the previous one
-    static bool EnableLogging(bool doIt = True);
+    static bool EnableLogging(bool doIt = true);
 
     // static sink function
     static void OnLog(wxLogLevel level, const wxChar *szString, time_t t);    
@@ -94,7 +94,7 @@ public:
 
     // verbose mode is activated by standard command-line '-verbose'
     // option
-    static void SetVerbose(bool bVerbose = True);
+    static void SetVerbose(bool bVerbose = true);
 
     // Set log level.  Log messages with level > logLevel will not be logged.
     static void SetLogLevel(wxLogLevel logLevel);
@@ -181,10 +181,10 @@ class wxLogWindow : public wxLog
 public:
     wxLogWindow(wxFrame *pParent,         // the parent frame (can be NULL)
             const wxString& szTitle,      // the title of the frame
-            bool bShow = True,            // show window immediately?
-            bool bPassToOld = True);      // pass log messages to the old target?
+            bool bShow = true,            // show window immediately?
+            bool bPassToOld = true);      // pass log messages to the old target?
 
-    void Show(bool bShow = True);
+    void Show(bool bShow = true);
     wxFrame *GetFrame() const;
     wxLog *GetOldLog() const;
     bool IsPassingMessages() const;
@@ -202,27 +202,137 @@ public:
     wxLog *GetOldLog();
 };
 
+// log everything to a buffer
+class wxLogBuffer : public wxLog
+{
+public:
+    wxLogBuffer();
+
+    // get the string contents with all messages logged
+    const wxString& GetBuffer() const { return m_str; }
+
+    // show the buffer contents to the user in the best possible way (this uses
+    // wxMessageOutputMessageBox) and clear it
+    virtual void Flush();
+};
+
 
 //---------------------------------------------------------------------------
 
 unsigned long wxSysErrorCode();
 const wxString wxSysErrorMsg(unsigned long nErrCode = 0);
-void wxLogFatalError(const wxString& msg);
-void wxLogError(const wxString& msg);
-void wxLogWarning(const wxString& msg);
-void wxLogMessage(const wxString& msg);
-void wxLogInfo(const wxString& msg);
-void wxLogDebug(const wxString& msg);
-void wxLogVerbose(const wxString& msg);
-void wxLogStatus(const wxString& msg);
-%name(LogStatusFrame)void wxLogStatus(wxFrame *pFrame, const wxString& msg);
-void wxLogSysError(const wxString& msg);
-
-%nokwargs wxLogTrace;
-void wxLogTrace(unsigned long mask, const wxString& msg);
-void wxLogTrace(const wxString& mask, const wxString& msg);
-
-void wxLogGeneric(unsigned long level, const wxString& msg);
+
+%{// Make somce wrappers that double any % signs so they are 'escaped'
+    void wxPyLogFatalError(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogFatalError(m);
+    }
+    
+    void wxPyLogError(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogError(m);
+    }
+
+    void wxPyLogWarning(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogWarning(m);
+    }
+
+    void wxPyLogMessage(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogMessage(m);
+    }
+
+    void wxPyLogInfo(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogInfo(m);
+    }
+
+    void wxPyLogDebug(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogDebug(m);
+    }
+
+    void wxPyLogVerbose(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogVerbose(m);
+    }
+
+    void wxPyLogStatus(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogStatus(m);
+    }
+
+    void wxPyLogStatusFrame(wxFrame *pFrame, const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogStatus(pFrame, m);
+    }
+
+    void wxPyLogSysError(const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogSysError(m);
+    }
+
+    void wxPyLogGeneric(unsigned long level, const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogGeneric(level, m);
+    }
+
+    void wxPyLogTrace(unsigned long mask, const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogTrace(mask, m);
+    }
+        
+    void wxPyLogTrace(const wxString& mask, const wxString& msg)
+    {
+        wxString m(msg);
+        m.Replace(wxT("%"), wxT("%%"));
+        wxLogTrace(mask, m);
+    }
+    
+%}
+
+%Rename(LogFatalError,  void, wxPyLogFatalError(const wxString& msg));
+%Rename(LogError,  void, wxPyLogError(const wxString& msg));
+%Rename(LogWarning,  void, wxPyLogWarning(const wxString& msg));
+%Rename(LogMessage,  void, wxPyLogMessage(const wxString& msg));
+%Rename(LogInfo,  void, wxPyLogInfo(const wxString& msg));
+%Rename(LogDebug,  void, wxPyLogDebug(const wxString& msg));
+%Rename(LogVerbose,  void, wxPyLogVerbose(const wxString& msg));
+%Rename(LogStatus,  void, wxPyLogStatus(const wxString& msg));
+%Rename(LogStatusFrame,  void, wxPyLogStatusFrame(wxFrame *pFrame, const wxString& msg));
+%Rename(LogSysError,  void, wxPyLogSysError(const wxString& msg));
+
+%Rename(LogGeneric,  void, wxPyLogGeneric(unsigned long level, const wxString& msg));
+
+%nokwargs wxPyLogTrace;
+%Rename(LogTrace,  void, wxPyLogTrace(unsigned long mask, const wxString& msg));
+%Rename(LogTrace,  void, wxPyLogTrace(const wxString& mask, const wxString& msg));
+
 
 // wxLogFatalError helper: show the (fatal) error to the user in a safe way,
 // i.e. without using wxMessageBox() for example because it could crash
@@ -250,26 +360,26 @@ public:
 
     virtual void DoLog(wxLogLevel level, const wxChar *szString, time_t t) {
         bool found;
-        wxPyBeginBlockThreads();
+        wxPyBlock_t blocked = wxPyBeginBlockThreads();
         if ((found = wxPyCBH_findCallback(m_myInst, "DoLog"))) {
             PyObject* s = wx2PyString(szString);
             wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iOi)", level, s, t));
             Py_DECREF(s);
         }
-        wxPyEndBlockThreads();
+        wxPyEndBlockThreads(blocked);
         if (! found)
             wxLog::DoLog(level, szString, t);
     }
 
     virtual void DoLogString(const wxChar *szString, time_t t) {
         bool found;
-        wxPyBeginBlockThreads();
+        wxPyBlock_t blocked = wxPyBeginBlockThreads();
         if ((found = wxPyCBH_findCallback(m_myInst, "DoLogString"))) {
             PyObject* s = wx2PyString(szString);
             wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oi)", s, t));
             Py_DECREF(s);
         }
-        wxPyEndBlockThreads();
+        wxPyEndBlockThreads(blocked);
         if (! found)
             wxLog::DoLogString(szString, t);
     }
@@ -281,7 +391,7 @@ public:
 // Now tell SWIG about it
 class wxPyLog : public wxLog {
 public:
-    %addtofunc wxPyLog   "self._setCallbackInfo(self, PyLog)"
+    %pythonAppend wxPyLog   "self._setCallbackInfo(self, PyLog)"
 
     wxPyLog();