1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/motif/listbox.h
3// Purpose:     wxListBox class
4// Author:      Julian Smart
5// Modified by:
6// Created:     17/09/98
7// RCS-ID:      $Id: listbox.h 41020 2006-09-05 20:47:48Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_LISTBOX_H_
13#define _WX_LISTBOX_H_
14
15#include "wx/ctrlsub.h"
16#include "wx/clntdata.h"
17
18// forward decl for GetSelections()
19class WXDLLEXPORT wxArrayInt;
20
21// List box item
22class WXDLLEXPORT wxListBox: public wxListBoxBase
23{
24    DECLARE_DYNAMIC_CLASS(wxListBox)
25
26public:
27    wxListBox();
28    wxListBox(wxWindow *parent, wxWindowID id,
29        const wxPoint& pos = wxDefaultPosition,
30        const wxSize& size = wxDefaultSize,
31        int n = 0, const wxString choices[] = NULL,
32        long style = 0,
33        const wxValidator& validator = wxDefaultValidator,
34        const wxString& name = wxListBoxNameStr)
35    {
36        Create(parent, id, pos, size, n, choices, style, validator, name);
37    }
38
39    wxListBox(wxWindow *parent, wxWindowID id,
40        const wxPoint& pos,
41        const wxSize& size,
42        const wxArrayString& choices,
43        long style = 0,
44        const wxValidator& validator = wxDefaultValidator,
45        const wxString& name = wxListBoxNameStr)
46    {
47        Create(parent, id, pos, size, choices, style, validator, name);
48    }
49
50    bool Create(wxWindow *parent, wxWindowID id,
51        const wxPoint& pos = wxDefaultPosition,
52        const wxSize& size = wxDefaultSize,
53        int n = 0, const wxString choices[] = NULL,
54        long style = 0,
55        const wxValidator& validator = wxDefaultValidator,
56        const wxString& name = wxListBoxNameStr);
57
58    bool Create(wxWindow *parent, wxWindowID id,
59        const wxPoint& pos,
60        const wxSize& size,
61        const wxArrayString& choices,
62        long style = 0,
63        const wxValidator& validator = wxDefaultValidator,
64        const wxString& name = wxListBoxNameStr);
65
66    virtual ~wxListBox();
67
68    // implementation of wxControlWithItems
69    virtual unsigned int GetCount() const;
70    virtual int DoAppend(const wxString& item);
71    virtual void DoSetItemClientData(unsigned int n, void* clientData);
72    virtual void* DoGetItemClientData(unsigned int n) const;
73    virtual void DoSetItemClientObject(unsigned int n, wxClientData* clientData);
74    virtual wxClientData* DoGetItemClientObject(unsigned int n) const;
75    virtual int GetSelection() const;
76    virtual void Delete(unsigned int n);
77    virtual int FindString(const wxString& s, bool bCase = false) const;
78    virtual void Clear();
79    virtual void SetString(unsigned int n, const wxString& s);
80    virtual wxString GetString(unsigned int n) const;
81
82    // implementation of wxListBoxbase
83    virtual void DoSetSelection(int n, bool select);
84    virtual void DoInsertItems(const wxArrayString& items, unsigned int pos);
85    virtual void DoSetItems(const wxArrayString& items, void **clientData);
86    virtual void DoSetFirstItem(int n);
87    virtual int GetSelections(wxArrayInt& aSelections) const;
88    virtual bool IsSelected(int n) const;
89
90    // For single or multiple choice list item
91    void Command(wxCommandEvent& event);
92
93    // Implementation
94    virtual void ChangeBackgroundColour();
95    virtual void ChangeForegroundColour();
96    WXWidget GetTopWidget() const;
97
98#if wxUSE_CHECKLISTBOX
99    virtual void DoToggleItem(int WXUNUSED(item), int WXUNUSED(x)) {};
100#endif
101protected:
102    virtual wxSize DoGetBestSize() const;
103
104    unsigned int m_noItems;
105
106    // List mapping positions->client data
107    wxClientDataDictionary m_clientDataDict;
108private:
109    void SetSelectionPolicy();
110};
111
112#endif
113// _WX_LISTBOX_H_
114