// Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////////
-// ============================================================================
-// declarations
-// ============================================================================
-
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#ifdef __GNUG__
- #pragma implementation "confbase.h"
+ #pragma implementation "confbase.h"
+#endif
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
#endif
-#include "wx/wxprec.h"
+#if wxUSE_CONFIG
#ifdef __BORLANDC__
#pragma hdrstop
#endif //__BORLANDC__
-#ifndef WX_PRECOMP
- #include <wx/string.h>
- #include <wx/intl.h>
-#endif //WX_PRECOMP
-
-#include <wx/app.h>
-#include <wx/file.h>
-#include <wx/log.h>
-#include <wx/textfile.h>
-#include <wx/confbase.h>
-
-// we must include (one of) these files for wxConfigBase::Create
-#if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE)
- #ifdef __WIN32__
- #include <wx/msw/regconf.h>
- #else //WIN16
- #include <wx/msw/iniconf.h>
- #endif
-#else // either we're under Unix or wish to use files even under Windows
- #include <wx/fileconf.h>
-#endif
+#include "wx/app.h"
+#include "wx/file.h"
+#include "wx/log.h"
+#include "wx/textfile.h"
+#include "wx/utils.h"
+
+#include "wx/config.h"
-#include <stdlib.h>
-#include <math.h>
-#include <ctype.h> // for isalnum()
+#include <stdlib.h>
+#include <math.h>
+#include <ctype.h> // for isalnum()
// ----------------------------------------------------------------------------
// global and class static variables
bool wxConfigBase::Read(const wxString& key, double* val) const
{
wxString str;
- if (Read(key, str))
+ if (Read(key, & str))
{
- *val = atof(str);
+ *val = wxAtof(str);
return TRUE;
}
else
}
// Convenience functions
+
+bool wxConfigBase::Read(const wxString& key, int *pi) const
+{
+ long l;
+ bool ret = Read(key, &l);
+ if (ret)
+ *pi = (int) l;
+ return ret;
+}
+
+bool wxConfigBase::Read(const wxString& key, int *pi, int defVal) const
+{
+ long l;
+ bool ret = Read(key, &l, (long) defVal);
+ *pi = (int) l;
+ return ret;
+}
+
bool wxConfigBase::Write(const wxString& key, double val)
{
wxString str;
- str.Printf("%f", val);
+ str.Printf(_T("%f"), val);
return Write(key, str);
}
return Write(key, l);
}
+wxString wxConfigBase::ExpandEnvVars(const wxString& str) const
+{
+ wxString tmp; // Required for BC++
+ if (IsExpandingEnvVars())
+ tmp = wxExpandEnvVars(str);
+ else
+ tmp = str;
+ return tmp;
+}
// ----------------------------------------------------------------------------
// wxConfigPathChanger
const wxString& strEntry)
{
m_pContainer = (wxConfigBase *)pContainer;
- wxString strPath = strEntry.Before(wxCONFIG_PATH_SEPARATOR);
- // special case of "/keyname" when there is nothing before "/"
- if ( strPath.IsEmpty() && ((!strEntry.IsEmpty()) && strEntry[0] == wxCONFIG_PATH_SEPARATOR ))
+ // the path is everything which precedes the last slash
+ wxString strPath = strEntry.BeforeLast(wxCONFIG_PATH_SEPARATOR);
+
+ // except in the special case of "/keyname" when there is nothing before "/"
+ if ( strPath.IsEmpty() &&
+ ((!strEntry.IsEmpty()) && strEntry[0] == wxCONFIG_PATH_SEPARATOR) )
+ {
strPath = wxCONFIG_PATH_SEPARATOR;
+ }
if ( !strPath.IsEmpty() ) {
// do change the path
m_bChanged = TRUE;
- m_strName = strEntry.Right(wxCONFIG_PATH_SEPARATOR);
+ m_strName = strEntry.AfterLast(wxCONFIG_PATH_SEPARATOR);
m_strOldPath = m_pContainer->GetPath();
m_strOldPath += wxCONFIG_PATH_SEPARATOR;
m_pContainer->SetPath(strPath);
{
Bracket_None,
Bracket_Normal = ')',
- Bracket_Curly = '}',
+ Bracket_Curly = '}'
#ifdef __WXMSW__
- Bracket_Windows = '%' // yeah, Windows people are a bit strange ;-)
+ ,Bracket_Windows = '%' // yeah, Windows people are a bit strange ;-)
#endif
};
wxString strVarName(str.c_str() + n + 1, m - n - 1);
- const char *pszValue = getenv(strVarName);
+ const wxChar *pszValue = wxGetenv(strVarName);
if ( pszValue != NULL ) {
strResult += pszValue;
}
if ( bracket != Bracket_None ) {
if ( m == str.Len() || str[m] != (char)bracket ) {
wxLogWarning(_("Environment variables expansion failed: "
- "missing '%c' at position %d in '%s'."),
+ "missing '%c' at position %d in '%s'."),
(char)bracket, m + 1, str.c_str());
}
else {
}
// this function is used to properly interpret '..' in path
-void wxSplitPath(wxArrayString& aParts, const char *sz)
+void wxSplitPath(wxArrayString& aParts, const wxChar *sz)
{
aParts.Empty();
wxString strCurrent;
- const char *pc = sz;
+ const wxChar *pc = sz;
for ( ;; ) {
- if ( *pc == '\0' || *pc == wxCONFIG_PATH_SEPARATOR ) {
- if ( strCurrent == "." ) {
+ if ( *pc == _T('\0') || *pc == wxCONFIG_PATH_SEPARATOR ) {
+ if ( strCurrent == _T(".") ) {
// ignore
}
- else if ( strCurrent == ".." ) {
+ else if ( strCurrent == _T("..") ) {
// go up one level
if ( aParts.IsEmpty() )
wxLogWarning(_("'%s' has extra '..', ignored."), sz);
//else:
// could log an error here, but we prefer to ignore extra '/'
- if ( *pc == '\0' )
+ if ( *pc == _T('\0') )
return;
}
else
}
}
+#endif // wxUSE_CONFIG