1///////////////////////////////////////////////////////////////////////////////
2// Name:        wx/palmos/checklst.h
3// Purpose:     wxCheckListBox class - a listbox with checkable items
4// Author:      William Osborne - minimal working wxPalmOS port
5// Modified by:
6// Created:     10/13/04
7// RCS-ID:      $Id: checklst.h 38319 2006-03-23 22:05:23Z VZ $
8// Copyright:   (c) William Osborne
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
19class WXDLLEXPORT wxOwnerDrawn;
20class WXDLLEXPORT wxCheckListBoxItem; // fwd decl, defined in checklst.cpp
21
22class WXDLLEXPORT wxCheckListBox : public wxCheckListBoxBase
23{
24public:
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
68  int HitTest(const wxPoint& pt) const { return DoHitTestItem(pt.x, pt.y); }
69  int HitTest(wxCoord x, wxCoord y) const { return DoHitTestItem(x, y); }
70
71  // accessors
72  size_t GetItemHeight() const { return m_nItemHeight; }
73
74protected:
75  // we create our items ourselves and they have non-standard size,
76  // so we need to override these functions
77  virtual wxOwnerDrawn *CreateLboxItem(size_t n);
78  virtual bool          MSWOnMeasure(WXMEASUREITEMSTRUCT *item);
79
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
87private:
88  size_t m_nItemHeight;  // height of checklistbox items (the same for all)
89
90  DECLARE_EVENT_TABLE()
91  DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckListBox)
92};
93
94#endif    //_CHECKLST_H
95