Refactor functions converting wxArrayString to string in wxArrayStringProperty::GenerateValueAsString()

Because ConvertArrayToString() and ArrayStringToString() produce string
values it would more intuitive to just to return this string as a function
value instead of passing it through the parameter.
This commit is contained in:
Artur Wieczorek 2022-01-29 20:32:09 +01:00
parent 6d318ad0e2
commit bd784b3186
3 changed files with 39 additions and 35 deletions

View file

@ -710,9 +710,16 @@ public:
virtual bool DoSetAttribute( const wxString& name, wxVariant& value ) wxOVERRIDE;
// Implement in derived class for custom array-to-string conversion.
#if WXWIN_COMPATIBILITY_3_0
wxDEPRECATED_MSG("use function ConvertArrayToString(arr, delim) returning wxString")
virtual void ConvertArrayToString(const wxArrayString& arr,
wxString* pString,
const wxUniChar& delimiter) const;
const wxUniChar& delimiter) const
{
*pString = ConvertArrayToString(arr, delimiter);
}
#endif // WXWIN_COMPATIBILITY_3_0
virtual wxString ConvertArrayToString(const wxArrayString& arr, const wxUniChar& delimiter) const;
// Shows string editor dialog. Value to be edited should be read from
// value, and if dialog is not cancelled, it should be stored back and true
@ -736,10 +743,17 @@ public:
QuoteStrings = 0x02
};
// Generates contents for string dst based on the contents of
// wxArrayString src.
// Generates string based on the contents of wxArrayString src.
#if WXWIN_COMPATIBILITY_3_0
wxDEPRECATED_MSG("use function ArrayStringToString(src, delim, flag) returning wxString")
static void ArrayStringToString( wxString& dst, const wxArrayString& src,
wxUniChar delimiter, int flags );
wxUniChar delimiter, int flags )
{
dst = ArrayStringToString(src, delimiter, flags);
}
#endif // WXWIN_COMPATIBILITY_3_0
static wxString ArrayStringToString(const wxArrayString& src,
wxUniChar delimiter, int flags);
protected:
virtual bool DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value) wxOVERRIDE;

View file

@ -736,9 +736,8 @@ public:
/**
Implement in derived class for custom array-to-string conversion.
*/
virtual void ConvertArrayToString(const wxArrayString& arr,
wxString* pString,
const wxUniChar& delimiter) const;
virtual wxString ConvertArrayToString(const wxArrayString& arr,
const wxUniChar& delimiter) const;
/**
Shows string editor dialog to edit the individual item. Value to be edited
@ -758,11 +757,10 @@ public:
};
/**
Generates contents for string @a dst based on the contents of
wxArrayString @a src.
Generates string based on the contents of wxArrayString @a src.
*/
static void ArrayStringToString( wxString& dst, const wxArrayString& src,
wxUniChar delimiter, int flags );
static wxString ArrayStringToString(const wxArrayString& src,
wxUniChar delimiter, int flags);
protected:
virtual bool DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value);

View file

@ -2685,27 +2685,22 @@ void wxArrayStringProperty::OnSetValue()
GenerateValueAsString();
}
void
wxArrayStringProperty::ConvertArrayToString(const wxArrayString& arr,
wxString* pString,
const wxUniChar& delimiter) const
wxString wxArrayStringProperty::ConvertArrayToString(const wxArrayString& arr,
const wxUniChar& delimiter) const
{
int flag;
if ( delimiter == '"' || delimiter == '\'' )
{
// Quoted strings
ArrayStringToString(*pString,
arr,
delimiter,
Escape | QuoteStrings);
flag = Escape | QuoteStrings;
}
else
{
// Regular delimiter
ArrayStringToString(*pString,
arr,
delimiter,
0);
flag = 0;
}
return ArrayStringToString(arr, delimiter, flag);
}
wxString wxArrayStringProperty::ValueToString( wxVariant& WXUNUSED(value),
@ -2719,26 +2714,20 @@ wxString wxArrayStringProperty::ValueToString( wxVariant& WXUNUSED(value),
}
wxArrayString arr = m_value.GetArrayString();
wxString s;
ConvertArrayToString(arr, &s, m_delimiter);
return s;
return ConvertArrayToString(arr, m_delimiter);
}
// Converts wxArrayString to a string separated by delimiters and spaces.
// preDelim is useful for "str1" "str2" style. Set flags to 1 to do slash
// conversion.
void
wxArrayStringProperty::ArrayStringToString( wxString& dst,
const wxArrayString& src,
wxUniChar delimiter, int flags )
wxString wxArrayStringProperty::ArrayStringToString(const wxArrayString& src,
wxUniChar delimiter, int flags)
{
wxString pdr;
wxString preas;
unsigned int itemCount = src.size();
dst.Empty();
if ( flags & Escape )
{
preas = delimiter;
@ -2746,6 +2735,8 @@ wxArrayStringProperty::ArrayStringToString( wxString& dst,
pdr += delimiter;
}
wxString dst;
if ( itemCount )
dst.append( preas );
@ -2776,12 +2767,14 @@ wxArrayStringProperty::ArrayStringToString( wxString& dst,
else if ( flags & QuoteStrings )
dst.append( delimStr );
}
return dst;
}
void wxArrayStringProperty::GenerateValueAsString()
{
wxArrayString arr = m_value.GetArrayString();
ConvertArrayToString(arr, &m_display, m_delimiter);
m_display = ConvertArrayToString(arr, m_delimiter);
}
// Default implementation doesn't do anything.
@ -2845,8 +2838,7 @@ bool wxArrayStringProperty::DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& v
if ( !curValue.IsNull() )
{
wxArrayString actualValue = curValue.GetArrayString();
wxString tempStr;
ConvertArrayToString(actualValue, &tempStr, m_delimiter);
wxString tempStr = ConvertArrayToString(actualValue, m_delimiter);
#if wxUSE_VALIDATORS
if ( dialogValidator.DoValidate(pg, validator,
tempStr) )