]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/valtext.cpp
Put some life into GTK 2.0 drawing.
[wxWidgets.git] / src / common / valtext.cpp
index 9e7599571ba2d86d407f1deb5ad45bdef46d9aa5..483b71d07520cfb0345983c33fe624906a902431 100644 (file)
@@ -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 ;