From 5fe256deb746d1a5b9151867ac48c3ad393c1a97 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 2 Aug 1998 23:11:03 +0000 Subject: [PATCH] wxConfig -> wxConfigBase renaming plus some minor changes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/config.cpp | 40 ++++++++++++++++++++-------------------- src/common/fileconf.cpp | 32 +++++++++++++++++++++++--------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/src/common/config.cpp b/src/common/config.cpp index f9d449b7f2..4447719209 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -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 #include -// 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 @@ -56,39 +56,39 @@ // 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 ) { diff --git a/src/common/fileconf.cpp b/src/common/fileconf.cpp index ebbea030fb..837698b3f4 100644 --- a/src/common/fileconf.cpp +++ b/src/common/fileconf.cpp @@ -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 -- 2.45.2