Added wxGenericValidator & doc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
386
src/common/valgen.cpp
Normal file
386
src/common/valgen.cpp
Normal file
@@ -0,0 +1,386 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: valgen.cpp
|
||||
// Purpose: wxGenericValidator class
|
||||
// Author: Kevin Smith
|
||||
// Modified by:
|
||||
// Created: Jan 22 1999
|
||||
// RCS-ID:
|
||||
// Copyright: (c) 1999 Kevin Smith
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "valgen.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/utils.h"
|
||||
#include "wx/intl.h"
|
||||
#endif
|
||||
|
||||
#include "wx/spinbutt.h"
|
||||
#include "wx/checklst.h"
|
||||
|
||||
#include "wx/valgen.h"
|
||||
|
||||
wxGenericValidator::wxGenericValidator(bool *val)
|
||||
{
|
||||
Initialize();
|
||||
m_pBool = val;
|
||||
}
|
||||
|
||||
wxGenericValidator::wxGenericValidator(int *val)
|
||||
{
|
||||
Initialize();
|
||||
m_pInt = val;
|
||||
}
|
||||
|
||||
wxGenericValidator::wxGenericValidator(wxString *val)
|
||||
{
|
||||
Initialize();
|
||||
m_pString = val;
|
||||
}
|
||||
|
||||
wxGenericValidator::wxGenericValidator(wxArrayInt *val)
|
||||
{
|
||||
Initialize();
|
||||
m_pArrayInt = val;
|
||||
}
|
||||
|
||||
wxGenericValidator::wxGenericValidator(const wxGenericValidator& val)
|
||||
{
|
||||
Copy(val);
|
||||
}
|
||||
|
||||
bool wxGenericValidator::Copy(const wxGenericValidator& val)
|
||||
{
|
||||
wxValidator::Copy(val);
|
||||
|
||||
m_pBool = val.m_pBool;
|
||||
m_pInt = val.m_pInt;
|
||||
m_pString = val.m_pString;
|
||||
m_pArrayInt = val.m_pArrayInt;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
wxGenericValidator::~wxGenericValidator()
|
||||
{
|
||||
}
|
||||
|
||||
// Called to transfer data to the window
|
||||
bool wxGenericValidator::TransferToWindow(void)
|
||||
{
|
||||
if ( !m_validatorWindow )
|
||||
return FALSE;
|
||||
|
||||
// bool controls
|
||||
if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
|
||||
{
|
||||
wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
|
||||
if (m_pBool)
|
||||
{
|
||||
pControl->SetValue(*m_pBool) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
|
||||
{
|
||||
wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
|
||||
if (m_pBool)
|
||||
{
|
||||
pControl->SetValue(*m_pBool) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// int controls
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
|
||||
{
|
||||
wxGauge* pControl = (wxGauge*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
pControl->SetValue(*m_pInt) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
|
||||
{
|
||||
wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
pControl->SetSelection(*m_pInt) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
|
||||
{
|
||||
wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
pControl->SetThumbPosition(*m_pInt) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
|
||||
{
|
||||
wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
pControl->SetValue(*m_pInt) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// string controls
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
|
||||
{
|
||||
wxButton* pControl = (wxButton*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
pControl->SetLabel(*m_pString) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
|
||||
{
|
||||
wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
pControl->SetValue(*m_pString) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
|
||||
{
|
||||
wxChoice* pControl = (wxChoice*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
pControl->SetSelection(*m_pInt) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
|
||||
{
|
||||
wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
pControl->SetLabel(*m_pString) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
|
||||
{
|
||||
wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
pControl->SetValue(*m_pString) ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// array controls
|
||||
// NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox
|
||||
// MUST come first:
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckListBox)) )
|
||||
{
|
||||
wxCheckListBox* pControl = (wxCheckListBox*) m_validatorWindow;
|
||||
if (m_pArrayInt)
|
||||
{
|
||||
// clear all selections
|
||||
int i;
|
||||
for (i = 0 ; i < pControl->Number(); ++i)
|
||||
pControl->Check(i, FALSE);
|
||||
// select each item in our array
|
||||
unsigned u;
|
||||
for (u = 0; u < m_pArrayInt->Count(); ++u)
|
||||
pControl->Check(m_pArrayInt->Item(u));
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
|
||||
{
|
||||
wxListBox* pControl = (wxListBox*) m_validatorWindow;
|
||||
if (m_pArrayInt)
|
||||
{
|
||||
// clear all selections
|
||||
int i;
|
||||
for (i = 0 ; i < pControl->Number(); ++i)
|
||||
pControl->Deselect(i);
|
||||
// select each item in our array
|
||||
unsigned u;
|
||||
for (u = 0; u < m_pArrayInt->Count(); ++u)
|
||||
pControl->SetSelection(m_pArrayInt->Item(u));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// unrecognized control, or bad pointer
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Called to transfer data to the window
|
||||
bool wxGenericValidator::TransferFromWindow(void)
|
||||
{
|
||||
if ( !m_validatorWindow )
|
||||
return FALSE;
|
||||
|
||||
// bool controls
|
||||
if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckBox)) )
|
||||
{
|
||||
wxCheckBox* pControl = (wxCheckBox*) m_validatorWindow;
|
||||
if (m_pBool)
|
||||
{
|
||||
*m_pBool = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioButton)) )
|
||||
{
|
||||
wxRadioButton* pControl = (wxRadioButton*) m_validatorWindow;
|
||||
if (m_pBool)
|
||||
{
|
||||
*m_pBool = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// int controls
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxGauge)) )
|
||||
{
|
||||
wxGauge* pControl = (wxGauge*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
*m_pInt = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxRadioBox)) )
|
||||
{
|
||||
wxRadioBox* pControl = (wxRadioBox*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
*m_pInt = pControl->GetSelection() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxScrollBar)) )
|
||||
{
|
||||
wxScrollBar* pControl = (wxScrollBar*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
*m_pInt = pControl->GetThumbPosition() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxSpinButton)) )
|
||||
{
|
||||
wxSpinButton* pControl = (wxSpinButton*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
*m_pInt = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// string controls
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
|
||||
{
|
||||
wxButton* pControl = (wxButton*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
*m_pString = pControl->GetLabel() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)) )
|
||||
{
|
||||
wxComboBox* pControl = (wxComboBox*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
*m_pString = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxChoice)) )
|
||||
{
|
||||
wxChoice* pControl = (wxChoice*) m_validatorWindow;
|
||||
if (m_pInt)
|
||||
{
|
||||
*m_pInt = pControl->GetSelection() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxStaticText)) )
|
||||
{
|
||||
wxStaticText* pControl = (wxStaticText*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
*m_pString = pControl->GetLabel() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) )
|
||||
{
|
||||
wxTextCtrl* pControl = (wxTextCtrl*) m_validatorWindow;
|
||||
if (m_pString)
|
||||
{
|
||||
*m_pString = pControl->GetValue() ;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
// array controls
|
||||
// NOTE: wxCheckListBox isa wxListBox, so wxCheckListBox
|
||||
// MUST come first:
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxCheckListBox)) )
|
||||
{
|
||||
wxCheckListBox* pControl = (wxCheckListBox*) m_validatorWindow;
|
||||
if (m_pArrayInt)
|
||||
{
|
||||
// clear our array
|
||||
m_pArrayInt->Clear();
|
||||
// add each selected item to our array
|
||||
int i;
|
||||
for (i = 0 ; i < pControl->Number(); ++i)
|
||||
if (pControl->IsChecked(i))
|
||||
m_pArrayInt->Add(i);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else if (m_validatorWindow->IsKindOf(CLASSINFO(wxListBox)) )
|
||||
{
|
||||
wxListBox* pControl = (wxListBox*) m_validatorWindow;
|
||||
if (m_pArrayInt)
|
||||
{
|
||||
// clear our array
|
||||
m_pArrayInt->Clear();
|
||||
// add each selected item to our array
|
||||
int i;
|
||||
for (i = 0 ; i < pControl->Number(); ++i)
|
||||
if (pControl->Selected(i))
|
||||
m_pArrayInt->Add(i);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// unrecognized control, or bad pointer
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
Called by constructors to initialize ALL data members
|
||||
*/
|
||||
void wxGenericValidator::Initialize()
|
||||
{
|
||||
m_pBool = 0;
|
||||
m_pInt = 0;
|
||||
m_pString = 0;
|
||||
m_pArrayInt = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user