1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxValidator class
4 // Author: Julian Smart
7 // Copyright: (c) 1998 Julian Smart
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_VALIDATE_H_
12 #define _WX_VALIDATE_H_
20 class WXDLLIMPEXP_FWD_CORE wxWindow
;
21 class WXDLLIMPEXP_FWD_CORE wxWindowBase
;
24 A validator has up to three purposes:
26 1) To validate the data in the window that's associated
28 2) To transfer data to and from the window.
29 3) To filter input, using its role as a wxEvtHandler
30 to intercept e.g. OnChar.
32 Note that wxValidator and derived classes use reference counting.
35 class WXDLLIMPEXP_CORE wxValidator
: public wxEvtHandler
39 wxValidator(const wxValidator
& other
)
41 , m_validatorWindow(other
.m_validatorWindow
)
44 virtual ~wxValidator();
46 // Make a clone of this validator (or return NULL) - currently necessary
47 // if you're passing a reference to a validator.
48 // Another possibility is to always pass a pointer to a new validator
49 // (so the calling code can use a copy constructor of the relevant class).
50 virtual wxObject
*Clone() const
52 bool Copy(const wxValidator
& val
)
53 { m_validatorWindow
= val
.m_validatorWindow
; return true; }
55 // Called when the value in the window must be validated.
56 // This function can pop up an error message.
57 virtual bool Validate(wxWindow
*WXUNUSED(parent
)) { return false; }
59 // Called to transfer data to the window
60 virtual bool TransferToWindow() { return false; }
62 // Called to transfer data from the window
63 virtual bool TransferFromWindow() { return false; }
66 wxWindow
*GetWindow() const { return (wxWindow
*)m_validatorWindow
; }
67 void SetWindow(wxWindowBase
*win
) { m_validatorWindow
= win
; }
69 // validators beep by default if invalid key is pressed, this function
70 // allows to change this
71 static void SuppressBellOnError(bool suppress
= true)
72 { ms_isSilent
= suppress
; }
74 // test if beep is currently disabled
75 static bool IsSilent() { return ms_isSilent
; }
77 // this function is deprecated because it handled its parameter
78 // unnaturally: it disabled the bell when it was true, not false as could
79 // be expected; use SuppressBellOnError() instead
80 #if WXWIN_COMPATIBILITY_2_8
81 static wxDEPRECATED_INLINE(
82 void SetBellOnError(bool doIt
= true),
88 wxWindowBase
*m_validatorWindow
;
91 static bool ms_isSilent
;
93 DECLARE_DYNAMIC_CLASS(wxValidator
)
94 wxDECLARE_NO_ASSIGN_CLASS(wxValidator
);
97 extern WXDLLIMPEXP_DATA_CORE(const wxValidator
) wxDefaultValidator
;
99 #define wxVALIDATOR_PARAM(val) val
101 #else // !wxUSE_VALIDATORS
102 // wxWidgets is compiled without support for wxValidator, but we still
103 // want to be able to pass wxDefaultValidator to the functions which take
104 // a wxValidator parameter to avoid using "#if wxUSE_VALIDATORS"
106 class WXDLLIMPEXP_FWD_CORE wxValidator
;
107 #define wxDefaultValidator (*reinterpret_cast<wxValidator*>(NULL))
109 // this macro allows to avoid warnings about unused parameters when
110 // wxUSE_VALIDATORS == 0
111 #define wxVALIDATOR_PARAM(val)
112 #endif // wxUSE_VALIDATORS/!wxUSE_VALIDATORS
114 #endif // _WX_VALIDATE_H_