1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/mac/carbon/listbox.h
3// Purpose:     wxListBox class
4// Author:      Stefan Csomor
5// Modified by:
6// Created:     1998-01-01
7// RCS-ID:      $Id: listbox.h 41257 2006-09-17 01:20:08Z KO $
8// Copyright:   (c) Stefan Csomor
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_LISTBOX_H_
13#define _WX_LISTBOX_H_
14
15// ----------------------------------------------------------------------------
16// simple types
17// ----------------------------------------------------------------------------
18#include  "wx/dynarray.h"
19#include  "wx/arrstr.h"
20
21// forward decl for GetSelections()
22class wxArrayInt;
23
24// forward decl for wxMacListControl data type.
25class wxMacListControl;
26
27// List box item
28
29WX_DEFINE_ARRAY( char* , wxListDataArray );
30
31// ----------------------------------------------------------------------------
32// List box control
33// ----------------------------------------------------------------------------
34
35class WXDLLEXPORT wxListBox : public wxListBoxBase
36{
37public:
38    // ctors and such
39    wxListBox();
40
41    wxListBox(
42        wxWindow *parent,
43        wxWindowID winid,
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    {
51        Create(parent, winid, pos, size, n, choices, style, validator, name);
52    }
53
54    wxListBox(
55        wxWindow *parent,
56        wxWindowID winid,
57        const wxPoint& pos,
58        const wxSize& size,
59        const wxArrayString& choices,
60        long style = 0,
61        const wxValidator& validator = wxDefaultValidator,
62        const wxString& name = wxListBoxNameStr)
63    {
64        Create(parent, winid, pos, size, choices, style, validator, name);
65    }
66
67    bool Create(
68        wxWindow *parent,
69        wxWindowID winid,
70        const wxPoint& pos = wxDefaultPosition,
71        const wxSize& size = wxDefaultSize,
72        int n = 0,
73        const wxString choices[] = NULL,
74        long style = 0,
75        const wxValidator& validator = wxDefaultValidator,
76        const wxString& name = wxListBoxNameStr);
77
78    bool Create(
79        wxWindow *parent,
80        wxWindowID winid,
81        const wxPoint& pos,
82        const wxSize& size,
83        const wxArrayString& choices,
84        long style = 0,
85        const wxValidator& validator = wxDefaultValidator,
86        const wxString& name = wxListBoxNameStr);
87
88    virtual ~wxListBox();
89
90    // implement base class pure virtuals
91    virtual void Refresh(bool eraseBack = true, const wxRect *rect = NULL);
92    virtual void Clear();
93    virtual void Delete(unsigned int n);
94
95    virtual unsigned int GetCount() const;
96    virtual wxString GetString(unsigned int n) const;
97    virtual void SetString(unsigned int n, const wxString& s);
98    virtual int FindString(const wxString& s, bool bCase = false) const;
99
100    virtual bool IsSelected(int n) const;
101    virtual int GetSelection() const;
102    virtual int GetSelections(wxArrayInt& aSelections) const;
103
104    virtual void EnsureVisible(int n);
105
106    // wxCheckListBox support
107    static wxVisualAttributes
108    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
109
110    wxMacListControl* GetPeer() const;
111
112protected:
113    // from wxItemContainer
114    virtual int DoAppend(const wxString& item);
115    virtual void DoSetItemClientData(unsigned int n, void* clientData);
116    virtual void* DoGetItemClientData(unsigned int n) const;
117    virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData);
118    virtual wxClientData* DoGetItemClientObject(unsigned int n) const;
119
120    // from wxListBoxBase
121    virtual void DoSetSelection(int n, bool select);
122    virtual void DoInsertItems(const wxArrayString& items, unsigned int pos);
123    virtual void DoSetItems(const wxArrayString& items, void **clientData);
124    virtual void DoSetFirstItem(int n);
125    virtual int DoListHitTest(const wxPoint& point) const;
126
127    // free memory (common part of Clear() and dtor)
128    // prevent collision with some BSD definitions of macro Free()
129    void FreeData();
130
131    virtual wxSize DoGetBestSize() const;
132
133private:
134    DECLARE_DYNAMIC_CLASS(wxListBox)
135    DECLARE_EVENT_TABLE()
136};
137
138#endif // _WX_LISTBOX_H_
139