1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
/////////////////////////////////////////////////////////////////////////////
// Name: wx/valtext.h
// Purpose: wxTextValidator class
// Author: Julian Smart
// Modified by: Francesco Montorsi
// Created: 29/01/98
// Copyright: (c) 1998 Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_VALTEXT_H_
#define _WX_VALTEXT_H_
#include "wx/defs.h"
#if wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
class WXDLLIMPEXP_FWD_CORE wxTextEntry;
#include "wx/validate.h"
enum wxTextValidatorStyle
{
wxFILTER_NONE = 0x0,
wxFILTER_EMPTY = 0x1,
wxFILTER_ASCII = 0x2,
wxFILTER_ALPHA = 0x4,
wxFILTER_ALPHANUMERIC = 0x8,
wxFILTER_DIGITS = 0x10,
wxFILTER_NUMERIC = 0x20,
wxFILTER_INCLUDE_LIST = 0x40,
wxFILTER_INCLUDE_CHAR_LIST = 0x80,
wxFILTER_EXCLUDE_LIST = 0x100,
wxFILTER_EXCLUDE_CHAR_LIST = 0x200,
wxFILTER_XDIGITS = 0x400,
wxFILTER_SPACE = 0x800,
// filter char class (for internal use only)
wxFILTER_CC = wxFILTER_SPACE|wxFILTER_ASCII|wxFILTER_NUMERIC|
wxFILTER_ALPHANUMERIC|wxFILTER_ALPHA|
wxFILTER_DIGITS|wxFILTER_XDIGITS
};
// ----------------------------------------------------------------------------
// wxTextValidator
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxTextValidator: public wxValidator
{
public:
wxTextValidator(long style = wxFILTER_NONE, wxString *val = NULL);
wxTextValidator(const wxTextValidator& val);
virtual ~wxTextValidator(){}
// Make a clone of this validator (or return NULL) - currently necessary
// if you're passing a reference to a validator.
// Another possibility is to always pass a pointer to a new validator
// (so the calling code can use a copy constructor of the relevant class).
virtual wxObject *Clone() const wxOVERRIDE { return new wxTextValidator(*this); }
bool Copy(const wxTextValidator& val);
// Called when the value in the window must be validated.
// This function can pop up an error message.
virtual bool Validate(wxWindow *parent) wxOVERRIDE;
// Called to transfer data to the window
virtual bool TransferToWindow() wxOVERRIDE;
// Called to transfer data from the window
virtual bool TransferFromWindow() wxOVERRIDE;
// Filter keystrokes
void OnChar(wxKeyEvent& event);
// ACCESSORS
inline long GetStyle() const { return m_validatorStyle; }
void SetStyle(long style);
wxTextEntry *GetTextEntry();
// strings & chars inclusions:
// ---------------------------
void SetCharIncludes(const wxString& chars);
void AddCharIncludes(const wxString& chars);
void SetIncludes(const wxArrayString& includes);
void AddInclude(const wxString& include);
const wxArrayString& GetIncludes() const { return m_includes; }
wxString GetCharIncludes() const { return m_charIncludes; }
// strings & chars exclusions:
// ---------------------------
void SetCharExcludes(const wxString& chars);
void AddCharExcludes(const wxString& chars);
void SetExcludes(const wxArrayString& excludes);
void AddExclude(const wxString& exclude);
const wxArrayString& GetExcludes() const { return m_excludes; }
wxString GetCharExcludes() const { return m_charExcludes; }
bool HasFlag(wxTextValidatorStyle style) const
{ return (m_validatorStyle & style) != 0; }
// implementation only
// --------------------
// returns the error message if the contents of 'str' are invalid
virtual wxString IsValid(const wxString& str) const;
protected:
bool IsCharIncluded(const wxUniChar& c) const
{
return m_charIncludes.find(c) != wxString::npos;
}
bool IsCharExcluded(const wxUniChar& c) const
{
return m_charExcludes.find(c) != wxString::npos;
}
bool IsIncluded(const wxString& str) const
{
if ( HasFlag(wxFILTER_INCLUDE_LIST) )
return m_includes.Index(str) != wxNOT_FOUND;
// m_includes should be ignored (i.e. return true)
// if the style is not set.
return true;
}
bool IsExcluded(const wxString& str) const
{
return m_excludes.Index(str) != wxNOT_FOUND;
}
// returns false if the character is invalid
bool IsValidChar(const wxUniChar& c) const;
// These two functions (undocumented now) are kept for compatibility reasons.
bool ContainsOnlyIncludedCharacters(const wxString& val) const;
bool ContainsExcludedCharacters(const wxString& val) const;
protected:
long m_validatorStyle;
wxString* m_stringValue;
wxString m_charIncludes;
wxString m_charExcludes;
wxArrayString m_includes;
wxArrayString m_excludes;
private:
void OnPaste(wxClipboardTextEvent& event);
wxDECLARE_NO_ASSIGN_CLASS(wxTextValidator);
wxDECLARE_DYNAMIC_CLASS(wxTextValidator);
wxDECLARE_EVENT_TABLE();
};
#endif
// wxUSE_VALIDATORS && (wxUSE_TEXTCTRL || wxUSE_COMBOBOX)
#endif // _WX_VALTEXT_H_
|