]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/univ/combobox.h
Rebake from clean wx tree.
[wxWidgets.git] / include / wx / univ / combobox.h
... / ...
CommitLineData
1///////////////////////////////////////////////////////////////////////////////
2// Name: wx/univ/combobox.h
3// Purpose: the universal combobox
4// Author: Vadim Zeitlin
5// Modified by:
6// Created: 30.08.00
7// RCS-ID: $Id$
8// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
9// Licence: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12
13#ifndef _WX_UNIV_COMBOBOX_H_
14#define _WX_UNIV_COMBOBOX_H_
15
16#include "wx/combo.h"
17
18class WXDLLIMPEXP_FWD_CORE wxListBox;
19
20// ----------------------------------------------------------------------------
21// NB: some actions supported by this control are in wx/generic/combo.h
22// ----------------------------------------------------------------------------
23
24// choose the next/prev/specified (by numArg) item
25#define wxACTION_COMBOBOX_SELECT_NEXT wxT("next")
26#define wxACTION_COMBOBOX_SELECT_PREV wxT("prev")
27#define wxACTION_COMBOBOX_SELECT wxT("select")
28
29
30// ----------------------------------------------------------------------------
31// wxComboBox: a combination of text control and a listbox
32// ----------------------------------------------------------------------------
33
34class WXDLLIMPEXP_CORE wxComboBox : public wxComboCtrl, public wxComboBoxBase
35{
36public:
37 // ctors and such
38 wxComboBox() { Init(); }
39
40 wxComboBox(wxWindow *parent,
41 wxWindowID id,
42 const wxString& value = wxEmptyString,
43 const wxPoint& pos = wxDefaultPosition,
44 const wxSize& size = wxDefaultSize,
45 int n = 0,
46 const wxString choices[] = (const wxString *) NULL,
47 long style = 0,
48 const wxValidator& validator = wxDefaultValidator,
49 const wxString& name = wxComboBoxNameStr)
50 {
51 Init();
52
53 (void)Create(parent, id, value, pos, size, n, choices,
54 style, validator, name);
55 }
56 wxComboBox(wxWindow *parent,
57 wxWindowID id,
58 const wxString& value,
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 = wxComboBoxNameStr);
65
66 bool Create(wxWindow *parent,
67 wxWindowID id,
68 const wxString& value = wxEmptyString,
69 const wxPoint& pos = wxDefaultPosition,
70 const wxSize& size = wxDefaultSize,
71 int n = 0,
72 const wxString choices[] = (const wxString *) NULL,
73 long style = 0,
74 const wxValidator& validator = wxDefaultValidator,
75 const wxString& name = wxComboBoxNameStr);
76 bool Create(wxWindow *parent,
77 wxWindowID id,
78 const wxString& value,
79 const wxPoint& pos,
80 const wxSize& size,
81 const wxArrayString& choices,
82 long style = 0,
83 const wxValidator& validator = wxDefaultValidator,
84 const wxString& name = wxComboBoxNameStr);
85
86 virtual ~wxComboBox();
87
88 // the wxUniversal-specific methods
89 // --------------------------------
90
91 // implement the combobox interface
92
93 // wxTextCtrl methods
94 virtual wxString GetValue() const { return DoGetValue(); }
95 virtual void SetValue(const wxString& value);
96 virtual void WriteText(const wxString& value);
97 virtual void Copy();
98 virtual void Cut();
99 virtual void Paste();
100 virtual void SetInsertionPoint(long pos);
101 virtual void SetInsertionPointEnd();
102 virtual long GetInsertionPoint() const;
103 virtual wxTextPos GetLastPosition() const;
104 virtual void Replace(long from, long to, const wxString& value);
105 virtual void Remove(long from, long to);
106 virtual void SetSelection(long from, long to);
107 virtual void GetSelection(long *from, long *to) const;
108 virtual void SetEditable(bool editable);
109 virtual bool IsEditable() const;
110
111 virtual void Undo();
112 virtual void Redo();
113 virtual void SelectAll();
114
115 virtual bool CanCopy() const;
116 virtual bool CanCut() const;
117 virtual bool CanPaste() const;
118 virtual bool CanUndo() const;
119 virtual bool CanRedo() const;
120
121 // wxControlWithItems methods
122 virtual void DoClear();
123 virtual void DoDeleteOneItem(unsigned int n);
124 virtual unsigned int GetCount() const;
125 virtual wxString GetString(unsigned int n) const;
126 virtual void SetString(unsigned int n, const wxString& s);
127 virtual int FindString(const wxString& s, bool bCase = false) const;
128 virtual void SetSelection(int n);
129 virtual int GetSelection() const;
130 virtual wxString GetStringSelection() const;
131
132 wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
133
134 // we have our own input handler and our own actions
135 // (but wxComboCtrl already handled Popup/Dismiss)
136 /*
137 virtual bool PerformAction(const wxControlAction& action,
138 long numArg = 0l,
139 const wxString& strArg = wxEmptyString);
140 */
141
142 static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef);
143 virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef)
144 {
145 return GetStdInputHandler(handlerDef);
146 }
147
148 // we delegate our client data handling to wxListBox which we use for the
149 // items, so override this and other methods dealing with the client data
150 virtual wxClientDataType GetClientDataType() const;
151 virtual void SetClientDataType(wxClientDataType clientDataItemsType);
152
153protected:
154 virtual wxString DoGetValue() const;
155
156 virtual int DoInsertItems(const wxArrayStringsAdapter& items,
157 unsigned int pos,
158 void **clientData, wxClientDataType type);
159
160 virtual void DoSetItemClientData(unsigned int n, void* clientData);
161 virtual void* DoGetItemClientData(unsigned int n) const;
162
163
164 // common part of all ctors
165 void Init();
166
167 // get the associated listbox
168 wxListBox *GetLBox() const { return m_lbox; }
169
170private:
171 // implement wxTextEntry pure virtual method
172 virtual wxWindow *GetEditableWindow() { return this; }
173
174 // the popup listbox
175 wxListBox *m_lbox;
176
177 //DECLARE_EVENT_TABLE()
178 DECLARE_DYNAMIC_CLASS(wxComboBox)
179};
180
181#endif // _WX_UNIV_COMBOBOX_H_