Implement validator for wxArrayDoubleProperty in propgrid sample.
In wxArrayDoubleProperty::DoGetValidator() there is instantiated a wxTextValidator accepting numeric characters, token delimiter and spaces. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -595,8 +595,6 @@ bool wxArrayDoubleProperty::OnEvent( wxPropertyGrid* propgrid,
|
|||||||
|
|
||||||
bool wxArrayDoubleProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const
|
bool wxArrayDoubleProperty::StringToValue( wxVariant& variant, const wxString& text, int ) const
|
||||||
{
|
{
|
||||||
double tval;
|
|
||||||
wxString tstr;
|
|
||||||
// Add values to a temporary array so that in case
|
// Add values to a temporary array so that in case
|
||||||
// of error we can opt not to use them.
|
// of error we can opt not to use them.
|
||||||
wxArrayDouble new_array;
|
wxArrayDouble new_array;
|
||||||
@@ -609,26 +607,23 @@ bool wxArrayDoubleProperty::StringToValue( wxVariant& variant, const wxString& t
|
|||||||
|
|
||||||
if ( !token.empty() )
|
if ( !token.empty() )
|
||||||
{
|
{
|
||||||
|
double tval;
|
||||||
// If token was invalid, exit the loop now
|
// If token was invalid, exit the loop now
|
||||||
if ( !token.ToDouble(&tval) )
|
if ( !token.ToDouble(&tval) )
|
||||||
{
|
{
|
||||||
tstr.Printf ( _("\"%s\" is not a floating-point number."), token.c_str() );
|
wxLogDebug( _("\"%s\" is not a floating-point number."), token.c_str() );
|
||||||
ok = false;
|
ok = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// TODO: Put validator code here
|
|
||||||
|
|
||||||
new_array.Add(tval);
|
new_array.Add(tval);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WX_PG_TOKENIZER1_END()
|
WX_PG_TOKENIZER1_END()
|
||||||
|
|
||||||
// When invalid token found, show error message and don't change anything
|
// When invalid token found don't change anything
|
||||||
if ( !ok )
|
if ( !ok )
|
||||||
{
|
{
|
||||||
//ShowError( tstr );
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -652,3 +647,24 @@ bool wxArrayDoubleProperty::DoSetAttribute( const wxString& name, wxVariant& val
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxValidator* wxArrayDoubleProperty::DoGetValidator() const
|
||||||
|
{
|
||||||
|
#if wxUSE_VALIDATORS
|
||||||
|
WX_PG_DOGETVALIDATOR_ENTRY()
|
||||||
|
|
||||||
|
wxTextValidator* validator = new wxTextValidator(wxFILTER_INCLUDE_CHAR_LIST);
|
||||||
|
|
||||||
|
// Accept characters for numeric elements
|
||||||
|
wxNumericPropertyValidator numValidator(wxNumericPropertyValidator::NumericType::Float);
|
||||||
|
wxArrayString incChars(numValidator.GetIncludes());
|
||||||
|
// Accept also a delimiter and space character
|
||||||
|
incChars.Add(m_delimiter);
|
||||||
|
incChars.Add(" ");
|
||||||
|
|
||||||
|
validator->SetIncludes(incChars);
|
||||||
|
|
||||||
|
WX_PG_DOGETVALIDATOR_EXIT(validator)
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -126,6 +126,8 @@ public:
|
|||||||
// Generates cache for displayed text
|
// Generates cache for displayed text
|
||||||
virtual void GenerateValueAsString ( wxString& target, int prec, bool removeZeroes ) const;
|
virtual void GenerateValueAsString ( wxString& target, int prec, bool removeZeroes ) const;
|
||||||
|
|
||||||
|
wxValidator* DoGetValidator() const wxOVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
wxString m_display; // Stores cache for displayed text
|
wxString m_display; // Stores cache for displayed text
|
||||||
int m_precision; // Used when formatting displayed string.
|
int m_precision; // Used when formatting displayed string.
|
||||||
|
Reference in New Issue
Block a user