]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/valtext.cpp
implemented menu drawing in the GTK theme
[wxWidgets.git] / src / common / valtext.cpp
index 27e3d04cd62dadc610cfe6e20eb6ae9919e81cf3..483b71d07520cfb0345983c33fe624906a902431 100644 (file)
@@ -98,7 +98,7 @@ static bool wxIsAlpha(const wxString& val)
     int i;
     for ( i = 0; i < (int)val.Length(); i++)
     {
-        if (!isalpha(val[i]))
+        if (!wxIsalpha(val[i]))
             return FALSE;
     }
     return TRUE;
@@ -109,7 +109,7 @@ static bool wxIsAlphaNumeric(const wxString& val)
     int i;
     for ( i = 0; i < (int)val.Length(); i++)
     {
-        if (!isalnum(val[i]))
+        if (!wxIsalnum(val[i]))
             return FALSE;
     }
     return TRUE;
@@ -119,11 +119,7 @@ static bool wxIsAlphaNumeric(const wxString& val)
 // This function can pop up an error message.
 bool wxTextValidator::Validate(wxWindow *parent)
 {
-    if ( !m_validatorWindow )
-        return FALSE;
-    if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
-        return FALSE;
-    if ( !m_stringValue )
+    if( !CheckValidator() )
         return FALSE;
 
     wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ;
@@ -136,21 +132,18 @@ bool wxTextValidator::Validate(wxWindow *parent)
 
     bool ok = TRUE;
 
-    // this format string should contian exactly one '%s'
-    const wxChar *errormsg = _("'%s' is invalid");
+    // NB: this format string should contian exactly one '%s'
+    wxString errormsg;
 
-    if ( m_validatorStyle & wxFILTER_INCLUDE_LIST )
-    {
-        if ( !m_includeList.Member(val) )
-        {
-            ok = FALSE;
-        }
-    }
-    else if ( m_validatorStyle & wxFILTER_EXCLUDE_LIST )
+    bool includeList = (m_validatorStyle & wxFILTER_INCLUDE_LIST) != 0;
+    if ( includeList || (m_validatorStyle & wxFILTER_EXCLUDE_LIST) )
     {
-        if ( m_excludeList.Member(val) )
+        // if includeList, it's only ok to have the members of the list,
+        // otherwise it's only ok to have non-members
+        ok = includeList == m_includeList.Member(val);
+        if ( !ok )
         {
-            ok = FALSE;
+            errormsg = _("'%s' is invalid");
         }
     }
     else if ( (m_validatorStyle & wxFILTER_ASCII) && !val.IsAscii() )
@@ -180,6 +173,8 @@ bool wxTextValidator::Validate(wxWindow *parent)
 
     if ( !ok )
     {
+        wxASSERT_MSG( !errormsg.empty(), _T("you forgot to set errormsg") );
+
         m_validatorWindow->SetFocus();
 
         wxString buf;
@@ -195,11 +190,7 @@ bool wxTextValidator::Validate(wxWindow *parent)
 // Called to transfer data to the window
 bool wxTextValidator::TransferToWindow(void)
 {
-    if ( !m_validatorWindow )
-        return FALSE;
-    if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
-        return FALSE;
-    if ( !m_stringValue )
+    if( !CheckValidator() )
         return FALSE;
 
     wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ;
@@ -211,11 +202,7 @@ bool wxTextValidator::TransferToWindow(void)
 // Called to transfer data to the window
 bool wxTextValidator::TransferFromWindow(void)
 {
-    if ( !m_validatorWindow )
-        return FALSE;
-    if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
-        return FALSE;
-    if ( !m_stringValue )
+    if( !CheckValidator() )
         return FALSE;
 
     wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ;
@@ -276,9 +263,9 @@ void wxTextValidator::OnChar(wxKeyEvent& event)
              !(keyCode < WXK_SPACE || keyCode == WXK_DELETE || keyCode > WXK_START) &&
              (
               ((m_validatorStyle & wxFILTER_ASCII) && !isascii(keyCode)) ||
-              ((m_validatorStyle & wxFILTER_ALPHA) && !isalpha(keyCode)) ||
-              ((m_validatorStyle & wxFILTER_ALPHANUMERIC) && !isalnum(keyCode)) ||
-              ((m_validatorStyle & wxFILTER_NUMERIC) && !isdigit(keyCode)
+              ((m_validatorStyle & wxFILTER_ALPHA) && !wxIsalpha(keyCode)) ||
+              ((m_validatorStyle & wxFILTER_ALPHANUMERIC) && !wxIsalnum(keyCode)) ||
+              ((m_validatorStyle & wxFILTER_NUMERIC) && !wxIsdigit(keyCode)
                                 && keyCode != '.' && keyCode != ',' && keyCode != '-')
              )
            )