1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/cocoa/choice.h
3// Purpose:     wxChoice class
4// Author:      David Elliott
5// Modified by:
6// Created:     2003/03/16
7// RCS-ID:      $Id: choice.h 38319 2006-03-23 22:05:23Z VZ $
8// Copyright:   (c) 2003 David Elliott
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __WX_COCOA_CHOICE_H__
13#define __WX_COCOA_CHOICE_H__
14
15//#include "wx/cocoa/NSPopUpButton.h"
16#include "wx/cocoa/NSMenu.h"
17
18class WXDLLIMPEXP_BASE wxSortedArrayString;
19
20// ========================================================================
21// wxChoice
22// ========================================================================
23class WXDLLEXPORT wxChoice: public wxChoiceBase /*, protected wxCocoaNSPopUpButton */, protected wxCocoaNSMenu
24{
25    DECLARE_DYNAMIC_CLASS(wxChoice)
26    DECLARE_EVENT_TABLE()
27//    WX_DECLARE_COCOA_OWNER(NSTableView,NSControl,NSView)
28// ------------------------------------------------------------------------
29// initialization
30// ------------------------------------------------------------------------
31public:
32    wxChoice() { Init(); }
33    wxChoice(wxWindow *parent, wxWindowID winid,
34            const wxPoint& pos = wxDefaultPosition,
35            const wxSize& size = wxDefaultSize,
36            int n = 0, const wxString choices[] = NULL,
37            long style = 0,
38            const wxValidator& validator = wxDefaultValidator,
39            const wxString& name = wxChoiceNameStr)
40    {
41        Init();
42        Create(parent, winid,  pos, size, n, choices, style, validator, name);
43    }
44    wxChoice(wxWindow *parent, wxWindowID winid,
45            const wxPoint& pos,
46            const wxSize& size,
47            const wxArrayString& choices,
48            long style = 0,
49            const wxValidator& validator = wxDefaultValidator,
50            const wxString& name = wxChoiceNameStr)
51    {
52        Init();
53        Create(parent, winid,  pos, size, choices, style, validator, name);
54    }
55
56    bool Create(wxWindow *parent, wxWindowID winid,
57            const wxPoint& pos = wxDefaultPosition,
58            const wxSize& size = wxDefaultSize,
59            int n = 0, const wxString choices[] = NULL,
60            long style = 0,
61            const wxValidator& validator = wxDefaultValidator,
62            const wxString& name = wxChoiceNameStr);
63    bool Create(wxWindow *parent, wxWindowID winid,
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 = wxChoiceNameStr);
70    virtual ~wxChoice();
71protected:
72    void Init();
73
74// ------------------------------------------------------------------------
75// Cocoa callbacks
76// ------------------------------------------------------------------------
77protected:
78    void CocoaNotification_menuDidSendAction(WX_NSNotification notification);
79// ------------------------------------------------------------------------
80// Implementation
81// ------------------------------------------------------------------------
82public:
83    virtual void Clear();
84    virtual void Delete(unsigned int n);
85    virtual unsigned int GetCount() const;
86    virtual wxString GetString(unsigned int) const;
87    virtual void SetString(unsigned int pos, const wxString&);
88    virtual int FindString(const wxString& s, bool bCase = false) const;
89    virtual int GetSelection() const;
90    virtual int DoAppend(const wxString&);
91    virtual int DoInsert(const wxString&, unsigned int pos);
92    virtual void DoSetItemClientData(unsigned int, void*);
93    virtual void* DoGetItemClientData(unsigned int) const;
94    virtual void DoSetItemClientObject(unsigned int, wxClientData*);
95    virtual wxClientData* DoGetItemClientObject(unsigned int) const;
96    virtual void SetSelection(int pos);
97protected:
98    wxSortedArrayString *m_sortedStrings;
99    wxArrayPtrVoid m_itemsClientData;
100};
101
102#endif // __WX_COCOA_CHOICE_H__
103