1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/univ/checklst.h
3 // Purpose:     wxCheckListBox class for wxUniversal
4 // Author:      Vadim Zeitlin
5 // Modified by:
6 // Created:     12.09.00
7 // Copyright:   (c) Vadim Zeitlin
8 // Licence:     wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_UNIV_CHECKLST_H_
12 #define _WX_UNIV_CHECKLST_H_
13 
14 // ----------------------------------------------------------------------------
15 // actions
16 // ----------------------------------------------------------------------------
17 
18 #define wxACTION_CHECKLISTBOX_TOGGLE wxT("toggle")
19 
20 // ----------------------------------------------------------------------------
21 // wxCheckListBox
22 // ----------------------------------------------------------------------------
23 
24 class WXDLLIMPEXP_CORE wxCheckListBox : public wxCheckListBoxBase
25 {
26 public:
27     // ctors
wxCheckListBox()28     wxCheckListBox() { Init(); }
29 
30     wxCheckListBox(wxWindow *parent,
31                    wxWindowID id,
32                    const wxPoint& pos = wxDefaultPosition,
33                    const wxSize& size = wxDefaultSize,
34                    int nStrings = 0,
35                    const wxString choices[] = NULL,
36                    long style = 0,
37                    const wxValidator& validator = wxDefaultValidator,
38                    const wxString& name = wxASCII_STR(wxListBoxNameStr))
39     {
40         Init();
41 
42         Create(parent, id, pos, size, nStrings, choices, style, validator, name);
43     }
44     wxCheckListBox(wxWindow *parent,
45                    wxWindowID id,
46                    const wxPoint& pos,
47                    const wxSize& size,
48                    const wxArrayString& choices,
49                    long style = 0,
50                    const wxValidator& validator = wxDefaultValidator,
51                    const wxString& name = wxASCII_STR(wxListBoxNameStr));
52 
53     bool Create(wxWindow *parent,
54                 wxWindowID id,
55                 const wxPoint& pos = wxDefaultPosition,
56                 const wxSize& size = wxDefaultSize,
57                 int nStrings = 0,
58                 const wxString choices[] = (const wxString *) NULL,
59                 long style = 0,
60                 const wxValidator& validator = wxDefaultValidator,
61                 const wxString& name = wxASCII_STR(wxListBoxNameStr));
62     bool Create(wxWindow *parent,
63                 wxWindowID id,
64                 const wxPoint& pos,
65                 const wxSize& size,
66                 const wxArrayString& choices,
67                 long style = 0,
68                 const wxValidator& validator = wxDefaultValidator,
69                 const wxString& name = wxASCII_STR(wxListBoxNameStr));
70 
71     // implement check list box methods
72     virtual bool IsChecked(unsigned int item) const wxOVERRIDE;
73     virtual void Check(unsigned int item, bool check = true) wxOVERRIDE;
74 
75     // and input handling
76     virtual bool PerformAction(const wxControlAction& action,
77                                long numArg = -1l,
78                                const wxString& strArg = wxEmptyString) wxOVERRIDE;
79 
80     static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef);
DoGetStdInputHandler(wxInputHandler * handlerDef)81     virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef) wxOVERRIDE
82     {
83         return GetStdInputHandler(handlerDef);
84     }
85 
86 protected:
87     // override all methods which add/delete items to update m_checks array as
88     // well
89     virtual void OnItemInserted(unsigned int pos) wxOVERRIDE;
90     virtual void DoDeleteOneItem(unsigned int n) wxOVERRIDE;
91     virtual void DoClear() wxOVERRIDE;
92 
93     // draw the check items instead of the usual ones
94     virtual void DoDrawRange(wxControlRenderer *renderer,
95                              int itemFirst, int itemLast) wxOVERRIDE;
96 
97     // take them also into account for size calculation
98     virtual wxSize DoGetBestClientSize() const wxOVERRIDE;
99 
100     // common part of all ctors
101     void Init();
102 
103 private:
104     // the array containing the checked status of the items
105     wxArrayInt m_checks;
106 
107     wxDECLARE_DYNAMIC_CLASS(wxCheckListBox);
108 };
109 
110 #endif // _WX_UNIV_CHECKLST_H_
111