From 4e819f106b95b247b5f4911fab2f59ada1f94290 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 30 Nov 2004 22:10:31 +0000 Subject: [PATCH] In the wx.LogXXX function wrappers double all % characters so the log function won't try to do parameter substitutions. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/src/__misc_rename.i | 12 ---- wxPython/src/_log.i | 128 ++++++++++++++++++++++++++++++----- wxPython/wxPython/_misc.py | 2 +- 3 files changed, 113 insertions(+), 29 deletions(-) diff --git a/wxPython/src/__misc_rename.i b/wxPython/src/__misc_rename.i index ad56e1cab7..318cf77849 100644 --- a/wxPython/src/__misc_rename.i +++ b/wxPython/src/__misc_rename.i @@ -209,18 +209,6 @@ %rename(LogChain) wxLogChain; %rename(SysErrorCode) wxSysErrorCode; %rename(SysErrorMsg) wxSysErrorMsg; -%rename(LogFatalError) wxLogFatalError; -%rename(LogError) wxLogError; -%rename(LogWarning) wxLogWarning; -%rename(LogMessage) wxLogMessage; -%rename(LogInfo) wxLogInfo; -%rename(LogDebug) wxLogDebug; -%rename(LogVerbose) wxLogVerbose; -%rename(LogStatus) wxLogStatus; -%rename(LogSysError) wxLogSysError; -%rename(LogTrace) wxLogTrace; -%rename(LogTrace) wxLogTrace; -%rename(LogGeneric) wxLogGeneric; %rename(SafeShowMessage) wxSafeShowMessage; %rename(LogNull) wxLogNull; %rename(PyLog) wxPyLog; diff --git a/wxPython/src/_log.i b/wxPython/src/_log.i index 22731e4678..17a737e292 100644 --- a/wxPython/src/_log.i +++ b/wxPython/src/_log.i @@ -207,22 +207,118 @@ public: 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); + } + +%} + +%name(LogFatalError) void wxPyLogFatalError(const wxString& msg); +%name(LogError) void wxPyLogError(const wxString& msg); +%name(LogWarning) void wxPyLogWarning(const wxString& msg); +%name(LogMessage) void wxPyLogMessage(const wxString& msg); +%name(LogInfo) void wxPyLogInfo(const wxString& msg); +%name(LogDebug) void wxPyLogDebug(const wxString& msg); +%name(LogVerbose) void wxPyLogVerbose(const wxString& msg); +%name(LogStatus) void wxPyLogStatus(const wxString& msg); +%name(LogStatusFrame) void wxPyLogStatusFrame(wxFrame *pFrame, const wxString& msg); +%name(LogSysError) void wxPyLogSysError(const wxString& msg); + +%name(LogGeneric) void wxPyLogGeneric(unsigned long level, const wxString& msg); + +%nokwargs wxPyLogTrace; +%name(LogTrace) void wxPyLogTrace(unsigned long mask, const wxString& msg); +%name(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 diff --git a/wxPython/wxPython/_misc.py b/wxPython/wxPython/_misc.py index 65d24adb16..af1fcceb7c 100644 --- a/wxPython/wxPython/_misc.py +++ b/wxPython/wxPython/_misc.py @@ -300,9 +300,9 @@ wxLogVerbose = wx._misc.LogVerbose wxLogStatus = wx._misc.LogStatus wxLogStatusFrame = wx._misc.LogStatusFrame wxLogSysError = wx._misc.LogSysError +wxLogGeneric = wx._misc.LogGeneric wxLogTrace = wx._misc.LogTrace wxLogTrace = wx._misc.LogTrace -wxLogGeneric = wx._misc.LogGeneric wxSafeShowMessage = wx._misc.SafeShowMessage wxLogNull = wx._misc.LogNull wxLogNullPtr = wx._misc.LogNullPtr -- 2.45.2