]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/valgen.cpp
Include order is wxprec.h=>defs.h=>platform.h=>setup.h so remove explicit setup.h...
[wxWidgets.git] / src / common / valgen.cpp
index ee65e02c47fd54022d5b4d4ddaa30c5ce3c1ea16..0b5282829ba7c26036300219965670c544c42a54 100644 (file)
@@ -4,15 +4,11 @@
 // Author:      Kevin Smith
 // Modified by:
 // Created:     Jan 22 1999
-// RCS-ID:
+// RCS-ID:      $Id$
 // Copyright:   (c) 1999 Kevin Smith
-// Licence:           wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "valgen.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
   #include "wx/slider.h"
 #endif
 
-#if wxUSE_SPINCTRL && !defined(__WIN16__)
+
   #include "wx/spinctrl.h"
-#endif
-#if wxUSE_SPINBTN && !defined(__WIN16__)
+
+#if wxUSE_SPINBTN
   #include "wx/spinbutt.h"
 #endif
-#if wxUSE_CHECKLISTBOX && !defined(__WIN16__)
+#if wxUSE_CHECKLISTBOX
   #include "wx/checklst.h"
 #endif
 
 #include "wx/valgen.h"
 
+IMPLEMENT_CLASS(wxGenericValidator, wxValidator)
+
 wxGenericValidator::wxGenericValidator(bool *val)
 {
     Initialize();
@@ -81,6 +79,7 @@ wxGenericValidator::wxGenericValidator(wxArrayInt *val)
 }
 
 wxGenericValidator::wxGenericValidator(const wxGenericValidator& val)
+    : wxValidator()
 {
     Copy(val);
 }
@@ -94,18 +93,14 @@ bool wxGenericValidator::Copy(const wxGenericValidator& val)
     m_pString = val.m_pString;
     m_pArrayInt = val.m_pArrayInt;
 
-    return TRUE;
-}
-
-wxGenericValidator::~wxGenericValidator()
-{
+    return true;
 }
 
 // Called to transfer data to the window
 bool wxGenericValidator::TransferToWindow(void)
 {
     if ( !m_validatorWindow )
-        return FALSE;
+        return false;
 
     // bool controls
 #if wxUSE_CHECKBOX
@@ -115,7 +110,7 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pBool)
         {
             pControl->SetValue(*m_pBool);
-            return TRUE;
+            return true;
         }
     } else
 #endif
@@ -126,7 +121,7 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pBool)
         {
             pControl->SetValue(*m_pBool) ;
-            return TRUE;
+            return true;
         }
     } else
 #endif
@@ -139,7 +134,7 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetValue(*m_pInt);
-            return TRUE;
+            return true;
         }
     } else
 #endif
@@ -150,7 +145,7 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetSelection(*m_pInt) ;
-            return TRUE;
+            return true;
         }
     } else
 #endif
@@ -161,29 +156,29 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetThumbPosition(*m_pInt) ;
-            return TRUE;
+            return true;
         }
     } else
 #endif
-#if wxUSE_SPINCTRL && !defined(__WIN16__) && !defined(__WXMOTIF__)
+#if wxUSE_SPINCTRL && !defined(__WXMOTIF__)
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinCtrl)) )
     {
         wxSpinCtrl* pControl = (wxSpinCtrl*) m_validatorWindow;
         if (m_pInt)
         {
             pControl->SetValue(*m_pInt);
-            return TRUE;
+            return true;
         }
     } else
 #endif
-#if wxUSE_SPINBTN && !defined(__WIN16__)
+#if wxUSE_SPINBTN
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
     {
         wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
         if (m_pInt)
         {
             pControl->SetValue(*m_pInt) ;
-            return TRUE;
+            return true;
         }
     } else
 #endif
@@ -194,21 +189,23 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetValue(*m_pInt) ;
-            return TRUE;
+            return true;
         }
     } else
 #endif
 
     // string controls
+#if wxUSE_BUTTON
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
     {
         wxButton* pControl = (wxButton*) m_validatorWindow;
         if (m_pString)
         {
             pControl->SetLabel(*m_pString) ;
-            return TRUE;
+            return true;
         }
     } else
+#endif
 #if wxUSE_COMBOBOX
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
     {
@@ -216,15 +213,19 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetSelection(*m_pInt) ;
-            return TRUE;
+            return true;
         }
         else if (m_pString)
         {
-            if (pControl->FindString(* m_pString) > -1)
+            if (pControl->FindString(* m_pString) != wxNOT_FOUND)
             {
                 pControl->SetStringSelection(* m_pString);
             }
-            return TRUE;
+            if ((m_validatorWindow->GetWindowStyle() & wxCB_READONLY) == 0)
+            {
+                pControl->SetValue(* m_pString);
+            }
+            return true;
         }
     } else
 #endif
@@ -235,45 +236,49 @@ bool wxGenericValidator::TransferToWindow(void)
         if (m_pInt)
         {
             pControl->SetSelection(*m_pInt) ;
-            return TRUE;
+            return true;
         }
         else if (m_pString)
         {
-            if (pControl->FindString(* m_pString) > -1)
+            if (pControl->FindString(* m_pString) != wxNOT_FOUND)
             {
                 pControl->SetStringSelection(* m_pString);
             }
-            return TRUE;
+            return true;
         }
     } else
 #endif
+#if wxUSE_STATTEXT
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
     {
         wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
         if (m_pString)
         {
             pControl->SetLabel(*m_pString) ;
-            return TRUE;
+            return true;
         }
     } else
+#endif
+#if wxUSE_TEXTCTRL
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
     {
         wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
         if (m_pString)
         {
             pControl->SetValue(*m_pString) ;
-            return TRUE;
+            return true;
         }
         else if (m_pInt)
         {
             wxString str;
             str.Printf(wxT("%d"), *m_pInt);
             pControl->SetValue(str);
-            return TRUE;
+            return true;
         }
     } else
+#endif
     // array controls
-#if wxUSE_CHECKLISTBOX && !defined(__WIN16__)
+#if wxUSE_CHECKLISTBOX
     // NOTE: wxCheckListBox is a wxListBox, so wxCheckListBox MUST come first:
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckListBox)) )
     {
@@ -284,17 +289,17 @@ bool wxGenericValidator::TransferToWindow(void)
             size_t i,
                    count = pControl->GetCount();
             for ( i = 0 ; i < count; i++ )
-                pControl->Check(i, FALSE);
+                pControl->Check(i, false);
 
             // select each item in our array
             count = m_pArrayInt->GetCount();
             for ( i = 0 ; i < count; i++ )
                 pControl->Check(m_pArrayInt->Item(i));
 
-            return TRUE;
+            return true;
         }
         else
-            return FALSE;
+            return false;
     } else
 #endif
 #if wxUSE_LISTBOX
@@ -314,232 +319,242 @@ bool wxGenericValidator::TransferToWindow(void)
             for ( i = 0 ; i < count; i++ )
                 pControl->SetSelection(m_pArrayInt->Item(i));
 
-            return TRUE;
+            return true;
         }
     } else
 #endif
         ;   // to match the last 'else' above
 
   // unrecognized control, or bad pointer
-  return FALSE;
+  return false;
 }
 
 // Called to transfer data from the window
 bool wxGenericValidator::TransferFromWindow(void)
 {
-  if ( !m_validatorWindow )
-    return FALSE;
+    if ( !m_validatorWindow )
+        return false;
 
-  // bool controls
+    // BOOL CONTROLS **************************************
 #if wxUSE_CHECKBOX
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
-  {
-    wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
-        if (m_pBool)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
     {
-      *m_pBool = pControl->GetValue() ;
-      return TRUE;
-    }
-  } else
+        wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
+        if (m_pBool)
+        {
+            *m_pBool = pControl->GetValue() ;
+            return true;
+        }
+    } else
 #endif
 #if wxUSE_RADIOBTN
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
-  {
-    wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
-        if (m_pBool)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
     {
-      *m_pBool = pControl->GetValue() ;
-      return TRUE;
-    }
-  } else
+        wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
+        if (m_pBool)
+        {
+            *m_pBool = pControl->GetValue() ;
+            return true;
+        }
+    } else
 #endif
-  // int controls
+
+    // INT CONTROLS ***************************************
 #if wxUSE_GAUGE
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
-  {
-    wxGauge* pControl = (wxGauge*) m_validatorWindow;
-        if (m_pInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
     {
-      *m_pInt = pControl->GetValue() ;
-      return TRUE;
-    }
-  } else
+        wxGauge* pControl = (wxGauge*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetValue() ;
+            return true;
+        }
+    } else
 #endif
 #if wxUSE_RADIOBOX
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
-  {
-    wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
-        if (m_pInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
     {
-      *m_pInt = pControl->GetSelection() ;
-      return TRUE;
-    }
-  } else
+        wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetSelection() ;
+            return true;
+        }
+    } else
 #endif
 #if wxUSE_SCROLLBAR
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
-  {
-    wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
-        if (m_pInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
     {
-      *m_pInt = pControl->GetThumbPosition() ;
-      return TRUE;
-    }
-  } else
+        wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetThumbPosition() ;
+            return true;
+        }
+    } else
 #endif
-#if wxUSE_SPINCTRL && !defined(__WIN16__) && !defined(__WXMOTIF__)
+#if wxUSE_SPINCTRL && !defined(__WXMOTIF__)
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinCtrl)) )
     {
         wxSpinCtrl* pControl = (wxSpinCtrl*) m_validatorWindow;
         if (m_pInt)
         {
             *m_pInt=pControl->GetValue();
-            return TRUE;
+            return true;
         }
     } else
 #endif
-#if wxUSE_SPINBTN && !defined(__WIN16__)
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
-  {
-    wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
-        if (m_pInt)
+#if wxUSE_SPINBTN
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
     {
-      *m_pInt = pControl->GetValue() ;
-      return TRUE;
-    }
-  } else
+        wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetValue() ;
+            return true;
+        }
+    } else
 #endif
 #if wxUSE_SLIDER
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxSlider)) )
-  {
-    wxSlider* pControl = (wxSlider*) m_validatorWindow;
-    if (m_pInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxSlider)) )
     {
-      *m_pInt = pControl->GetValue() ;
-      return TRUE;
-    }
-  } else
-#endif
-  // string controls
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
-  {
-    wxButton* pControl = (wxButton*) m_validatorWindow;
-        if (m_pString)
+        wxSlider* pControl = (wxSlider*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetValue() ;
+            return true;
+        }
+    } else
+#endif
+
+    // STRING CONTROLS ************************************
+#if wxUSE_BUTTON
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
     {
-      *m_pString = pControl->GetLabel() ;
-      return TRUE;
-    }
-  }
-  else
+        wxButton* pControl = (wxButton*) m_validatorWindow;
+        if (m_pString)
+        {
+            *m_pString = pControl->GetLabel() ;
+            return true;
+        }
+    } else
+#endif
 #if wxUSE_COMBOBOX
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
-  {
-    wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
-    if (m_pInt)
-    {
-      *m_pInt = pControl->GetSelection() ;
-      return TRUE;
-    }
-    else if (m_pString)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
     {
-        *m_pString = pControl->GetStringSelection();
-        return TRUE;
-    }
-  } else
+        wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetSelection() ;
+            return true;
+        }
+        else if (m_pString)
+        {
+            if (m_validatorWindow->GetWindowStyle() & wxCB_READONLY)
+                *m_pString = pControl->GetStringSelection();
+            else
+                *m_pString = pControl->GetValue();
+            return true;
+        }
+    } else
 #endif
 #if wxUSE_CHOICE
- if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
-  {
-    wxChoice* pControl = (wxChoice*) m_validatorWindow;
-        if (m_pInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
     {
-      *m_pInt = pControl->GetSelection() ;
-      return TRUE;
-    }
-    else if (m_pString)
+        wxChoice* pControl = (wxChoice*) m_validatorWindow;
+        if (m_pInt)
+        {
+            *m_pInt = pControl->GetSelection() ;
+            return true;
+        }
+        else if (m_pString)
+        {
+            *m_pString = pControl->GetStringSelection();
+            return true;
+        }
+    } else
+#endif
+#if wxUSE_STATTEXT
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
     {
-        *m_pString = pControl->GetStringSelection();
-        return TRUE;
-    }
-  } else
-#endif
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
-  {
-    wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
+        wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
         if (m_pString)
+        {
+            *m_pString = pControl->GetLabel() ;
+            return true;
+        }
+    } else
+#endif
+#if wxUSE_TEXTCTRL
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
     {
-      *m_pString = pControl->GetLabel() ;
-      return TRUE;
-    }
-  } else
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
-  {
-    wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
+        wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
         if (m_pString)
-    {
-      *m_pString = pControl->GetValue() ;
-      return TRUE;
-    }
-    else if (m_pInt)
-    {
-        *m_pInt = wxAtoi(pControl->GetValue());
-        return TRUE;
-    }
-  } else
-  // array controls
+        {
+            *m_pString = pControl->GetValue() ;
+            return true;
+        }
+        else if (m_pInt)
+        {
+            *m_pInt = wxAtoi(pControl->GetValue());
+            return true;
+        }
+    } else
+#endif
+
+    // ARRAY CONTROLS *************************************
 #if wxUSE_CHECKLISTBOX
-#ifndef __WIN16__
-  // NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox MUST come first:
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckListBox)) )
-  {
-    wxCheckListBox* pControl = (wxCheckListBox*) m_validatorWindow;
-    if (m_pArrayInt)
+    // NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox MUST come first:
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckListBox)) )
     {
-      // clear our array
-      m_pArrayInt->Clear();
+        wxCheckListBox* pControl = (wxCheckListBox*) m_validatorWindow;
+        if (m_pArrayInt)
+        {
+            // clear our array
+            m_pArrayInt->Clear();
 
-      // add each selected item to our array
-      size_t i,
-             count = pControl->GetCount();
-      for ( i = 0; i < count; i++ )
-      {
-        if (pControl->IsChecked(i))
-          m_pArrayInt->Add(i);
-      }
+            // add each selected item to our array
+            size_t i,
+                   count = pControl->GetCount();
+            for ( i = 0; i < count; i++ )
+            {
+                if (pControl->IsChecked(i))
+                    m_pArrayInt->Add(i);
+            }
 
-      return TRUE;
-    }
-    else
-      return FALSE;
-  } else
-#endif
+            return true;
+        }
+        else
+            return false;
+    } else
 #endif
 #if wxUSE_LISTBOX
-  if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
-  {
-    wxListBox* pControl = (wxListBox*) m_validatorWindow;
-    if (m_pArrayInt)
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
     {
-      // clear our array
-      m_pArrayInt->Clear();
+        wxListBox* pControl = (wxListBox*) m_validatorWindow;
+        if (m_pArrayInt)
+        {
+            // clear our array
+            m_pArrayInt->Clear();
 
-      // add each selected item to our array
-      size_t i,
-             count = pControl->GetCount();
-      for ( i = 0; i < count; i++ )
-      {
-        if (pControl->Selected(i))
-          m_pArrayInt->Add(i);
-      }
+            // add each selected item to our array
+            size_t i,
+                   count = pControl->GetCount();
+            for ( i = 0; i < count; i++ )
+            {
+                if (pControl->Selected(i))
+                    m_pArrayInt->Add(i);
+            }
 
-      return TRUE;
-    }
-  } else
+            return true;
+        }
+    } else
 #endif
 
-  // unrecognized control, or bad pointer
-    return FALSE;
-  return FALSE;
+    // unrecognized control, or bad pointer
+        return false;
+
+    return false;
 }
 
 /*