#include "wx/utils.h" // for wxGetHomeDir
-// _WINDOWS_ is defined when windows.h is included,
-// __WXMSW__ is defined for MS Windows compilation
-#if defined(__WXMSW__) && !defined(_WINDOWS_)
- #include <windows.h>
+#if defined(__WXMAC__)
+ #include "wx/mac/private.h" // includes mac headers
+#endif
+
+#if defined(__WXMSW__)
+ #include "wx/msw/private.h"
#endif //windows.h
#if defined(__WXPM__)
#define INCL_DOS
#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);
}
}
}
// read/write values
// ----------------------------------------------------------------------------
-bool wxFileConfig::Read(const wxString& key,
- wxString* pStr) const
+bool wxFileConfig::DoReadString(const wxString& key, wxString* pStr) const
{
wxConfigPathChanger path(this, key);
return FALSE;
}
- *pStr = ExpandEnvVars(pEntry->Value());
- return TRUE;
-}
+ *pStr = pEntry->Value();
-bool wxFileConfig::Read(const wxString& key,
- wxString* pStr, const wxString& defVal) const
-{
- wxConfigPathChanger path(this, key);
-
- wxFileConfigEntry *pEntry = m_pCurrentGroup->FindEntry(path.Name());
- bool ok;
- if (pEntry == NULL) {
- if( IsRecordingDefaults() )
- ((wxFileConfig *)this)->Write(key,defVal);
- *pStr = ExpandEnvVars(defVal);
- ok = FALSE;
- }
- else {
- *pStr = ExpandEnvVars(pEntry->Value());
- ok = TRUE;
- }
-
- return ok;
+ return TRUE;
}
-bool wxFileConfig::Read(const wxString& key, long *pl) const
+bool wxFileConfig::DoReadLong(const wxString& key, long *pl) const
{
wxString str;
if ( !Read(key, & str) )
{
return FALSE;
}
-
- *pl = wxAtol(str);
- return TRUE;
+ return str.ToLong(pl) ;
}
-bool wxFileConfig::Write(const wxString& key, const wxString& szValue)
+bool wxFileConfig::DoWriteString(const wxString& key, const wxString& szValue)
{
wxConfigPathChanger path(this, key);
return TRUE;
}
-bool wxFileConfig::Write(const wxString& key, long lValue)
+bool wxFileConfig::DoWriteLong(const wxString& key, long lValue)
{
- // ltoa() is not ANSI :-(
- wxString buf;
- buf.Printf(wxT("%ld"), lValue);
- return Write(key, buf);
+ return Write(key, wxString::Format(_T("%ld"), lValue));
}
bool wxFileConfig::Flush(bool /* bCurrentOnly */)
wxTempFile file(m_strLocalFile);
- if ( !file.IsOpened() ) {
+ if ( !file.IsOpened() )
+ {
wxLogError(_("can't open user configuration file."));
return FALSE;
}
// write all strings to file
- for ( wxFileConfigLineList *p = m_linesHead; p != NULL; p = p->Next() ) {
- if ( !file.Write(p->Text() + wxTextFile::GetEOL()) ) {
+ for ( wxFileConfigLineList *p = m_linesHead; p != NULL; p = p->Next() )
+ {
+ wxString line = p->Text();
+ line += wxTextFile::GetEOL();
+#if wxUSE_UNICODE
+ wxCharBuffer buf = wxConvLocal.cWX2MB( line );
+ if ( !file.Write( (const char*)buf, strlen( (const char*) buf ) ) )
+#else
+ if ( !file.Write( line.c_str(), line.Len() ) )
+#endif
+ {
wxLogError(_("can't write user configuration file."));
return 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