wxFILTER_ASCII,
wxFILTER_ALPHA,
wxFILTER_ALPHANUMERIC,
+ wxFILTER_SIMPLE_NUMBER,
wxFILTER_NUMERIC,
wxFILTER_INCLUDE_LIST,
wxFILTER_EXCLUDE_LIST,
protected:
// returns true if all characters of the given string are present in m_includes
- bool IsInCharIncludes(const wxString& val) const;
+ bool ContainsOnlyIncludedCharacters(const wxString& val) const;
// returns true if all characters of the given string are NOT present in m_excludes
- bool IsNotInCharExcludes(const wxString& val) const;
+ bool ContainsExcludedCharacters(const wxString& val) const;
// returns true if the contents of 'val' are valid for the current validation style
- bool IsValid(const wxString& val, wxString* errormsg) const;
+ virtual bool IsValid(const wxString& val, wxString* errormsg) const;
protected:
wxTextValidatorStyle m_validatorStyle;
/// No filtering takes place.
wxFILTER_NONE,
- /// Non-ASCII characters are filtered out.
+ /// Non-ASCII characters are filtered out. See wxString::IsAscii.
wxFILTER_ASCII,
/// Non-alpha characters are filtered out.
+ /// Uses the wxWidgets wrapper for the standard CRT function @c isalpha
+ /// (which is locale-dependent) on all characters of the string.
wxFILTER_ALPHA,
/// Non-alphanumeric characters are filtered out.
+ /// Uses the wxWidgets wrapper for the standard CRT function @c isalnum
+ /// (which is locale-dependent) on all characters of the string.
wxFILTER_ALPHANUMERIC,
/// Non-numeric characters are filtered out.
+ /// Uses the wxWidgets wrapper for the standard CRT function @c isdigit
+ /// (which is locale-dependent) on all characters of the string.
+ wxFILTER_SIMPLE_NUMBER,
+
+ /// Non-numeric characters are filtered out.
+ /// Works like @c wxFILTER_SIMPLE_NUMBER but allows also decimal points,
+ /// minus/plus signs and the 'e' or 'E' character to input exponents.
+ /// Note that this is not the same behaviour of wxString::IsNumber().
wxFILTER_NUMERIC,
/// Use an include list. The validator checks if the user input is on
// global helpers
// ----------------------------------------------------------------------------
-static bool wxIsAlpha(const wxString& val)
-{
- int i;
- for ( i = 0; i < (int)val.length(); i++)
- {
- if (!wxIsalpha(val[i]))
- return false;
- }
- return true;
-}
-
-static bool wxIsAlphaNumeric(const wxString& val)
-{
- int i;
- for ( i = 0; i < (int)val.length(); i++)
- {
- if (!wxIsalnum(val[i]))
- return false;
- }
- return true;
-}
-
static bool wxIsNumeric(const wxString& val)
{
- int i;
- for ( i = 0; i < (int)val.length(); i++)
+ for ( wxString::const_iterator i = val.begin(); i != val.end(); ++i )
{
// Allow for "," (French) as well as "." -- in future we should
// use wxSystemSettings or other to do better localisation
- if ((!wxIsdigit(val[i])) && (val[i] != wxT('.')) && (val[i] != wxT(',')) && (val[i] != wxT('e')) &&
- (val[i] != wxT('E')) && (val[i] != wxT('+')) && (val[i] != wxT('-')))
+ if ((!wxIsdigit(*i)) && (*i != wxT('.')) && (*i != wxT(',')) && (*i != wxT('e')) &&
+ (*i != wxT('E')) && (*i != wxT('+')) && (*i != wxT('-')))
return false;
}
return true;
}
-
// ----------------------------------------------------------------------------
// wxTextValidator
// ----------------------------------------------------------------------------
break;
case wxFILTER_ALPHA:
- if ( !wxIsAlpha(val) )
+ if ( !wxStringCheck<wxIsalpha>(val) )
errormsg = _("'%s' should only contain alphabetic characters.");
break;
case wxFILTER_ALPHANUMERIC:
- if ( !wxIsAlphaNumeric(val) )
+ if ( !wxStringCheck<wxIsalnum>(val) )
errormsg = _("'%s' should only contain alphabetic or numeric characters.");
break;
+ case wxFILTER_SIMPLE_NUMBER:
+ if ( !wxStringCheck<wxIsdigit>(val) )
+ errormsg = _("'%s' should be numeric.");
+ break;
+
case wxFILTER_NUMERIC:
if ( !wxIsNumeric(val) )
errormsg = _("'%s' should be numeric.");
break;
case wxFILTER_INCLUDE_CHAR_LIST:
- if ( !IsInCharIncludes(val) )
+ if ( !ContainsOnlyIncludedCharacters(val) )
errormsg = _("'%s' is invalid");
break;
case wxFILTER_EXCLUDE_CHAR_LIST:
- if ( !IsNotInCharExcludes(val) )
+ if ( ContainsExcludedCharacters(val) )
errormsg = _("'%s' is invalid");
break;
return errormsg.empty();
}
-bool wxTextValidator::IsInCharIncludes(const wxString& val) const
+bool wxTextValidator::ContainsOnlyIncludedCharacters(const wxString& val) const
{
for (size_t i = 0; i < val.length(); i++)
if (m_includes.Index((wxString) val[i]) == wxNOT_FOUND)
return true;
}
-bool wxTextValidator::IsNotInCharExcludes(const wxString& val) const
+bool wxTextValidator::ContainsExcludedCharacters(const wxString& val) const
{
for (size_t i = 0; i < val.length(); i++)
if (m_excludes.Index((wxString) val[i]) != wxNOT_FOUND)