From 7dd75c884424f3e0b67cdec83c8d5383a661d386 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 27 Dec 2014 14:24:52 +0000 Subject: [PATCH] Revert "Add support for reading multi string values to wxRegKey." Reverts r78136 (see #15727) because the multi-string values in Windows registry are actually not "name=value" pairs at all but just NUL-separated strings and the API provided for reading them was inappropriate. Also see #16719. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 - include/wx/msw/registry.h | 4 --- interface/wx/msw/registry.h | 12 --------- samples/regtest/regtest.cpp | 52 +++---------------------------------- src/msw/registry.cpp | 31 ---------------------- 5 files changed, 3 insertions(+), 97 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ad9a6df3d6..ce8a659df0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -124,7 +124,6 @@ wxMSW: - Implement wxListBox::EnsureVisible() (RIVDSL). - Drastically improve efficiency of selecting all items in wxDataViewCtrl. - Fix wxMenuEvent::GetMenu() for wxEVT_MENU_{OPEN,CLOSE} in MDI frames. -- Added support for reading multi string values to wxRegKey (Carl Godkin). - Fix updating wxSpinCtrlDouble tooltip text (Laurent Poujoulat). - Fix appearance of checked disabled wxToolBar tools with custom images. diff --git a/include/wx/msw/registry.h b/include/wx/msw/registry.h index dab1fa2092..2c17d36145 100644 --- a/include/wx/msw/registry.h +++ b/include/wx/msw/registry.h @@ -205,10 +205,6 @@ public: bool SetValue(const wxString& szValue, const wxMemoryBuffer& buf); // return the binary value bool QueryValue(const wxString& szValue, wxMemoryBuffer& buf) const; - // return multiple strings - bool QueryValue(const wxString& szValue, - wxArrayString& names, - wxArrayString& values) const; // query existence of a key/value // return true if value exists diff --git a/interface/wx/msw/registry.h b/interface/wx/msw/registry.h index d67a49d9c3..915adfdf63 100644 --- a/interface/wx/msw/registry.h +++ b/interface/wx/msw/registry.h @@ -355,18 +355,6 @@ public: */ bool QueryValue(const wxString& szValue, wxMemoryBuffer& buf) const; - /** - Retrieves a multiple string value. - - The @a szValue must exist and have @c REG_MULTI_SZ type. The names and - the values of the pairs present in it are returned in the @a names and - @a value arrays, which will have the same (possible 0) size. - - @since 3.1.0 - */ - bool QueryValue(const wxString& szValue, - wxArrayString& names, - wxArrayString& values) const; /** Renames the key. Returns @true if successful. */ diff --git a/samples/regtest/regtest.cpp b/samples/regtest/regtest.cpp index a6d3d189fc..fd782a3a5d 100644 --- a/samples/regtest/regtest.cpp +++ b/samples/regtest/regtest.cpp @@ -105,7 +105,6 @@ public: // information bool IsKeySelected() const; - static const char *ValueTypeName(wxRegKey::ValueType type); private: // structure describing a registry key/value @@ -1055,6 +1054,7 @@ bool RegTreeCtrl::TreeNode::OnExpand() { case wxRegKey::Type_String: case wxRegKey::Type_Expand_String: + case wxRegKey::Type_Multi_String: { wxString strValue; icon = RegImageList::TextValue; @@ -1063,22 +1063,6 @@ bool RegTreeCtrl::TreeNode::OnExpand() } break; - case wxRegKey::Type_Multi_String: - { - wxArrayString names, values; - m_pKey->QueryValue(str, names, values); - strItem += "(multi string) "; - for ( size_t i = 0; i < names.GetCount(); i++ ) - { - if ( i > 0 ) - strItem += wxT (", "); - strItem += names[i] + wxT ("=") + values[i]; - } - - icon = RegImageList::TextValue; - } - break; - case wxRegKey::Type_None: // @@ handle the error... icon = RegImageList::BinaryValue; @@ -1383,37 +1367,6 @@ void RegTreeCtrl::SetRegistryView(wxRegKey::WOW64ViewMode viewMode) m_pRoot->Refresh(); } -const char *RegTreeCtrl::ValueTypeName(wxRegKey::ValueType type) -{ - switch ( type ) - { - case wxRegKey::Type_None: - return "none"; - case wxRegKey::Type_String: - return "string"; - case wxRegKey::Type_Expand_String: - return "expand_string"; - case wxRegKey::Type_Binary: - return "binary"; - case wxRegKey::Type_Dword: - return "number"; - case wxRegKey::Type_Dword_big_endian: - return "big endian number"; - case wxRegKey::Type_Link: - return "symbolic link"; - case wxRegKey::Type_Multi_String: - return "multiple strings"; - case wxRegKey::Type_Resource_list: - return "resource list in the resource map"; - case wxRegKey::Type_Full_resource_descriptor: - return "resource list in the hardware description"; - case wxRegKey::Type_Resource_requirements_list: - return "resource requirements list"; - default: - return "unrecognized"; - } -} - void RegTreeCtrl::ShowProperties() { wxTreeItemId lCurrent = GetSelection(); @@ -1452,7 +1405,8 @@ void RegTreeCtrl::ShowProperties() value, parent->m_strName.c_str(), key.GetValueType(value), - ValueTypeName(key.GetValueType (value))); + key.IsNumericValue(value) ? wxT("numeric") : wxT("string")); + } } diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index 856f2983cd..86a7e3a776 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -970,38 +970,7 @@ bool wxRegKey::QueryValue(const wxString& szValue, wxMemoryBuffer& buffer) const return false; } -bool wxRegKey::QueryValue(const wxString& szValue, wxArrayString &names, - wxArrayString &values) const -{ - // Make sure value is a multistring. - wxASSERT_MSG(GetValueType (szValue) == Type_Multi_String, - wxT("Type mismatch in wxRegKey::QueryValue().")); - wxMemoryBuffer buf; - if ( !QueryValue (szValue, buf) ) - return false; - - wxChar * const data = static_cast(buf.GetData()); - - // Parse the list of NUL-separated strings of the form "name=value". - size_t begin = 0; - for ( size_t i = 0; i < buf.GetDataLen() - 1; i++ ) - { - if ( data[i] == 0 ) - { - if ( i > begin ) - { - wxString value; - names.Add(wxString(&data[begin]).BeforeFirst('=', &value)); - values.Add(value); - } - - begin = i + 1; - } - } - - return true; -} bool wxRegKey::QueryValue(const wxString& szValue, wxString& strValue,