wxConfig -> wxConfigBase renaming plus some minor changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1998-08-02 23:11:03 +00:00
parent 88f2aa3720
commit 5fe256deb7
2 changed files with 43 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: config.cpp // Name: config.cpp
// Purpose: implementation of wxConfig class // Purpose: implementation of wxConfigBase class
// Author: Vadim Zeitlin // Author: Vadim Zeitlin
// Modified by: // Modified by:
// Created: 07.04.98 // Created: 07.04.98
@@ -38,7 +38,7 @@
#include <wx/textfile.h> #include <wx/textfile.h>
#include <wx/config.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) #if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
#ifdef __WIN32__ #ifdef __WIN32__
#include <wx/msw/regconf.h> #include <wx/msw/regconf.h>
@@ -56,39 +56,39 @@
// global and class static variables // global and class static variables
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxConfig *wxConfig::ms_pConfig = NULL; wxConfigBase *wxConfigBase::ms_pConfig = NULL;
// ============================================================================ // ============================================================================
// implementation // implementation
// ============================================================================ // ============================================================================
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxConfig // wxConfigBase
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxConfig *wxConfig::Set(wxConfig *pConfig) wxConfigBase *wxConfigBase::Set(wxConfigBase *pConfig)
{ {
wxConfig *pOld = ms_pConfig; wxConfigBase *pOld = ms_pConfig;
ms_pConfig = pConfig; ms_pConfig = pConfig;
return pOld; return pOld;
} }
wxConfig *wxConfig::Create() wxConfigBase *wxConfigBase::Create()
{ {
return ms_pConfig = return ms_pConfig =
#if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE) #if defined(__MSWIN__) && defined(wxCONFIG_WIN32_NATIVE)
#ifdef __WIN32__ #ifdef __WIN32__
new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
#else //WIN16 #else //WIN16
#error "Sorry, no wxIniConfig yet..." #error "Sorry, no wxIniConfig yet..."
//new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); //new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName());
#endif #endif
#else // either we're under Unix or wish to use files even under Windows #else // either we're under Unix or wish to use files even under Windows
new wxFileConfig(wxTheApp->GetAppName()); new wxFileConfig(wxTheApp->GetAppName());
#endif #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]; static char s_szBuf[1024];
wxString s; wxString s;
@@ -102,10 +102,10 @@ const char *wxConfig::Read(const char *szKey, const char *szDefault) const
// Config::PathChanger // Config::PathChanger
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxConfig::PathChanger::PathChanger(const wxConfig *pContainer, wxConfigBase::PathChanger::PathChanger(const wxConfigBase *pContainer,
const wxString& strEntry) const wxString& strEntry)
{ {
m_pContainer = (wxConfig *)pContainer; m_pContainer = (wxConfigBase *)pContainer;
wxString strPath = strEntry.Before(wxCONFIG_PATH_SEPARATOR); wxString strPath = strEntry.Before(wxCONFIG_PATH_SEPARATOR);
// special case of "/keyname" when there is nothing before "/" // 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 // only restore path if it was changed
if ( m_bChanged ) { if ( m_bChanged ) {

View File

@@ -157,6 +157,7 @@ wxString wxFileConfig::GetLocalFileName(const char *szFile)
str << szFile; str << szFile;
#ifdef __WXMSW__ #ifdef __WXMSW__
if ( strchr(szFile, '.') == NULL )
str << ".ini"; str << ".ini";
#endif #endif
@@ -432,13 +433,13 @@ void wxFileConfig::SetPath(const wxString& strPath)
// enumeration // enumeration
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxFileConfig::GetFirstGroup(wxString& str, long& lIndex) bool wxFileConfig::GetFirstGroup(wxString& str, long& lIndex) const
{ {
lIndex = 0; lIndex = 0;
return GetNextGroup(str, lIndex); 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() ) { if ( uint(lIndex) < m_pCurrentGroup->Groups().Count() ) {
str = m_pCurrentGroup->Groups()[lIndex++]->Name(); str = m_pCurrentGroup->Groups()[lIndex++]->Name();
@@ -448,13 +449,13 @@ bool wxFileConfig::GetNextGroup (wxString& str, long& lIndex)
return FALSE; return FALSE;
} }
bool wxFileConfig::GetFirstEntry(wxString& str, long& lIndex) bool wxFileConfig::GetFirstEntry(wxString& str, long& lIndex) const
{ {
lIndex = 0; lIndex = 0;
return GetNextEntry(str, lIndex); 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() ) { if ( uint(lIndex) < m_pCurrentGroup->Entries().Count() ) {
str = m_pCurrentGroup->Entries()[lIndex++]->Name(); str = m_pCurrentGroup->Entries()[lIndex++]->Name();
@@ -648,7 +649,7 @@ bool wxFileConfig::DeleteEntry(const char *szKey, bool bGroupIfEmptyAlso)
if ( m_pCurrentGroup != m_pRootGroup ) { if ( m_pCurrentGroup != m_pRootGroup ) {
ConfigGroup *pGroup = m_pCurrentGroup; ConfigGroup *pGroup = m_pCurrentGroup;
SetPath(".."); // changes m_pCurrentGroup! SetPath(".."); // changes m_pCurrentGroup!
m_pCurrentGroup->DeleteSubgroup(pGroup->Name()); m_pCurrentGroup->DeleteSubgroupByName(pGroup->Name());
} }
//else: never delete the root group //else: never delete the root group
} }
@@ -660,7 +661,7 @@ bool wxFileConfig::DeleteGroup(const char *szKey)
{ {
PathChanger path(this, szKey); PathChanger path(this, szKey);
return m_pCurrentGroup->DeleteSubgroup(path.Name()); return m_pCurrentGroup->DeleteSubgroupByName(path.Name());
} }
bool wxFileConfig::DeleteAll() bool wxFileConfig::DeleteAll()
@@ -1012,9 +1013,16 @@ wxFileConfig::ConfigGroup::AddSubgroup(const wxString& strName)
delete several of them. 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? wxCHECK( pGroup != NULL, FALSE ); // deleting non existing group?
// delete all entries // delete all entries
@@ -1025,6 +1033,12 @@ bool wxFileConfig::ConfigGroup::DeleteSubgroup(const char *szName)
m_pConfig->LineListRemove(pLine); 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; LineList *pLine = pGroup->m_pLine;
if ( pLine != NULL ) { if ( pLine != NULL ) {
// notice that we may do this test inside the previous "if" because the // notice that we may do this test inside the previous "if" because the