Support float, double and file name values in wxGenericValidator.

Currently these values can only be read from/written to wxTextCtrl but support
for other controls (e.g. wxSpinCtrlDouble for float/double) could be added in
the future.

Closes #13304.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68217 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-07-09 23:37:28 +00:00
parent 065ba6fb09
commit e96be167e7
4 changed files with 103 additions and 0 deletions

View File

@@ -46,6 +46,7 @@
#if wxUSE_TOGGLEBTN
#include "wx/tglbtn.h"
#endif
#include "wx/filename.h"
#include "wx/valgen.h"
@@ -83,6 +84,24 @@ wxGenericValidator::wxGenericValidator(wxDateTime *val)
m_pDateTime = val;
}
wxGenericValidator::wxGenericValidator(wxFileName *val)
{
Initialize();
m_pFileName = val;
}
wxGenericValidator::wxGenericValidator(float *val)
{
Initialize();
m_pFloat = val;
}
wxGenericValidator::wxGenericValidator(double *val)
{
Initialize();
m_pDouble = val;
}
#endif // wxUSE_DATETIME
wxGenericValidator::wxGenericValidator(const wxGenericValidator& val)
@@ -321,6 +340,21 @@ bool wxGenericValidator::TransferToWindow(void)
pControl->SetValue(str);
return true;
}
else if (m_pFileName)
{
pControl->SetValue(m_pFileName->GetFullPath());
return true;
}
else if (m_pFloat)
{
pControl->SetValue(wxString::Format(wxT("%g"), *m_pFloat));
return true;
}
else if (m_pDouble)
{
pControl->SetValue(wxString::Format(wxT("%g"), *m_pDouble));
return true;
}
} else
#endif
@@ -582,6 +616,21 @@ bool wxGenericValidator::TransferFromWindow(void)
*m_pInt = wxAtoi(pControl->GetValue());
return true;
}
else if (m_pFileName)
{
m_pFileName->Assign(pControl->GetValue());
return true;
}
else if (m_pFloat)
{
*m_pFloat = (float)wxAtof(pControl->GetValue());
return true;
}
else if (m_pDouble)
{
*m_pDouble = wxAtof(pControl->GetValue());
return true;
}
} else
#endif
@@ -652,6 +701,9 @@ void wxGenericValidator::Initialize()
#if wxUSE_DATETIME
m_pDateTime = NULL;
#endif // wxUSE_DATETIME
m_pFileName = NULL;
m_pFloat = NULL;
m_pDouble = NULL;
}
#endif // wxUSE_VALIDATORS