From: Vadim Zeitlin Date: Fri, 22 Jan 1999 21:59:43 +0000 (+0000) Subject: Rename() (partly) implemented for wxRegConf X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/89077ebcc8990c84d94a601b221210d3ff7a8ec7?ds=inline Rename() (partly) implemented for wxRegConf git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp index 99382c2ce2..4bc56da8b6 100644 --- a/src/msw/regconf.cpp +++ b/src/msw/regconf.cpp @@ -437,6 +437,67 @@ bool wxRegConfig::Write(const wxString& key, long lValue) return m_keyLocal.SetValue(path.Name(), lValue); } +// ---------------------------------------------------------------------------- +// renaming +// ---------------------------------------------------------------------------- + +bool wxRegConfig::RenameEntry(const wxString& oldName, const wxString& newName) +{ + // check that the old entry exists... + if ( !HasEntry(oldName) ) + return FALSE; + + // and that the new one doesn't + if ( HasEntry(newName) ) + return FALSE; + + // delete the old entry and create the new one - but do in the reverse + // order to not lose the data if Create() fails + + bool ok; + if ( m_keyLocal.IsNumericValue(oldName) ) + { + long val; + ok = m_keyLocal.QueryValue(oldName, &val) && + m_keyLocal.SetValue(newName, val); + } + else + { + wxString val; + ok = m_keyLocal.QueryValue(oldName, val) && + m_keyLocal.SetValue(newName, val); + } + + if ( !ok ) + return FALSE; + + if ( !m_keyLocal.DeleteValue(oldName) ) + { + m_keyLocal.DeleteValue(newName); + + return FALSE; + } + + return TRUE; +} + +bool wxRegConfig::RenameGroup(const wxString& oldName, const wxString& newName) +{ + // check that the old group exists... + if ( !HasGroup(oldName) ) + return FALSE; + + // and that the new one doesn't + if ( HasGroup(newName) ) + return FALSE; + + // TODO there is no way to rename a registry key - we must do a deep copy + // ourselves + wxFAIL_MSG("Registry key renaming not implemented"); + + return FALSE; +} + // ---------------------------------------------------------------------------- // deleting // ---------------------------------------------------------------------------- diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index be45070aec..9ab127dd67 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -544,10 +544,10 @@ bool wxRegKey::HasSubKey(const char *szKey) const return FALSE; } -wxRegKey::ValueType wxRegKey::GetValueType(const char *szValue) +wxRegKey::ValueType wxRegKey::GetValueType(const char *szValue) const { #ifdef __WIN32__ - if ( !Open() ) + if ( ! CONST_CAST Open() ) return Type_None; DWORD dwType;