]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_control.i
Various updates
[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
6aaca5ba
RD
70 DocDeclStr(
71 int , GetAlignment() const,
72 "Get the control alignment (left/right/centre, top/bottom/centre)", "");
73
74
3f847dc2
RD
75// DocDeclStr(
76// static wxString , GetLabelText(const wxString& label),
77// "Get the string without mnemonic characters ('&')", "");
6aaca5ba
RD
78
79
80 DocDeclStr(
81 wxString , GetLabelText() const,
82 "Get just the text of the label, without mnemonic characters ('&')", "");
83
84
85
861d4832
RD
86 DocDeclStr(
87 void , Command(wxCommandEvent& event),
d07d2bc9
RD
88 "Simulates the effect of the user issuing a command to the item.
89
90:see: `wx.CommandEvent`
91", "");
861d4832
RD
92
93 DocDeclStr(
94 wxString , GetLabel(),
d07d2bc9 95 "Return a control's text.", "");
861d4832
RD
96
97 DocDeclStr(
98 void , SetLabel(const wxString& label),
d07d2bc9 99 "Sets the item's text.", "");
174051f6 100
fe161a26 101
d8d39b51
RD
102// DocDeclStr(
103// bool , GetAdjustMinSizeFlag(),
104// "Returns whether the minsize should be adjusted for this control when
105// `SetLabel` or `SetFont` are called.", "");
fe161a26 106
d8d39b51
RD
107// DocDeclStr(
108// void , SetAdjustMinSizeFlag(bool adjust),
109// "By default controls will readjust their size and minsize when
110// `SetLabel` or `SetFont` are called. This flag will allow you to
111// control this behavior.", "
112
113// :see: `GetAdjustMinSizeFlag`
114// ");
174051f6
RD
115
116 static wxVisualAttributes
117 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
d14a1e28
RD
118};
119
120
121//---------------------------------------------------------------------------
122%newgroup;
123
124
6f259188
RD
125
126
861d4832 127DocStr(wxItemContainer,
6f259188
RD
128"The wx.ItemContainer class defines an interface which is implemented
129by all controls which have string subitems, each of which may be
130selected, such as `wx.ListBox`, `wx.CheckListBox`, `wx.Choice` as well
131as `wx.ComboBox` which implements an extended interface deriving from
d07d2bc9 132this one.
861d4832 133
d07d2bc9
RD
134It defines the methods for accessing the control's items and although
135each of the derived classes implements them differently, they still
136all conform to the same interface.
861d4832 137
d07d2bc9
RD
138The items in a wx.ItemContainer have (non empty) string labels and,
139optionally, client data associated with them.
140", "");
861d4832 141
d14a1e28
RD
142class wxItemContainer
143{
144public:
b870f2e6 145 // wxItemContainer() ** It's an ABC
861d4832 146
d14a1e28 147
d14a1e28 148 %extend {
861d4832 149 DocStr(Append,
d07d2bc9
RD
150 "Adds the item to the control, associating the given data with the item
151if not None. The return value is the index of the newly added item
152which may be different from the last one if the control is sorted (e.g.
153has wx.LB_SORT or wx.CB_SORT style).", "");
d14a1e28
RD
154 int Append(const wxString& item, PyObject* clientData=NULL) {
155 if (clientData) {
156 wxPyClientData* data = new wxPyClientData(clientData);
157 return self->Append(item, data);
158 } else
159 return self->Append(item);
160 }
161 }
162
d20c6820 163 DocDeclAStrName(
861d4832 164 void , Append(const wxArrayString& strings),
8423f117 165 "AppendItems(self, List strings)",
d07d2bc9
RD
166 "Apend several items at once to the control. Notice that calling this
167method may be much faster than appending the items one by one if you
168need to add a lot of items.", "",
861d4832 169 AppendItems);
d14a1e28 170
861d4832 171
d14a1e28 172 %extend {
861d4832 173 DocStr(Insert,
d07d2bc9
RD
174 "Insert an item into the control before the item at the ``pos`` index,
175optionally associating some data object with the item.", "");
3f5ec806 176 int Insert(const wxString& item, unsigned int pos, PyObject* clientData=NULL) {
d14a1e28
RD
177 if (clientData) {
178 wxPyClientData* data = new wxPyClientData(clientData);
179 return self->Insert(item, pos, data);
180 } else
181 return self->Insert(item, pos);
182 }
183 }
184
185
861d4832
RD
186 DocDeclStr(
187 virtual void , Clear(),
d07d2bc9 188 "Removes all items from the control.", "");
861d4832
RD
189
190 DocDeclStr(
3f5ec806 191 virtual void , Delete(unsigned int n),
d07d2bc9
RD
192 "Deletes the item at the zero-based index 'n' from the control. Note
193that it is an error (signalled by a `wx.PyAssertionError` exception if
194enabled) to remove an item with the index negative or greater or equal
195than the number of items in the control.", "");
861d4832 196
d14a1e28
RD
197
198
6f259188
RD
199
200 %extend {
201 DocStr(GetClientData,
202 "Returns the client data associated with the given item, (if any.)", "");
3f5ec806 203 PyObject* GetClientData(unsigned int n) {
6f259188
RD
204 wxPyClientData* data = (wxPyClientData*)self->GetClientObject(n);
205 if (data) {
206 Py_INCREF(data->m_obj);
207 return data->m_obj;
208 } else {
209 Py_INCREF(Py_None);
210 return Py_None;
211 }
212 }
213
214 DocStr(SetClientData,
215 "Associate the given client data with the item at position n.", "");
3f5ec806 216 void SetClientData(unsigned int n, PyObject* clientData) {
6f259188
RD
217 wxPyClientData* data = new wxPyClientData(clientData);
218 self->SetClientObject(n, data);
219 }
220 }
221
222
223
861d4832 224 DocDeclStr(
3f5ec806 225 virtual unsigned int , GetCount() const,
d07d2bc9 226 "Returns the number of items in the control.", "");
861d4832
RD
227
228 DocDeclStr(
229 bool , IsEmpty() const,
d07d2bc9 230 "Returns True if the control is empty or False if it has some items.", "");
861d4832
RD
231
232 DocDeclStr(
3f5ec806 233 virtual wxString , GetString(unsigned int n) const,
d07d2bc9 234 "Returns the label of the item with the given index.", "");
861d4832
RD
235
236 DocDeclStr(
237 wxArrayString , GetStrings() const,
d07d2bc9 238 "", "");
861d4832
RD
239
240 DocDeclStr(
3f5ec806 241 virtual void , SetString(unsigned int n, const wxString& s),
d07d2bc9 242 "Sets the label for the given item.", "");
861d4832
RD
243
244 DocDeclStr(
245 virtual int , FindString(const wxString& s) const,
d07d2bc9
RD
246 "Finds an item whose label matches the given string. Returns the
247zero-based position of the item, or ``wx.NOT_FOUND`` if the string was not
248found.", "");
861d4832 249
d14a1e28 250
861d4832 251 DocDeclStr(
6f259188 252 virtual void , SetSelection(int n),
d07d2bc9 253 "Sets the item at index 'n' to be the selected item.", "");
861d4832
RD
254
255 DocDeclStr(
256 virtual int , GetSelection() const,
d07d2bc9
RD
257 "Returns the index of the selected item or ``wx.NOT_FOUND`` if no item
258is selected.", "");
861d4832
RD
259
260
6f259188
RD
261 bool SetStringSelection(const wxString& s);
262
861d4832
RD
263 DocDeclStr(
264 wxString , GetStringSelection() const,
d07d2bc9
RD
265 "Returns the label of the selected item or an empty string if no item
266is selected.", "");
861d4832 267
d14a1e28 268
6f259188
RD
269 DocDeclStr(
270 void , Select(int n),
271 "This is the same as `SetSelection` and exists only because it is
272slightly more natural for controls which support multiple selection.", "");
273
d14a1e28 274
6f259188 275
d14a1e28
RD
276};
277
278
279//---------------------------------------------------------------------------
280%newgroup;
281
861d4832 282DocStr(wxControlWithItems,
d07d2bc9
RD
283"wx.ControlWithItems combines the ``wx.ItemContainer`` class with the
284wx.Control class, and is used for the base class of various controls
285that have items.", "");
861d4832 286
d14a1e28
RD
287class wxControlWithItems : public wxControl, public wxItemContainer
288{
289public:
290};
291
292//---------------------------------------------------------------------------
293