1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Control (widget) classes for wxPython
9 // Copyright: (c) 1998 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
17 #include <wx/slider.h>
18 #include <wx/spinbutt.h>
19 #include <wx/dynarray.h>
20 #include <wx/statline.h>
24 #include <wx/checklst.h>
29 #include <wx/checklst.h>
34 //----------------------------------------------------------------------
37 %include my_typemaps.i
39 // Import some definitions of other classes, etc.
46 %pragma(python) code = "import wx"
48 //----------------------------------------------------------------------
51 wxValidator wxPyDefaultValidator; // Non-const default because of SWIG
54 //----------------------------------------------------------------------
56 class wxControl : public wxWindow {
59 void Command(wxCommandEvent& event);
62 void SetLabel(const wxString& label);
65 //----------------------------------------------------------------------
67 class wxButton : public wxControl {
69 wxButton(wxWindow* parent, wxWindowID id, const wxString& label,
70 const wxPoint& pos = wxPyDefaultPosition,
71 const wxSize& size = wxPyDefaultSize,
73 const wxValidator& validator = wxPyDefaultValidator,
74 char* name = "button");
76 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
81 //----------------------------------------------------------------------
83 class wxBitmapButton : public wxButton {
85 wxBitmapButton(wxWindow* parent, wxWindowID id, const wxBitmap& bitmap,
86 const wxPoint& pos = wxPyDefaultPosition,
87 const wxSize& size = wxPyDefaultSize,
88 long style = wxBU_AUTODRAW,
89 const wxValidator& validator = wxPyDefaultValidator,
90 char* name = "button");
92 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
94 wxBitmap& GetBitmapLabel();
95 wxBitmap& GetBitmapDisabled();
96 wxBitmap& GetBitmapFocus();
97 wxBitmap& GetBitmapSelected();
98 void SetBitmapDisabled(const wxBitmap& bitmap);
99 void SetBitmapFocus(const wxBitmap& bitmap);
100 void SetBitmapSelected(const wxBitmap& bitmap);
101 void SetBitmapLabel(const wxBitmap& bitmap);
105 //----------------------------------------------------------------------
107 class wxCheckBox : public wxControl {
109 wxCheckBox(wxWindow* parent, wxWindowID id, const wxString& label,
110 const wxPoint& pos = wxPyDefaultPosition,
111 const wxSize& size = wxPyDefaultSize,
113 const wxValidator& val = wxPyDefaultValidator,
114 char* name = "checkBox");
116 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
119 void SetValue(const bool state);
122 //----------------------------------------------------------------------
124 class wxChoice : public wxControl {
126 wxChoice(wxWindow *parent, wxWindowID id,
127 const wxPoint& pos = wxPyDefaultPosition,
128 const wxSize& size = wxPyDefaultSize,
129 int LCOUNT=0, wxString* LIST=NULL,
131 const wxValidator& validator = wxPyDefaultValidator,
132 char* name = "choice");
134 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
136 void Append(const wxString& item);
138 int FindString(const wxString& string);
141 wxString GetString(const int n);
142 wxString GetStringSelection();
144 void SetColumns(const int n = 1);
145 void SetSelection(const int n);
146 void SetStringSelection(const wxString& string);
149 //----------------------------------------------------------------------
151 class wxComboBox : public wxChoice {
153 wxComboBox(wxWindow* parent, wxWindowID id, char* value = "",
154 const wxPoint& pos = wxPyDefaultPosition,
155 const wxSize& size = wxPyDefaultSize,
156 int LCOUNT=0, wxString* LIST=NULL,
158 const wxValidator& validator = wxPyDefaultValidator,
159 char* name = "comboBox");
161 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
163 void Append(const wxString& item);
164 // TODO: void Append(const wxString& item, char* clientData);
169 // NotMember??: void Deselect(int n);
170 int FindString(const wxString& string);
171 // TODO: char* GetClientData(const int n);
172 long GetInsertionPoint();
173 long GetLastPosition();
175 wxString GetString(int n);
176 wxString GetStringSelection();
180 void Replace(long from, long to, const wxString& text);
181 void Remove(long from, long to);
182 // TODO: void SetClientData(const int n, char* data);
183 void SetInsertionPoint(long pos);
184 void SetInsertionPointEnd();
185 void SetSelection(int n);
186 %name(SetMark)void SetSelection(long from, long to);
187 void SetValue(const wxString& text);
190 //----------------------------------------------------------------------
192 class wxGauge : public wxControl {
194 wxGauge(wxWindow* parent, wxWindowID id, int range,
195 const wxPoint& pos = wxPyDefaultPosition,
196 const wxSize& size = wxPyDefaultSize,
197 long style = wxGA_HORIZONTAL,
198 const wxValidator& validator = wxPyDefaultValidator,
199 char* name = "gauge");
201 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
205 int GetShadowWidth();
207 void SetBezelFace(int width);
208 void SetRange(int range);
209 void SetShadowWidth(int width);
210 void SetValue(int pos);
213 //----------------------------------------------------------------------
215 class wxStaticBox : public wxControl {
217 wxStaticBox(wxWindow* parent, wxWindowID id, const wxString& label,
218 const wxPoint& pos = wxPyDefaultPosition,
219 const wxSize& size = wxPyDefaultSize,
221 char* name = "staticBox");
225 //----------------------------------------------------------------------
228 class wxStaticLine : public wxControl {
230 wxStaticLine( wxWindow *parent, wxWindowID id,
231 const wxPoint &pos = wxPyDefaultPosition,
232 const wxSize &size = wxPyDefaultSize,
233 long style = wxLI_HORIZONTAL,
234 const char* name = "staticLine" );
238 //----------------------------------------------------------------------
240 class wxStaticText : public wxControl {
242 wxStaticText(wxWindow* parent, wxWindowID id, const wxString& label,
243 const wxPoint& pos = wxPyDefaultPosition,
244 const wxSize& size = wxPyDefaultSize,
246 char* name = "staticText");
248 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
251 void SetLabel(const wxString& label);
254 //----------------------------------------------------------------------
256 class wxListBox : public wxControl {
258 wxListBox(wxWindow* parent, wxWindowID id,
259 const wxPoint& pos = wxPyDefaultPosition,
260 const wxSize& size = wxPyDefaultSize,
261 int LCOUNT, wxString* LIST = NULL,
263 const wxValidator& validator = wxPyDefaultValidator,
264 char* name = "listBox");
266 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
268 void Append(const wxString& item);
269 // TODO: void Append(const wxString& item, char* clientData);
272 void Deselect(int n);
273 int FindString(const wxString& string);
274 // TODO: char* GetClientData(const int n);
277 // int GetSelections(int **selections);
279 PyObject* GetSelections() {
281 self->GetSelections(lst);
282 PyObject *tup = PyTuple_New(lst.GetCount());
283 for(int i=0; i<lst.GetCount(); i++) {
284 PyTuple_SetItem(tup, i, PyInt_FromLong(lst[i]));
290 wxString GetString(int n);
291 wxString GetStringSelection();
293 bool Selected(const int n);
294 void Set(int LCOUNT, wxString* LIST);
295 // TODO: void SetClientData(const int n, char* data);
296 void SetFirstItem(int n);
297 %name(SetFirstItemStr)void SetFirstItem(const wxString& string);
298 void SetSelection(int n, bool select = TRUE);
299 void SetString(int n, const wxString& string);
300 void SetStringSelection(const wxString& string, bool select = TRUE);
304 //----------------------------------------------------------------------
306 class wxCheckListBox : public wxListBox {
308 wxCheckListBox(wxWindow *parent, wxWindowID id,
309 const wxPoint& pos = wxPyDefaultPosition,
310 const wxSize& size = wxPyDefaultSize,
312 wxString* LIST = NULL,
314 const wxValidator& validator = wxPyDefaultValidator,
315 char* name = "listBox");
317 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
319 bool IsChecked(int uiIndex);
320 void Check(int uiIndex, bool bCheck = TRUE);
325 //----------------------------------------------------------------------
327 class wxTextCtrl : public wxControl {
329 wxTextCtrl(wxWindow* parent, wxWindowID id, char* value = "",
330 const wxPoint& pos = wxPyDefaultPosition,
331 const wxSize& size = wxPyDefaultSize,
333 const wxValidator& validator = wxPyDefaultValidator,
334 char* name = "text");
336 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
342 long GetInsertionPoint();
343 long GetLastPosition();
344 int GetLineLength(long lineNo);
345 wxString GetLineText(long lineNo);
346 int GetNumberOfLines();
349 bool LoadFile(const wxString& filename);
351 void PositionToXY(long pos, long *OUTPUT, long *OUTPUT);
352 void Remove(long from, long to);
353 void Replace(long from, long to, const wxString& value);
354 bool SaveFile(const wxString& filename);
355 void SetEditable(bool editable);
356 void SetInsertionPoint(long pos);
357 void SetInsertionPointEnd();
358 void SetSelection(long from, long to);
359 void SetValue(const wxString& value);
360 void ShowPosition(long pos);
361 void WriteText(const wxString& text);
362 void AppendText(const wxString& text);
363 long XYToPosition(long x, long y);
370 void GetSelection(long* OUTPUT, long* OUTPUT);
374 //----------------------------------------------------------------------
376 class wxScrollBar : public wxControl {
378 wxScrollBar(wxWindow* parent, wxWindowID id = -1,
379 const wxPoint& pos = wxPyDefaultPosition,
380 const wxSize& size = wxPyDefaultSize,
381 long style = wxSB_HORIZONTAL,
382 const wxValidator& validator = wxPyDefaultValidator,
383 char* name = "scrollBar");
385 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
389 int GetThumbPosition();
391 void SetThumbPosition(int viewStart);
392 void SetScrollbar(int position, int thumbSize,
393 int range, int pageSize,
394 bool refresh = TRUE);
397 //----------------------------------------------------------------------
399 class wxSpinButton : public wxControl {
401 wxSpinButton(wxWindow* parent, wxWindowID id = -1,
402 const wxPoint& pos = wxPyDefaultPosition,
403 const wxSize& size = wxPyDefaultSize,
404 long style = wxSP_HORIZONTAL,
405 char* name = "spinButton");
410 void SetRange(int min, int max);
411 void SetValue(int value);
414 //----------------------------------------------------------------------
416 class wxStaticBitmap : public wxControl {
418 wxStaticBitmap(wxWindow* parent, wxWindowID id,
419 const wxBitmap& bitmap,
420 const wxPoint& pos = wxPyDefaultPosition,
421 const wxSize& size = wxPyDefaultSize,
423 char* name = "staticBitmap");
425 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
427 const wxBitmap& GetBitmap();
428 void SetBitmap(const wxBitmap& bitmap);
429 void SetIcon(const wxIcon& icon);
432 //----------------------------------------------------------------------
434 class wxRadioBox : public wxControl {
436 wxRadioBox(wxWindow* parent, wxWindowID id,
437 const wxString& label,
438 const wxPoint& point = wxPyDefaultPosition,
439 const wxSize& size = wxPyDefaultSize,
440 int LCOUNT = 0, wxString* LIST = NULL,
441 int majorDimension = 0,
442 long style = wxRA_HORIZONTAL,
443 const wxValidator& validator = wxPyDefaultValidator,
444 char* name = "radioBox");
446 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
448 void Enable(bool enable);
449 %name(EnableItem)void Enable(int n, bool enable);
450 int FindString(const wxString& string);
452 //*** wxString GetLabel();
453 //*** void SetLabel(const wxString& label);
455 %name(GetItemLabel)wxString GetLabel(int n);
457 wxString GetString(int n);
458 wxString GetStringSelection();
460 %name(SetItemLabel)void SetLabel(int n, const wxString& label);
461 void SetSelection(int n);
462 void SetStringSelection(const wxString& string);
463 void Show(bool show);
464 %name(ShowItem)void Show(int item, bool show);
467 //----------------------------------------------------------------------
469 class wxRadioButton : public wxControl {
471 wxRadioButton(wxWindow* parent, wxWindowID id,
472 const wxString& label,
473 const wxPoint& pos = wxPyDefaultPosition,
474 const wxSize& size = wxPyDefaultSize,
476 const wxValidator& validator = wxPyDefaultValidator,
477 char* name = "radioButton");
479 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
482 void SetValue(bool value);
485 //----------------------------------------------------------------------
487 class wxSlider : public wxControl {
489 wxSlider(wxWindow* parent, wxWindowID id,
490 int value, int minValue, int maxValue,
491 const wxPoint& point = wxPyDefaultPosition,
492 const wxSize& size = wxPyDefaultSize,
493 long style = wxSL_HORIZONTAL,
494 const wxValidator& validator = wxPyDefaultValidator,
495 char* name = "slider");
497 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
507 int GetThumbLength();
510 void SetRange(int minValue, int maxValue);
511 void SetTickFreq(int n, int pos);
512 void SetLineSize(int lineSize);
513 void SetPageSize(int pageSize);
514 void SetSelection(int startPos, int endPos);
515 void SetThumbLength(int len);
516 void SetTick(int tickPos);
517 void SetValue(int value);
521 //----------------------------------------------------------------------
524 /////////////////////////////////////////////////////////////////////////////
527 // Revision 1.17 1999/08/18 07:41:28 RD
528 // Using a new version of SWIG
532 // Revision 1.16 1999/07/31 07:54:35 RD
536 // Added the missing wxWindow.GetUpdateRegion() method.
538 // Made a new change in SWIG (update your patches everybody) that
539 // provides a fix for global shadow objects that get an exception in
540 // their __del__ when their extension module has already been deleted.
541 // It was only a 1 line change in .../SWIG/Modules/pycpp.cxx at about
542 // line 496 if you want to do it by hand.
544 // It is now possible to run through MainLoop more than once in any one
545 // process. The cleanup that used to happen as MainLoop completed (and
546 // prevented it from running again) has been delayed until the wxc module
547 // is being unloaded by Python.
549 // wxWindow.PopupMenu() now takes a wxPoint instead of x,y. Added
550 // wxWindow.PopupMenuXY to be consistent with some other methods.
552 // Added wxGrid.SetEditInPlace and wxGrid.GetEditInPlace.
554 // You can now provide your own app.MainLoop method. See
555 // wxPython/demo/demoMainLoop.py for an example and some explaination.
557 // Got the in-place-edit for the wxTreeCtrl fixed and added some demo
558 // code to show how to use it.
560 // Put the wxIcon constructor back in for GTK as it now has one that
563 // Added wxGrid.GetCells
565 // Added wxSystemSettings static methods as functions with names like
566 // wxSystemSettings_GetSystemColour.
568 // Removed wxPyMenu since using menu callbacks have been depreciated in
569 // wxWindows. Use wxMenu and events instead.
571 // Added alternate wxBitmap constructor (for MSW only) as
572 // wxBitmapFromData(data, type, width, height, depth = 1)
574 // Added a helper function named wxPyTypeCast that can convert shadow
575 // objects of one type into shadow objects of another type. (Like doing
576 // a down-cast.) See the implementation in wx.py for some docs.
578 // Revision 1.15 1999/06/22 17:45:18 RD
580 // wxPython 2.1b1: Very minor changes needed for wxGTK
582 // Revision 1.14 1999/06/22 07:03:02 RD
584 // wxPython 2.1b1 for wxMSW (wxGTK coming soon)
585 // Lots of changes, see the README.txt for details...
587 // Revision 1.13 1999/04/30 21:13:43 RD
589 // wxPython 2.0b9, first phase (win32)
590 // Added gobs of stuff, see wxPython/README.txt for details
592 // Revision 1.12 1999/04/30 03:29:18 RD
594 // wxPython 2.0b9, first phase (win32)
595 // Added gobs of stuff, see wxPython/README.txt for details
597 // Revision 1.11.4.1 1999/03/27 23:29:14 RD
600 // Python thread support
601 // various minor additions
602 // various minor fixes
604 // Revision 1.11 1999/02/25 07:08:30 RD
606 // wxPython version 2.0b5
608 // Revision 1.10 1998/12/17 17:52:19 RD
611 // Minor fixes and SWIG code generation for RR's changes. MSW and GTK
612 // versions are much closer now!
614 // Revision 1.9 1998/12/17 14:07:29 RR
616 // Removed minor differences between wxMSW and wxGTK
618 // Revision 1.8 1998/12/15 20:41:15 RD
619 // Changed the import semantics from "from wxPython import *" to "from
620 // wxPython.wx import *" This is for people who are worried about
621 // namespace pollution, they can use "from wxPython import wx" and then
622 // prefix all the wxPython identifiers with "wx."
624 // Added wxTaskbarIcon for wxMSW.
626 // Made the events work for wxGrid.
630 // Added wxMiniFrame for wxGTK, (untested.)
632 // Changed many of the args and return values that were pointers to gdi
633 // objects to references to reflect changes in the wxWindows API.
635 // Other assorted fixes and additions.
637 // Revision 1.7 1998/11/16 00:00:53 RD
638 // Generic treectrl for wxPython/GTK compiles...
640 // Revision 1.6 1998/11/15 23:03:43 RD
641 // Removing some ifdef's for wxGTK
643 // Revision 1.5 1998/10/07 07:34:32 RD
644 // Version 0.4.1 for wxGTK
646 // Revision 1.4 1998/10/02 06:40:35 RD
648 // Version 0.4 of wxPython for MSW.
650 // Revision 1.3 1998/08/18 19:48:14 RD
651 // more wxGTK compatibility things.
653 // It builds now but there are serious runtime problems...
655 // Revision 1.2 1998/08/15 07:36:28 RD
656 // - Moved the header in the .i files out of the code that gets put into
657 // the .cpp files. It caused CVS conflicts because of the RCS ID being
658 // different each time.
660 // - A few minor fixes.
662 // Revision 1.1 1998/08/09 08:25:49 RD