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
This commit is contained in:
Vadim Zeitlin 2014-12-27 14:24:52 +00:00
parent 8d12e07453
commit 7dd75c8844
5 changed files with 3 additions and 97 deletions

View File

@ -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.

View File

@ -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

View File

@ -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.
*/

View File

@ -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"));
}
}

View File

@ -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<wxChar *>(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,