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 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 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 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} \wxheading{Remarks}

View File

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

View File

@@ -340,11 +340,11 @@ wxString wxFileConfig::GetLocalFileName(const wxChar *szFile)
#ifdef __VMS__ // On VMS I saw the problem that the home directory was appended #ifdef __VMS__ // On VMS I saw the problem that the home directory was appended
// twice for the configuration file. Does that also happen for other // twice for the configuration file. Does that also happen for other
// platforms? // platforms?
wxString str = wxT( '.' ); wxString str = wxT( '.' );
#else #else
wxString str = GetLocalDir(); wxString str = GetLocalDir();
#endif #endif
#if defined( __UNIX__ ) && !defined( __VMS ) && !defined( __WXMAC__ ) #if defined( __UNIX__ ) && !defined( __VMS ) && !defined( __WXMAC__ )
str << wxT('.'); str << wxT('.');
#endif #endif
@@ -676,7 +676,11 @@ void wxFileConfig::Parse(wxTextBuffer& buffer, bool bLocal)
while ( wxIsspace(*pEnd) ) while ( wxIsspace(*pEnd) )
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);
} }
} }
} }
@@ -930,7 +934,7 @@ bool wxFileConfig::Flush(bool /* bCurrentOnly */)
if ( ret ) if ( ret )
{ {
FSSpec spec ; FSSpec spec ;
wxMacFilename2FSSpec( m_strLocalFile , &spec ) ; wxMacFilename2FSSpec( m_strLocalFile , &spec ) ;
FInfo finfo ; FInfo finfo ;
if ( FSpGetFInfo( &spec , &finfo ) == noErr ) if ( FSpGetFInfo( &spec , &finfo ) == noErr )
@@ -1577,9 +1581,16 @@ void wxFileConfigEntry::SetValue(const wxString& strValue, bool bUser)
m_strValue = strValue; m_strValue = strValue;
if ( bUser ) { 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; wxString strLine;
strLine << FilterOutEntryName(m_strName) << wxT('=') << strVal; strLine << FilterOutEntryName(m_strName) << wxT('=') << strValFiltered;
if ( m_pLine != NULL ) { if ( m_pLine != NULL ) {
// entry was read from the local config file, just modify the line // entry was read from the local config file, just modify the line