From bd784b31868b3d9373ad73597f948171f347050d Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Sat, 29 Jan 2022 20:32:09 +0100 Subject: [PATCH] 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. --- include/wx/propgrid/props.h | 22 +++++++++++++++---- interface/wx/propgrid/props.h | 12 +++++------ src/propgrid/props.cpp | 40 ++++++++++++++--------------------- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 25a4d730c7..539b91e726 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -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; diff --git a/interface/wx/propgrid/props.h b/interface/wx/propgrid/props.h index 08cd72c14e..68323e8448 100644 --- a/interface/wx/propgrid/props.h +++ b/interface/wx/propgrid/props.h @@ -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); diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp index 1aacc6de2e..e474bcef0e 100644 --- a/src/propgrid/props.cpp +++ b/src/propgrid/props.cpp @@ -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) )