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