1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/msw/checklst.h
3 // Purpose:     wxCheckListBox class - a listbox with checkable items
4 // Author:      Vadim Zeitlin
5 // Modified by:
6 // Created:     16.11.97
7 // RCS-ID:      $Id: checklst.h 49563 2007-10-31 20:46:21Z VZ $
8 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
9 // Licence:     wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef   __CHECKLST__H_
13 #define   __CHECKLST__H_
14 
15 #if !wxUSE_OWNER_DRAWN
16   #error  "wxCheckListBox class requires owner-drawn functionality."
17 #endif
18 
19 class WXDLLIMPEXP_FWD_CORE wxOwnerDrawn;
20 class WXDLLIMPEXP_FWD_CORE wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
21 
22 class WXDLLEXPORT wxCheckListBox : public wxCheckListBoxBase
23 {
24 public:
25   // ctors
26   wxCheckListBox();
27   wxCheckListBox(wxWindow *parent, wxWindowID id,
28                  const wxPoint& pos = wxDefaultPosition,
29                  const wxSize& size = wxDefaultSize,
30                  int nStrings = 0,
31                  const wxString choices[] = NULL,
32                  long style = 0,
33                  const wxValidator& validator = wxDefaultValidator,
34                  const wxString& name = wxListBoxNameStr);
35   wxCheckListBox(wxWindow *parent, wxWindowID id,
36                  const wxPoint& pos,
37                  const wxSize& size,
38                  const wxArrayString& choices,
39                  long style = 0,
40                  const wxValidator& validator = wxDefaultValidator,
41                  const wxString& name = wxListBoxNameStr);
42 
43   bool Create(wxWindow *parent, wxWindowID id,
44                 const wxPoint& pos = wxDefaultPosition,
45                 const wxSize& size = wxDefaultSize,
46                 int n = 0, const wxString choices[] = NULL,
47                 long style = 0,
48                 const wxValidator& validator = wxDefaultValidator,
49                 const wxString& name = wxListBoxNameStr);
50   bool Create(wxWindow *parent, wxWindowID id,
51                 const wxPoint& pos,
52                 const wxSize& size,
53                 const wxArrayString& choices,
54                 long style = 0,
55                 const wxValidator& validator = wxDefaultValidator,
56                 const wxString& name = wxListBoxNameStr);
57 
58   // override base class virtuals
59   virtual void Delete(unsigned int n);
60 
61   virtual bool SetFont( const wxFont &font );
62 
63   // items may be checked
64   virtual bool IsChecked(unsigned int uiIndex) const;
65   virtual void Check(unsigned int uiIndex, bool bCheck = true);
66 
67   // return the index of the item at this position or wxNOT_FOUND
HitTest(const wxPoint & pt)68   int HitTest(const wxPoint& pt) const { return DoHitTestItem(pt.x, pt.y); }
HitTest(wxCoord x,wxCoord y)69   int HitTest(wxCoord x, wxCoord y) const { return DoHitTestItem(x, y); }
70 
71   // accessors
GetItemHeight()72   size_t GetItemHeight() const { return m_nItemHeight; }
73 
74   // we create our items ourselves and they have non-standard size,
75   // so we need to override these functions
76   virtual wxOwnerDrawn *CreateLboxItem(size_t n);
77   virtual bool          MSWOnMeasure(WXMEASUREITEMSTRUCT *item);
78 
79 protected:
80   // this can't be called DoHitTest() because wxWindow already has this method
81   int DoHitTestItem(wxCoord x, wxCoord y) const;
82 
83   // pressing space or clicking the check box toggles the item
84   void OnKeyDown(wxKeyEvent& event);
85   void OnLeftClick(wxMouseEvent& event);
86 
87   wxSize DoGetBestSize() const;
88 
89 private:
90   size_t    m_nItemHeight;  // height of checklistbox items (the same for all)
91 
92   DECLARE_EVENT_TABLE()
93   DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckListBox)
94 };
95 
96 #endif    //_CHECKLST_H
97