From 82cf4761e1da94c02376daeba18b8eb3226e9736 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 18 Jul 1998 21:44:54 +0000 Subject: [PATCH] small bug fixes + a couple of new functions added git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/regconf.cpp | 80 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 17 deletions(-) diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 3becd8f334..aa17ccc352 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -20,10 +20,25 @@ // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- -#include + +#ifdef __GNUG__ + #pragma implementation "regconf.h" +#endif + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP + #include +#endif //WX_PRECOMP + +#include #include -#include #include +#include // ---------------------------------------------------------------------------- // constants @@ -77,20 +92,20 @@ wxRegConfig::~wxRegConfig() // ---------------------------------------------------------------------------- void wxRegConfig::SetPath(const wxString& strPath) { - ArrayString aParts; + wxArrayString aParts; if ( strPath.IsEmpty() ) return; if ( strPath[0] == APPCONF_PATH_SEPARATOR ) { // absolute path - SplitPath(aParts, strPath); + wxSplitPath(aParts, strPath); } else { // relative path, combine with current one wxString strFullPath = GetPath(); strFullPath << APPCONF_PATH_SEPARATOR << strPath; - SplitPath(aParts, strFullPath); + wxSplitPath(aParts, strFullPath); } // recombine path parts in one variable @@ -125,13 +140,13 @@ void wxRegConfig::SetPath(const wxString& strPath) #define LOCAL_MASK 0x8000 #define IS_LOCAL_INDEX(l) (((l) & LOCAL_MASK) != 0) -bool wxRegConfig::GetFirstGroup(wxString& str, long& lIndex) +bool wxRegConfig::GetFirstGroup(wxString& str, long& lIndex) const { lIndex = 0; return GetNextGroup(str, lIndex); } -bool wxRegConfig::GetNextGroup (wxString& str, long& lIndex) +bool wxRegConfig::GetNextGroup(wxString& str, long& lIndex) const { // are we already enumerating local entries? if ( m_keyGlobal.IsOpened() && !IS_LOCAL_INDEX(lIndex) ) { @@ -154,35 +169,69 @@ bool wxRegConfig::GetNextGroup (wxString& str, long& lIndex) return bOk; } -bool wxRegConfig::GetFirstEntry(wxString& str, long& lIndex) +bool wxRegConfig::GetFirstEntry(wxString& str, long& lIndex) const { lIndex = 0; - return GetNextGroup(str, lIndex); + return GetNextEntry(str, lIndex); } -bool wxRegConfig::GetNextEntry (wxString& str, long& lIndex) +bool wxRegConfig::GetNextEntry(wxString& str, long& lIndex) const { // are we already enumerating local entries? if ( m_keyGlobal.IsOpened() && !IS_LOCAL_INDEX(lIndex) ) { // try to find a global entry which doesn't appear locally do { - if ( !m_keyGlobal.GetNextKey(str, lIndex) ) { + if ( !m_keyGlobal.GetNextValue(str, lIndex) ) { // no more global entries lIndex |= LOCAL_MASK; break; } - } while( m_keyLocal.HasSubKey(str) ); + } while( m_keyLocal.HasValue(str) ); } // much easier with local entries: get the next one we find // (don't forget to clear our flag bit and set it again later) lIndex &= ~LOCAL_MASK; - bool bOk = m_keyLocal.GetNextKey(str, lIndex); + bool bOk = m_keyLocal.GetNextValue(str, lIndex); lIndex |= LOCAL_MASK; return bOk; } +uint wxRegConfig::GetNumberOfEntries() const +{ + uint nEntries = 0; + + // dummy vars + wxString str; + long l; + bool bCont = GetFirstEntry(str, l); + while ( bCont ) { + nEntries++; + + bCont = GetNextEntry(str, l); + } + + return nEntries; +} + +uint wxRegConfig::GetNumberOfGroups() const +{ + uint nGroups = 0; + + // dummy vars + wxString str; + long l; + bool bCont = GetFirstGroup(str, l); + while ( bCont ) { + nGroups++; + + bCont = GetNextGroup(str, l); + } + + return nGroups; +} + // ---------------------------------------------------------------------------- // tests for existence // ---------------------------------------------------------------------------- @@ -305,7 +354,7 @@ bool wxRegConfig::DeleteEntry(const char *szValue, bool bGroupIfEmptyAlso) if ( !m_keyLocal.DeleteValue(path.Name()) ) return FALSE; - if ( m_keyLocal.IsEmpty() ) { + if ( !m_keyLocal.HasSubkeys() ) { wxString strKey = GetPath().Right(APPCONF_PATH_SEPARATOR); SetPath(".."); // changes m_keyLocal return m_keyLocal.DeleteKey(strKey); @@ -323,9 +372,6 @@ bool wxRegConfig::DeleteGroup(const char *szKey) bool wxRegConfig::DeleteAll() { - // first of all, prevent the creation of new registry entries - Config::EnableAutosave(FALSE); - m_keyLocal.Close(); m_keyGlobal.Close(); -- 2.47.2