Provide wxPGChoices ctor, Add(), Set() overloads taking wxStrings

Allow passing an array of wxStrings in addition to an array of wxChar*
strings.
This commit is contained in:
Vadim Zeitlin
2018-09-29 17:13:00 +02:00
parent b624064659
commit 96ecfd8c77
3 changed files with 76 additions and 1 deletions

View File

@@ -719,6 +719,17 @@ public:
}
// Constructor.
// count - Number of labels.
// labels - Labels themselves.
// values - Values for choices. If NULL, indexes are used.
wxPGChoices(size_t count, const wxString* labels, const long* values = NULL)
{
Init();
Add(count, labels, values);
}
// Constructor overload taking wxChar strings, provided mostly for
// compatibility.
// labels - Labels for choices, NULL-terminated.
// values - Values for choices. If NULL, indexes are used.
wxPGChoices( const wxChar* const* labels, const long* values = NULL )
@@ -754,6 +765,9 @@ public:
// Adds to current.
// If did not have own copies, creates them now. If was empty, identical
// to set except that creates copies.
void Add(size_t count, const wxString* labels, const long* values = NULL);
// Overload taking wxChar strings, provided mostly for compatibility.
// labels - Labels for added choices, NULL-terminated.
// values - Values for added choices. If empty, relevant entry indexes are used.
void Add( const wxChar* const* labels, const ValArrItem* values = NULL );
@@ -879,6 +893,12 @@ public:
// Sets contents from lists of strings and values.
// Does not create copies for itself.
// TODO: Deprecate.
void Set(size_t count, const wxString* labels, const long* values = NULL)
{
Free();
Add(count, labels, values);
}
void Set( const wxChar* const* labels, const long* values = NULL )
{
Free();

View File

@@ -2487,6 +2487,24 @@ public:
/**
Constructor.
@param count
Number of the strings in @a labels array.
@param labels
Labels for choices.
@param values
Values for choices. If @NULL, indexes are used. Otherwise must have
at least @a count elements.
@since 3.1.2
*/
wxPGChoices(size_t count, const wxString* labels, const long* values = NULL);
/**
Constructor overload taking wxChar strings.
This constructor is provided mostly for compatibility, prefer to use
one of the other constructor overloads in the new code.
@param labels
Labels for choices, @NULL-terminated.
@@ -2522,6 +2540,24 @@ public:
Adds to current. If did not have own copies, creates them now. If was empty,
identical to set except that creates copies.
@param count
Number of the strings in @a labels array.
@param labels
Labels for choices.
@param values
Values for choices. If @NULL, indexes are used. Otherwise must have
at least @a count elements.
@since 3.1.2
*/
void Add(size_t count, const wxString* labels, const long* values = NULL);
/**
Adds to current.
This overload is provided mostly for compatibility, prefer to use one
of the other ones in the new code.
@param labels
Labels for added choices, @NULL-terminated.
@@ -2532,7 +2568,7 @@ public:
void Add( const wxChar** labels, const long* values = NULL );
/**
Adds to current. Version that works with wxArrayString and wxArrayInt.
@overload
*/
void Add( const wxArrayString& arr, const wxArrayInt& arrint );
@@ -2665,6 +2701,11 @@ public:
This is similar to calling Clear() and the corresponding overload of Add().
*/
void Set(size_t count, const wxString* labels, const long* values = NULL);
/**
@overload
*/
void Set( const wxChar** labels, const long* values = NULL );
/**

View File

@@ -3013,6 +3013,20 @@ wxPGChoiceEntry& wxPGChoices::AddAsSorted( const wxString& label, int value )
// -----------------------------------------------------------------------
void wxPGChoices::Add(size_t count, const wxString* labels, const long* values)
{
AllocExclusive();
for ( size_t i = 0; i < count; ++i )
{
const int value = values ? values[i] : i;
wxPGChoiceEntry entry(labels[i], value);
m_data->Insert( i, entry );
}
}
// -----------------------------------------------------------------------
void wxPGChoices::Add( const wxChar* const* labels, const ValArrItem* values )
{
AllocExclusive();