]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_control.i
use wx.CallAfter to set the insertion point
[wxWidgets.git] / wxPython / src / _control.i
CommitLineData
d14a1e28
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: _control.i
3// Purpose: SWIG interface defs for wxControl and other base classes
4//
5// Author: Robin Dunn
6//
7// Created: 10-June-1998
8// RCS-ID: $Id$
9// Copyright: (c) 2003 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13// Not a %module
14
15
16//---------------------------------------------------------------------------
17
b2dc1044 18MAKE_CONST_WXSTRING(ControlNameStr);
d14a1e28
RD
19
20//---------------------------------------------------------------------------
21%newgroup;
22
23
861d4832
RD
24DocStr(wxControl,
25"This is the base class for a control or 'widget'.
26
d07d2bc9
RD
27A control is generally a small window which processes user input
28and/or displays one or more item of data.", "");
861d4832 29
ab1f7d2a
RD
30MustHaveApp(wxControl);
31
d14a1e28
RD
32class wxControl : public wxWindow
33{
34public:
2b9048c5
RD
35 %pythonAppend wxControl "self._setOORInfo(self)"
36 %pythonAppend wxControl() ""
b39c3fa0 37 %typemap(out) wxControl*; // turn off this typemap
d14a1e28 38
861d4832
RD
39 DocCtorStr(
40 wxControl(wxWindow *parent,
11ec0dce
RD
41 wxWindowID id=-1,
42 const wxPoint& pos=wxDefaultPosition,
43 const wxSize& size=wxDefaultSize,
44 long style=0,
45 const wxValidator& validator=wxDefaultValidator,
861d4832 46 const wxString& name=wxPyControlNameStr),
d07d2bc9
RD
47 "Create a Control. Normally you should only call this from a subclass'
48__init__ as a plain old wx.Control is not very useful.", "");
861d4832
RD
49
50 DocCtorStrName(
51 wxControl(),
d07d2bc9 52 "Precreate a Control control for 2-phase creation", "",
861d4832
RD
53 PreControl);
54
b39c3fa0
RD
55 // Turn it back on again
56 %typemap(out) wxControl* { $result = wxPyMake_wxObject($1, $owner); }
57
58
861d4832
RD
59 DocDeclStr(
60 bool , Create(wxWindow *parent,
d5573410 61 wxWindowID id=-1,
861d4832
RD
62 const wxPoint& pos=wxDefaultPosition,
63 const wxSize& size=wxDefaultSize,
64 long style=0,
65 const wxValidator& validator=wxDefaultValidator,
66 const wxString& name=wxPyControlNameStr),
d07d2bc9 67 "Do the 2nd phase and create the GUI control.", "");
861d4832 68
d14a1e28 69
861d4832
RD
70 DocDeclStr(
71 void , Command(wxCommandEvent& event),
d07d2bc9
RD
72 "Simulates the effect of the user issuing a command to the item.
73
74:see: `wx.CommandEvent`
75", "");
861d4832
RD
76
77 DocDeclStr(
78 wxString , GetLabel(),
d07d2bc9 79 "Return a control's text.", "");
861d4832
RD
80
81 DocDeclStr(
82 void , SetLabel(const wxString& label),
d07d2bc9 83 "Sets the item's text.", "");
174051f6 84
fe161a26 85
d8d39b51
RD
86// DocDeclStr(
87// bool , GetAdjustMinSizeFlag(),
88// "Returns whether the minsize should be adjusted for this control when
89// `SetLabel` or `SetFont` are called.", "");
fe161a26 90
d8d39b51
RD
91// DocDeclStr(
92// void , SetAdjustMinSizeFlag(bool adjust),
93// "By default controls will readjust their size and minsize when
94// `SetLabel` or `SetFont` are called. This flag will allow you to
95// control this behavior.", "
96
97// :see: `GetAdjustMinSizeFlag`
98// ");
174051f6
RD
99
100 static wxVisualAttributes
101 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
d14a1e28
RD
102};
103
104
105//---------------------------------------------------------------------------
106%newgroup;
107
108
6f259188
RD
109
110
861d4832 111DocStr(wxItemContainer,
6f259188
RD
112"The wx.ItemContainer class defines an interface which is implemented
113by all controls which have string subitems, each of which may be
114selected, such as `wx.ListBox`, `wx.CheckListBox`, `wx.Choice` as well
115as `wx.ComboBox` which implements an extended interface deriving from
d07d2bc9 116this one.
861d4832 117
d07d2bc9
RD
118It defines the methods for accessing the control's items and although
119each of the derived classes implements them differently, they still
120all conform to the same interface.
861d4832 121
d07d2bc9
RD
122The items in a wx.ItemContainer have (non empty) string labels and,
123optionally, client data associated with them.
124", "");
861d4832 125
d14a1e28
RD
126class wxItemContainer
127{
128public:
b870f2e6 129 // wxItemContainer() ** It's an ABC
861d4832 130
d14a1e28 131
d14a1e28 132 %extend {
861d4832 133 DocStr(Append,
d07d2bc9
RD
134 "Adds the item to the control, associating the given data with the item
135if not None. The return value is the index of the newly added item
136which may be different from the last one if the control is sorted (e.g.
137has wx.LB_SORT or wx.CB_SORT style).", "");
d14a1e28
RD
138 int Append(const wxString& item, PyObject* clientData=NULL) {
139 if (clientData) {
140 wxPyClientData* data = new wxPyClientData(clientData);
141 return self->Append(item, data);
142 } else
143 return self->Append(item);
144 }
145 }
146
d20c6820 147 DocDeclAStrName(
861d4832 148 void , Append(const wxArrayString& strings),
8423f117 149 "AppendItems(self, List strings)",
d07d2bc9
RD
150 "Apend several items at once to the control. Notice that calling this
151method may be much faster than appending the items one by one if you
152need to add a lot of items.", "",
861d4832 153 AppendItems);
d14a1e28 154
861d4832 155
d14a1e28 156 %extend {
861d4832 157 DocStr(Insert,
d07d2bc9
RD
158 "Insert an item into the control before the item at the ``pos`` index,
159optionally associating some data object with the item.", "");
d14a1e28
RD
160 int Insert(const wxString& item, int pos, PyObject* clientData=NULL) {
161 if (clientData) {
162 wxPyClientData* data = new wxPyClientData(clientData);
163 return self->Insert(item, pos, data);
164 } else
165 return self->Insert(item, pos);
166 }
167 }
168
169
861d4832
RD
170 DocDeclStr(
171 virtual void , Clear(),
d07d2bc9 172 "Removes all items from the control.", "");
861d4832
RD
173
174 DocDeclStr(
175 virtual void , Delete(int n),
d07d2bc9
RD
176 "Deletes the item at the zero-based index 'n' from the control. Note
177that it is an error (signalled by a `wx.PyAssertionError` exception if
178enabled) to remove an item with the index negative or greater or equal
179than the number of items in the control.", "");
861d4832 180
d14a1e28
RD
181
182
6f259188
RD
183
184 %extend {
185 DocStr(GetClientData,
186 "Returns the client data associated with the given item, (if any.)", "");
187 PyObject* GetClientData(int n) {
188 wxPyClientData* data = (wxPyClientData*)self->GetClientObject(n);
189 if (data) {
190 Py_INCREF(data->m_obj);
191 return data->m_obj;
192 } else {
193 Py_INCREF(Py_None);
194 return Py_None;
195 }
196 }
197
198 DocStr(SetClientData,
199 "Associate the given client data with the item at position n.", "");
200 void SetClientData(int n, PyObject* clientData) {
201 wxPyClientData* data = new wxPyClientData(clientData);
202 self->SetClientObject(n, data);
203 }
204 }
205
206
207
861d4832
RD
208 DocDeclStr(
209 virtual int , GetCount() const,
d07d2bc9 210 "Returns the number of items in the control.", "");
861d4832
RD
211
212 DocDeclStr(
213 bool , IsEmpty() const,
d07d2bc9 214 "Returns True if the control is empty or False if it has some items.", "");
861d4832
RD
215
216 DocDeclStr(
217 virtual wxString , GetString(int n) const,
d07d2bc9 218 "Returns the label of the item with the given index.", "");
861d4832
RD
219
220 DocDeclStr(
221 wxArrayString , GetStrings() const,
d07d2bc9 222 "", "");
861d4832
RD
223
224 DocDeclStr(
225 virtual void , SetString(int n, const wxString& s),
d07d2bc9 226 "Sets the label for the given item.", "");
861d4832
RD
227
228 DocDeclStr(
229 virtual int , FindString(const wxString& s) const,
d07d2bc9
RD
230 "Finds an item whose label matches the given string. Returns the
231zero-based position of the item, or ``wx.NOT_FOUND`` if the string was not
232found.", "");
861d4832 233
d14a1e28 234
861d4832 235 DocDeclStr(
6f259188 236 virtual void , SetSelection(int n),
d07d2bc9 237 "Sets the item at index 'n' to be the selected item.", "");
861d4832
RD
238
239 DocDeclStr(
240 virtual int , GetSelection() const,
d07d2bc9
RD
241 "Returns the index of the selected item or ``wx.NOT_FOUND`` if no item
242is selected.", "");
861d4832
RD
243
244
6f259188
RD
245 bool SetStringSelection(const wxString& s);
246
861d4832
RD
247 DocDeclStr(
248 wxString , GetStringSelection() const,
d07d2bc9
RD
249 "Returns the label of the selected item or an empty string if no item
250is selected.", "");
861d4832 251
d14a1e28 252
6f259188
RD
253 DocDeclStr(
254 void , Select(int n),
255 "This is the same as `SetSelection` and exists only because it is
256slightly more natural for controls which support multiple selection.", "");
257
d14a1e28 258
6f259188 259
d14a1e28
RD
260};
261
262
263//---------------------------------------------------------------------------
264%newgroup;
265
861d4832 266DocStr(wxControlWithItems,
d07d2bc9
RD
267"wx.ControlWithItems combines the ``wx.ItemContainer`` class with the
268wx.Control class, and is used for the base class of various controls
269that have items.", "");
861d4832 270
d14a1e28
RD
271class wxControlWithItems : public wxControl, public wxItemContainer
272{
273public:
274};
275
276//---------------------------------------------------------------------------
277