]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/config.cpp
More configure fixes
[wxWidgets.git] / src / common / config.cpp
index f9d449b7f22138ec16b49329cf4aba5e933fe1b1..5b3de33e7206b3e5eef1fb19e86ff9a7903a672b 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        config.cpp
-// Purpose:     implementation of wxConfig class
+// Purpose:     implementation of wxConfigBase class
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     07.04.98
@@ -38,8 +38,8 @@
 #include  <wx/textfile.h>
 #include  <wx/config.h>
 
-// we must include (one of) these files for wxConfig::Create
-#if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
+// 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
 // global and class static variables
 // ----------------------------------------------------------------------------
 
-wxConfig *wxConfig::ms_pConfig = NULL;
+wxConfigBase *wxConfigBase::ms_pConfig     = NULL;
+bool          wxConfigBase::ms_bAutoCreate = TRUE;
 
 // ============================================================================
 // implementation
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// wxConfig
+// wxConfigBase
 // ----------------------------------------------------------------------------
 
-wxConfig *wxConfig::Set(wxConfig *pConfig)
+wxConfigBase *wxConfigBase::Set(wxConfigBase *pConfig)
 {
-  wxConfig *pOld = ms_pConfig;
+  wxConfigBase *pOld = ms_pConfig;
   ms_pConfig = pConfig;
   return pOld;
 }
 
-wxConfig *wxConfig::Create()
+wxConfigBase *wxConfigBase::Create()
 {
-  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
+  if ( ms_bAutoCreate && ms_pConfig == NULL ) {
+    ms_pConfig =
+    #if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE)
+      #ifdef __WIN32__
+        new wxRegConfig(wxTheApp->GetVendorName() + '\\' 
+                        + wxTheApp->GetAppName());
+      #else  //WIN16
+        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
+  }
+
+  return ms_pConfig;
 }
 
-const char *wxConfig::Read(const char *szKey, const char *szDefault) const
+const char *wxConfigBase::Read(const char *szKey, const char *szDefault) const
 {
   static char s_szBuf[1024];
   wxString s;
@@ -102,10 +107,10 @@ const char *wxConfig::Read(const char *szKey, const char *szDefault) const
 // Config::PathChanger
 // ----------------------------------------------------------------------------
 
-wxConfig::PathChanger::PathChanger(const wxConfig *pContainer,
+wxConfigBase::PathChanger::PathChanger(const wxConfigBase *pContainer,
                                  const wxString& strEntry)
 {
-  m_pContainer = (wxConfig *)pContainer;
+  m_pContainer = (wxConfigBase *)pContainer;
   wxString strPath = strEntry.Before(wxCONFIG_PATH_SEPARATOR);
 
   // special case of "/keyname" when there is nothing before "/"
@@ -127,7 +132,7 @@ wxConfig::PathChanger::PathChanger(const wxConfig *pContainer,
   }
 }
 
-wxConfig::PathChanger::~PathChanger()
+wxConfigBase::PathChanger::~PathChanger()
 {
   // only restore path if it was changed
   if ( m_bChanged ) {