use wxTextEntry in wxTextValidator (modified patch 1821743)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b6423e8be3
commit
472eec8a03
@ -14,9 +14,8 @@
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_VALIDATORS && wxUSE_TEXTCTRL
|
||||
#if wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
|
||||
|
||||
#include "wx/textctrl.h"
|
||||
#include "wx/validate.h"
|
||||
|
||||
#define wxFILTER_NONE 0x0000
|
||||
@ -60,6 +59,7 @@ public:
|
||||
inline long GetStyle() const { return m_validatorStyle; }
|
||||
inline void SetStyle(long style) { m_validatorStyle = style; }
|
||||
|
||||
wxTextEntry *GetTextEntry();
|
||||
|
||||
void SetIncludes(const wxArrayString& includes) { m_includes = includes; }
|
||||
inline wxArrayString& GetIncludes() { return m_includes; }
|
||||
@ -73,7 +73,6 @@ public:
|
||||
// Filter keystrokes
|
||||
void OnChar(wxKeyEvent& event);
|
||||
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
protected:
|
||||
@ -82,16 +81,6 @@ protected:
|
||||
wxArrayString m_includes;
|
||||
wxArrayString m_excludes;
|
||||
|
||||
bool CheckValidator() const
|
||||
{
|
||||
wxCHECK_MSG( m_validatorWindow, false,
|
||||
_T("No window associated with validator") );
|
||||
wxCHECK_MSG( m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)), false,
|
||||
_T("wxTextValidator is only for wxTextCtrl's") );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
// Cannot use
|
||||
// DECLARE_NO_COPY_CLASS(wxTextValidator)
|
||||
@ -102,7 +91,7 @@ private:
|
||||
};
|
||||
|
||||
#endif
|
||||
// wxUSE_VALIDATORS && wxUSE_TEXTCTRL
|
||||
// wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
|
||||
|
||||
#endif
|
||||
// _WX_VALTEXTH__
|
||||
|
@ -16,7 +16,7 @@
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#if wxUSE_VALIDATORS && wxUSE_TEXTCTRL
|
||||
#if wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
|
||||
|
||||
#include "wx/valtext.h"
|
||||
|
||||
@ -75,6 +75,28 @@ bool wxTextValidator::Copy(const wxTextValidator& val)
|
||||
return true;
|
||||
}
|
||||
|
||||
wxTextEntry *wxTextValidator::GetTextEntry()
|
||||
{
|
||||
#if wxUSE_TEXTCTRL
|
||||
if (m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)))
|
||||
{
|
||||
return (wxTextCtrl*)m_validatorWindow;
|
||||
}
|
||||
#endif
|
||||
#if wxUSE_COMBOBOX
|
||||
if (m_validatorWindow->IsKindOf(CLASSINFO(wxComboBox)))
|
||||
{
|
||||
return (wxComboBox*)m_validatorWindow;
|
||||
}
|
||||
#endif
|
||||
|
||||
wxFAIL_MSG(
|
||||
_T("wxTextValidator can only be used with wxTextCtrl or wxComboBox")
|
||||
);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static bool wxIsAlpha(const wxString& val)
|
||||
{
|
||||
int i;
|
||||
@ -101,16 +123,15 @@ static bool wxIsAlphaNumeric(const wxString& val)
|
||||
// This function can pop up an error message.
|
||||
bool wxTextValidator::Validate(wxWindow *parent)
|
||||
{
|
||||
if( !CheckValidator() )
|
||||
return false;
|
||||
|
||||
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow;
|
||||
|
||||
// If window is disabled, simply return
|
||||
if ( !control->IsEnabled() )
|
||||
if ( !m_validatorWindow->IsEnabled() )
|
||||
return true;
|
||||
|
||||
wxString val(control->GetValue());
|
||||
wxTextEntry * const text = GetTextEntry();
|
||||
if ( !text )
|
||||
return false;
|
||||
|
||||
wxString val(text->GetValue());
|
||||
|
||||
bool ok = true;
|
||||
|
||||
@ -184,13 +205,13 @@ bool wxTextValidator::Validate(wxWindow *parent)
|
||||
// Called to transfer data to the window
|
||||
bool wxTextValidator::TransferToWindow(void)
|
||||
{
|
||||
if( !CheckValidator() )
|
||||
return false;
|
||||
|
||||
if ( m_stringValue )
|
||||
{
|
||||
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow;
|
||||
control->SetValue(* m_stringValue);
|
||||
wxTextEntry * const text = GetTextEntry();
|
||||
if ( !text )
|
||||
return false;
|
||||
|
||||
text->SetValue(*m_stringValue);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -199,13 +220,13 @@ bool wxTextValidator::TransferToWindow(void)
|
||||
// Called to transfer data to the window
|
||||
bool wxTextValidator::TransferFromWindow(void)
|
||||
{
|
||||
if( !CheckValidator() )
|
||||
return false;
|
||||
|
||||
if ( m_stringValue )
|
||||
{
|
||||
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow;
|
||||
*m_stringValue = control->GetValue();
|
||||
wxTextEntry * const text = GetTextEntry();
|
||||
if ( !text )
|
||||
return false;
|
||||
|
||||
*m_stringValue = text->GetValue();
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -284,4 +305,4 @@ static bool wxIsNumeric(const wxString& val)
|
||||
|
||||
|
||||
#endif
|
||||
// wxUSE_VALIDATORS && wxUSE_TEXTCTRL
|
||||
// wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
|
||||
|
Loading…
Reference in New Issue
Block a user