-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 some 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));
+