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}
{
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
};
// ----------------------------------------------------------------------------
#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
// platforms?
- wxString str = wxT( '.' );
+ wxString str = wxT( '.' );
#else
wxString str = GetLocalDir();
#endif
-
+
#if defined( __UNIX__ ) && !defined( __VMS ) && !defined( __WXMAC__ )
str << wxT('.');
#endif
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);
}
}
}
if ( ret )
{
FSSpec spec ;
-
+
wxMacFilename2FSSpec( m_strLocalFile , &spec ) ;
FInfo finfo ;
if ( FSpGetFInfo( &spec , &finfo ) == noErr )
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