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:
Vadim Zeitlin
2007-11-01 20:52:40 +00:00
parent b6423e8be3
commit 472eec8a03
2 changed files with 43 additions and 33 deletions

View File

@@ -14,9 +14,8 @@
#include "wx/defs.h" #include "wx/defs.h"
#if wxUSE_VALIDATORS && wxUSE_TEXTCTRL #if wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
#include "wx/textctrl.h"
#include "wx/validate.h" #include "wx/validate.h"
#define wxFILTER_NONE 0x0000 #define wxFILTER_NONE 0x0000
@@ -60,6 +59,7 @@ public:
inline long GetStyle() const { return m_validatorStyle; } inline long GetStyle() const { return m_validatorStyle; }
inline void SetStyle(long style) { m_validatorStyle = style; } inline void SetStyle(long style) { m_validatorStyle = style; }
wxTextEntry *GetTextEntry();
void SetIncludes(const wxArrayString& includes) { m_includes = includes; } void SetIncludes(const wxArrayString& includes) { m_includes = includes; }
inline wxArrayString& GetIncludes() { return m_includes; } inline wxArrayString& GetIncludes() { return m_includes; }
@@ -73,7 +73,6 @@ public:
// Filter keystrokes // Filter keystrokes
void OnChar(wxKeyEvent& event); void OnChar(wxKeyEvent& event);
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
protected: protected:
@@ -82,16 +81,6 @@ protected:
wxArrayString m_includes; wxArrayString m_includes;
wxArrayString m_excludes; 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: private:
// Cannot use // Cannot use
// DECLARE_NO_COPY_CLASS(wxTextValidator) // DECLARE_NO_COPY_CLASS(wxTextValidator)
@@ -102,7 +91,7 @@ private:
}; };
#endif #endif
// wxUSE_VALIDATORS && wxUSE_TEXTCTRL // wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
#endif #endif
// _WX_VALTEXTH__ // _WX_VALTEXTH__

View File

@@ -16,7 +16,7 @@
#pragma hdrstop #pragma hdrstop
#endif #endif
#if wxUSE_VALIDATORS && wxUSE_TEXTCTRL #if wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
#include "wx/valtext.h" #include "wx/valtext.h"
@@ -75,6 +75,28 @@ bool wxTextValidator::Copy(const wxTextValidator& val)
return true; 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) static bool wxIsAlpha(const wxString& val)
{ {
int i; int i;
@@ -101,16 +123,15 @@ static bool wxIsAlphaNumeric(const wxString& val)
// This function can pop up an error message. // This function can pop up an error message.
bool wxTextValidator::Validate(wxWindow *parent) bool wxTextValidator::Validate(wxWindow *parent)
{ {
if( !CheckValidator() )
return false;
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow;
// If window is disabled, simply return // If window is disabled, simply return
if ( !control->IsEnabled() ) if ( !m_validatorWindow->IsEnabled() )
return true; return true;
wxString val(control->GetValue()); wxTextEntry * const text = GetTextEntry();
if ( !text )
return false;
wxString val(text->GetValue());
bool ok = true; bool ok = true;
@@ -184,13 +205,13 @@ bool wxTextValidator::Validate(wxWindow *parent)
// Called to transfer data to the window // Called to transfer data to the window
bool wxTextValidator::TransferToWindow(void) bool wxTextValidator::TransferToWindow(void)
{ {
if( !CheckValidator() )
return false;
if ( m_stringValue ) if ( m_stringValue )
{ {
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow; wxTextEntry * const text = GetTextEntry();
control->SetValue(* m_stringValue); if ( !text )
return false;
text->SetValue(*m_stringValue);
} }
return true; return true;
@@ -199,13 +220,13 @@ bool wxTextValidator::TransferToWindow(void)
// Called to transfer data to the window // Called to transfer data to the window
bool wxTextValidator::TransferFromWindow(void) bool wxTextValidator::TransferFromWindow(void)
{ {
if( !CheckValidator() )
return false;
if ( m_stringValue ) if ( m_stringValue )
{ {
wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow; wxTextEntry * const text = GetTextEntry();
*m_stringValue = control->GetValue(); if ( !text )
return false;
*m_stringValue = text->GetValue();
} }
return true; return true;
@@ -284,4 +305,4 @@ static bool wxIsNumeric(const wxString& val)
#endif #endif
// wxUSE_VALIDATORS && wxUSE_TEXTCTRL // wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)