give better names to wxTextValidator::IsInCharIncludes and to wxTextValidator::IsNotInCharExcludes; add wxFILTER_SIMPLE_NUMBER style; remove specialized global helpers used by wxTextValidator in favour of wxStringCheck templated calls; better document the wxFILTER_* styles which use ctype standard functions

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58569 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-01-31 21:27:27 +00:00
parent a008d6e585
commit 1406dc01b2
3 changed files with 31 additions and 37 deletions

View File

@@ -37,43 +37,19 @@
// 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
// ----------------------------------------------------------------------------
@@ -234,27 +210,32 @@ bool wxTextValidator::IsValid(const wxString& val, wxString* pErr) const
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;
@@ -268,7 +249,7 @@ bool wxTextValidator::IsValid(const wxString& val, wxString* pErr) const
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)
@@ -279,7 +260,7 @@ bool wxTextValidator::IsInCharIncludes(const wxString& val) const
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)