X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ce2baa5e68218edf40b5c0492b97bc69794f210..bd0df01f3f59940fdbca7a3472c256be2d034ab9:/src/common/config.cpp diff --git a/src/common/config.cpp b/src/common/config.cpp index 36c7bcdde1..f9d449b7f2 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -2,10 +2,10 @@ // Name: config.cpp // Purpose: implementation of wxConfig class // Author: Vadim Zeitlin -// Modified by: +// Modified by: // Created: 07.04.98 // RCS-ID: $Id$ -// Copyright: (c) 1997 Karsten Ballüder Ballueder@usa.net +// Copyright: (c) 1997 Karsten Ballüder Ballueder@usa.net // Vadim Zeitlin // Licence: wxWindows license /////////////////////////////////////////////////////////////////////////////// @@ -37,9 +37,19 @@ #include #include #include -#include -#include +// we must include (one of) these files for wxConfig::Create +#if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE) + #ifdef __WIN32__ + #include + #else //WIN16 + #include + #endif +#else // either we're under Unix or wish to use files even under Windows + #include +#endif + +#include #include // for isalnum() // ---------------------------------------------------------------------------- @@ -55,9 +65,6 @@ wxConfig *wxConfig::ms_pConfig = NULL; // ---------------------------------------------------------------------------- // wxConfig // ---------------------------------------------------------------------------- -wxConfig::~wxConfig() -{ -} wxConfig *wxConfig::Set(wxConfig *pConfig) { @@ -66,9 +73,19 @@ wxConfig *wxConfig::Set(wxConfig *pConfig) return pOld; } -void wxConfig::Create() +wxConfig *wxConfig::Create() { - ms_pConfig = wxTheApp->CreateConfig(); + return ms_pConfig = +#if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE) + #ifdef __WIN32__ + new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); + #else //WIN16 + #error "Sorry, no wxIniConfig yet..." + //new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); + #endif +#else // either we're under Unix or wish to use files even under Windows + new wxFileConfig(wxTheApp->GetAppName()); +#endif } const char *wxConfig::Read(const char *szKey, const char *szDefault) const @@ -89,18 +106,18 @@ wxConfig::PathChanger::PathChanger(const wxConfig *pContainer, const wxString& strEntry) { m_pContainer = (wxConfig *)pContainer; - wxString strPath = strEntry.Before(APPCONF_PATH_SEPARATOR); + wxString strPath = strEntry.Before(wxCONFIG_PATH_SEPARATOR); // special case of "/keyname" when there is nothing before "/" - if ( strPath.IsEmpty() && strEntry[0] == APPCONF_PATH_SEPARATOR ) - strPath = APPCONF_PATH_SEPARATOR; + if ( strPath.IsEmpty() && strEntry[0] == wxCONFIG_PATH_SEPARATOR ) + strPath = wxCONFIG_PATH_SEPARATOR; if ( !strPath.IsEmpty() ) { // do change the path m_bChanged = TRUE; - m_strName = strEntry.Right(APPCONF_PATH_SEPARATOR); + m_strName = strEntry.Right(wxCONFIG_PATH_SEPARATOR); m_strOldPath = m_pContainer->GetPath(); - m_strOldPath += APPCONF_PATH_SEPARATOR; + m_strOldPath += wxCONFIG_PATH_SEPARATOR; m_pContainer->SetPath(strPath); } else { @@ -125,16 +142,17 @@ wxConfig::PathChanger::~PathChanger() // understands both Unix and Windows (but only under Windows) environment // variables expansion: i.e. $var, $(var) and ${var} are always understood // and in addition under Windows %var% is also. -wxString ExpandEnvVars(const wxString& str) +wxString wxExpandEnvVars(const wxString& str) { wxString strResult; + strResult.Alloc(str.Len()); // don't change the values the enum elements: they must be equal // to the matching [closing] delimiter. enum Bracket - { - Bracket_None, - Bracket_Normal = ')', + { + Bracket_None, + Bracket_Normal = ')', Bracket_Curly = '}', #ifdef __WXMSW__ Bracket_Windows = '%' // yeah, Windows people are a bit strange ;-) @@ -160,8 +178,8 @@ wxString ExpandEnvVars(const wxString& str) } else { switch ( str[n + 1] ) { - case '(': - bracket = Bracket_Normal; + case '(': + bracket = Bracket_Normal; n++; // skip the bracket break; @@ -199,7 +217,7 @@ wxString ExpandEnvVars(const wxString& str) // check the closing bracket if ( bracket != Bracket_None ) { if ( m == str.Len() || str[m] != (char)bracket ) { - wxLogWarning("missing '%c' at position %d in '%s'.", + wxLogWarning(_("missing '%c' at position %d in '%s'."), (char)bracket, m + 1, str.c_str()); } else { @@ -223,21 +241,21 @@ wxString ExpandEnvVars(const wxString& str) } // this function is used to properly interpret '..' in path -void SplitPath(wxArrayString& aParts, const char *sz) +void wxSplitPath(wxArrayString& aParts, const char *sz) { aParts.Empty(); wxString strCurrent; const char *pc = sz; for ( ;; ) { - if ( *pc == '\0' || *pc == APPCONF_PATH_SEPARATOR ) { + if ( *pc == '\0' || *pc == wxCONFIG_PATH_SEPARATOR ) { if ( strCurrent == "." ) { // ignore } else if ( strCurrent == ".." ) { // go up one level if ( aParts.IsEmpty() ) - wxLogWarning("'%s' has extra '..', ignored.", sz); + wxLogWarning(_("'%s' has extra '..', ignored."), sz); else aParts.Remove(aParts.Count() - 1);