added support for wxCONFIG_USE_NO_ESCAPE_CHARACTERS flag to wxFileConfig (patch 591381)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16622 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-08-20 14:29:22 +00:00
parent 33293a32fe
commit 8dce54c9e6
3 changed files with 36 additions and 8 deletions

View File

@@ -369,7 +369,23 @@ the parameter is empty, the parameter will be set to a default. If the
parameter is present but the style flag not, the relevant flag will be added
to the style. For wxFileConfig you can also add wxCONFIG\_USE\_RELATIVE\_PATH
by logicaly or'ing it to either of the \_FILE options to tell wxFileConfig to
use relative instead of absolute paths. }
use relative instead of absolute paths. For wxFileConfig, you can also
add wxCONFIG\_USE\_NO\_ESCAPE\_CHARACTERS which will turn off character
escaping for the values of entries stored in the config file: for example
a {\it foo} key with some backslash characters will be stored as
\begin{verbatim}
foo=C:\mydir
\end{verbatim}
instead of the usual storage of
\begin{verbatim}
foo=C:\\mydir
\end{verbatim}
The wxCONFIG\_USE\_NO\_ESCAPE\_CHARACTERS style can be helpful if your config
file must be read or written to by a non-wxWindows program (which might not
understand the escape characters). Note, however, that if
wxCONFIG\_USE\_NO\_ESCAPE\_CHARACTERS style is used, it is is now
your application's responsibility to ensure that there is no newline or
other illegal characters in a value, before writing that value to the file.}
\wxheading{Remarks}

View File

@@ -58,7 +58,8 @@ enum
{
wxCONFIG_USE_LOCAL_FILE = 1,
wxCONFIG_USE_GLOBAL_FILE = 2,
wxCONFIG_USE_RELATIVE_PATH = 4
wxCONFIG_USE_RELATIVE_PATH = 4,
wxCONFIG_USE_NO_ESCAPE_CHARACTERS = 8
};
// ----------------------------------------------------------------------------

View File

@@ -676,7 +676,11 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
while ( wxIsspace(*pEnd) )
pEnd++;
pEntry->SetValue(FilterInValue(pEnd), FALSE /* read from file */);
wxString value = pEnd;
if ( !(GetStyle() & wxCONFIG_USE_NO_ESCAPE_CHARACTERS) )
value = FilterInValue(value);
pEntry->SetValue(value, FALSE);
}
}
}
@@ -1577,9 +1581,16 @@ void wxFileConfigEntry::SetValue(const wxString& strValue, bool bUser)
m_strValue = strValue;
if ( bUser ) {
wxString strVal = FilterOutValue(strValue);
wxString strValFiltered;
if ( Group()->Config()->GetStyle() & wxCONFIG_USE_NO_ESCAPE_CHARACTERS ) {
strValFiltered = strValue;
}
else {
strValFiltered = FilterOutValue(strValue);
}
wxString strLine;
strLine << FilterOutEntryName(m_strName) << wxT('=') << strVal;
strLine << FilterOutEntryName(m_strName) << wxT('=') << strValFiltered;
if ( m_pLine != NULL ) {
// entry was read from the local config file, just modify the line