]> git.saurik.com Git - wxWidgets.git/commitdiff
wxConfig -> wxConfigBase renaming plus some minor changes
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Aug 1998 23:11:03 +0000 (23:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Aug 1998 23:11:03 +0000 (23:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/config.cpp
src/common/fileconf.cpp

index f9d449b7f22138ec16b49329cf4aba5e933fe1b1..4447719209077a0cbde7c56621054434159bafe8 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,7 +38,7 @@
 #include  <wx/textfile.h>
 #include  <wx/config.h>
 
-// we must include (one of) these files for wxConfig::Create
+// we must include (one of) these files for wxConfigBase::Create
 #if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
   #ifdef __WIN32__
     #include  <wx/msw/regconf.h>
 // global and class static variables
 // ----------------------------------------------------------------------------
 
-wxConfig *wxConfig::ms_pConfig = NULL;
+wxConfigBase *wxConfigBase::ms_pConfig = NULL;
 
 // ============================================================================
 // 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());
+  #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
-#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
+const char *wxConfigBase::Read(const char *szKey, const char *szDefault) const
 {
   static char s_szBuf[1024];
   wxString s;
@@ -102,10 +102,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 +127,7 @@ wxConfig::PathChanger::PathChanger(const wxConfig *pContainer,
   }
 }
 
-wxConfig::PathChanger::~PathChanger()
+wxConfigBase::PathChanger::~PathChanger()
 {
   // only restore path if it was changed
   if ( m_bChanged ) {
index ebbea030fbe73d7fe2dc2882d59df18f97940f9d..837698b3f43c8bb5e2e50d6fdf1da0cf0f0147f8 100644 (file)
@@ -157,7 +157,8 @@ wxString wxFileConfig::GetLocalFileName(const char *szFile)
   str << szFile;
 
   #ifdef __WXMSW__
-    str << ".ini";
+    if ( strchr(szFile, '.') == NULL )
+      str << ".ini";
   #endif
 
   return str;
@@ -432,13 +433,13 @@ void wxFileConfig::SetPath(const wxString& strPath)
 // enumeration
 // ----------------------------------------------------------------------------
 
-bool wxFileConfig::GetFirstGroup(wxString& str, long& lIndex)
+bool wxFileConfig::GetFirstGroup(wxString& str, long& lIndex) const
 {
   lIndex = 0;
   return GetNextGroup(str, lIndex);
 }
 
-bool wxFileConfig::GetNextGroup (wxString& str, long& lIndex)
+bool wxFileConfig::GetNextGroup (wxString& str, long& lIndex) const
 {
   if ( uint(lIndex) < m_pCurrentGroup->Groups().Count() ) {
     str = m_pCurrentGroup->Groups()[lIndex++]->Name();
@@ -448,13 +449,13 @@ bool wxFileConfig::GetNextGroup (wxString& str, long& lIndex)
     return FALSE;
 }
 
-bool wxFileConfig::GetFirstEntry(wxString& str, long& lIndex)
+bool wxFileConfig::GetFirstEntry(wxString& str, long& lIndex) const
 {
   lIndex = 0;
   return GetNextEntry(str, lIndex);
 }
 
-bool wxFileConfig::GetNextEntry (wxString& str, long& lIndex)
+bool wxFileConfig::GetNextEntry (wxString& str, long& lIndex) const
 {
   if ( uint(lIndex) < m_pCurrentGroup->Entries().Count() ) {
     str = m_pCurrentGroup->Entries()[lIndex++]->Name();
@@ -648,7 +649,7 @@ bool wxFileConfig::DeleteEntry(const char *szKey, bool bGroupIfEmptyAlso)
     if ( m_pCurrentGroup != m_pRootGroup ) {
       ConfigGroup *pGroup = m_pCurrentGroup;
       SetPath("..");  // changes m_pCurrentGroup!
-      m_pCurrentGroup->DeleteSubgroup(pGroup->Name());
+      m_pCurrentGroup->DeleteSubgroupByName(pGroup->Name());
     }
     //else: never delete the root group
   }
@@ -660,7 +661,7 @@ bool wxFileConfig::DeleteGroup(const char *szKey)
 {
   PathChanger path(this, szKey);
 
-  return m_pCurrentGroup->DeleteSubgroup(path.Name());
+  return m_pCurrentGroup->DeleteSubgroupByName(path.Name());
 }
 
 bool wxFileConfig::DeleteAll()
@@ -1012,9 +1013,16 @@ wxFileConfig::ConfigGroup::AddSubgroup(const wxString& strName)
   delete several of them.
  */
 
-bool wxFileConfig::ConfigGroup::DeleteSubgroup(const char *szName)
+bool wxFileConfig::ConfigGroup::DeleteSubgroupByName(const char *szName)
+{
+  return DeleteSubgroup(FindSubgroup(szName));
+}
+
+// doesn't delete the subgroup itself, but does remove references to it from
+// all other data structures (and normally the returned pointer should be
+// deleted a.s.a.p. because there is nothing much to be done with it anyhow)
+bool wxFileConfig::ConfigGroup::DeleteSubgroup(ConfigGroup *pGroup)
 {
-  ConfigGroup *pGroup = FindSubgroup(szName);
   wxCHECK( pGroup != NULL, FALSE ); // deleting non existing group?
 
   // delete all entries
@@ -1025,6 +1033,12 @@ bool wxFileConfig::ConfigGroup::DeleteSubgroup(const char *szName)
       m_pConfig->LineListRemove(pLine);
   }
 
+  // and subgroups of this sungroup
+  nCount = pGroup->m_aSubgroups.Count();
+  for ( uint nGroup = 0; nGroup < nCount; nGroup++ ) {
+    pGroup->DeleteSubgroup(pGroup->m_aSubgroups[nGroup]);
+  }
+
   LineList *pLine = pGroup->m_pLine;
   if ( pLine != NULL ) {
     // notice that we may do this test inside the previous "if" because the