]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_listbox.i
Only Freeze/Thaw on wxMSW. The other ports don't need it.
[wxWidgets.git] / wxPython / src / _listbox.i
CommitLineData
d14a1e28
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: _listbox.i
3// Purpose: SWIG interface defs for wxListBox and wxCheckListBox
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
18%{
19#include <wx/checklst.h>
20
d14a1e28
RD
21%}
22
b2dc1044
RD
23MAKE_CONST_WXSTRING(ListBoxNameStr);
24
25
d14a1e28
RD
26//---------------------------------------------------------------------------
27%newgroup
28
ab1f7d2a
RD
29MustHaveApp(wxListBox);
30
d14a1e28
RD
31class wxListBox : public wxControlWithItems
32{
33public:
2b9048c5
RD
34 %pythonAppend wxListBox "self._setOORInfo(self)"
35 %pythonAppend wxListBox() ""
d14a1e28 36
d5573410 37 wxListBox(wxWindow* parent, wxWindowID id=-1,
d14a1e28
RD
38 const wxPoint& pos = wxDefaultPosition,
39 const wxSize& size = wxDefaultSize,
699e192b 40 const wxArrayString& choices = wxPyEmptyStringArray,
d14a1e28
RD
41 long style = 0,
42 const wxValidator& validator = wxDefaultValidator,
43 const wxString& name = wxPyListBoxNameStr);
1b8c7ba6 44 %RenameCtor(PreListBox, wxListBox());
d14a1e28 45
d5573410 46 bool Create(wxWindow* parent, wxWindowID id=-1,
699e192b
RD
47 const wxPoint& pos = wxDefaultPosition,
48 const wxSize& size = wxDefaultSize,
699e192b
RD
49 const wxArrayString& choices = wxPyEmptyStringArray,
50 long style = 0,
51 const wxValidator& validator = wxDefaultValidator,
52 const wxString& name = wxPyListBoxNameStr);
d14a1e28
RD
53
54 // all generic methods are in wxControlWithItems...
55
56 %extend {
57 void Insert(const wxString& item, int pos, PyObject* clientData=NULL) {
58 if (clientData) {
59 wxPyClientData* data = new wxPyClientData(clientData);
60 self->Insert(item, pos, data);
61 } else
62 self->Insert(item, pos);
63 }
64 }
65
66 void InsertItems(const wxArrayString& items, int pos);
67 void Set(const wxArrayString& items/*, void **clientData = NULL */);
68
69 // multiple selection logic
70 virtual bool IsSelected(int n) const;
a72f4631 71 virtual void SetSelection(int n, bool select = true);
d14a1e28
RD
72 virtual void Select(int n);
73 void Deselect(int n);
74 void DeselectAll(int itemToLeaveSelected = -1);
75
a72f4631 76 virtual bool SetStringSelection(const wxString& s, bool select = true);
d14a1e28
RD
77
78 // works for single as well as multiple selection listboxes (unlike
79 // GetSelection which only works for listboxes with single selection)
80 //virtual int GetSelections(wxArrayInt& aSelections) const;
81 %extend {
82 PyObject* GetSelections() {
83 wxArrayInt lst;
84 self->GetSelections(lst);
85 PyObject *tup = PyTuple_New(lst.GetCount());
86 for(size_t i=0; i<lst.GetCount(); i++) {
87 PyTuple_SetItem(tup, i, PyInt_FromLong(lst[i]));
88 }
89 return tup;
90 }
91 }
92
93 // set the specified item at the first visible item or scroll to max
94 // range.
95 void SetFirstItem(int n);
1b8c7ba6 96 %Rename(SetFirstItemStr, void, SetFirstItem(const wxString& s));
d14a1e28
RD
97
98 // ensures that the given item is visible scrolling the listbox if
99 // necessary
100 virtual void EnsureVisible(int n);
101
102 // a combination of Append() and EnsureVisible(): appends the item to the
103 // listbox and ensures that it is visible i.e. not scrolled out of view
104 void AppendAndEnsureVisible(const wxString& s);
105
dd9f7fea 106 // return True if this listbox is sorted
d14a1e28 107 bool IsSorted() const;
8492b560
RD
108
109
110 %extend {
111 void SetItemForegroundColour(int item, const wxColour& c) {
112 %#ifdef __WXMSW__
113 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
114 self->GetItem(item)->SetTextColour(c);
115 %#endif
116 }
117 void SetItemBackgroundColour(int item, const wxColour& c) {
118 %#ifdef __WXMSW__
119 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
120 self->GetItem(item)->SetBackgroundColour(c);
121 %#endif
122 }
123 void SetItemFont(int item, const wxFont& f) {
124 %#ifdef __WXMSW__
125 if (self->GetWindowStyle() & wxLB_OWNERDRAW)
126 self->GetItem(item)->SetFont(f);
127 %#endif
128 }
129 }
174051f6
RD
130
131 static wxVisualAttributes
132 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
d14a1e28
RD
133};
134
135
136//---------------------------------------------------------------------------
137%newgroup
138
139
ab1f7d2a
RD
140MustHaveApp(wxCheckListBox);
141
d14a1e28
RD
142// wxCheckListBox: a listbox whose items may be checked
143class wxCheckListBox : public wxListBox
144{
145public:
2b9048c5
RD
146 %pythonAppend wxCheckListBox "self._setOORInfo(self)"
147 %pythonAppend wxCheckListBox() ""
d14a1e28 148
d5573410 149 wxCheckListBox(wxWindow *parent, wxWindowID id=-1,
d14a1e28
RD
150 const wxPoint& pos = wxDefaultPosition,
151 const wxSize& size = wxDefaultSize,
699e192b 152 const wxArrayString& choices = wxPyEmptyStringArray,
d14a1e28
RD
153 long style = 0,
154 const wxValidator& validator = wxDefaultValidator,
155 const wxString& name = wxPyListBoxNameStr);
1b8c7ba6 156 %RenameCtor(PreCheckListBox, wxCheckListBox());
d14a1e28 157
d5573410 158 bool Create(wxWindow *parent, wxWindowID id=-1,
699e192b
RD
159 const wxPoint& pos = wxDefaultPosition,
160 const wxSize& size = wxDefaultSize,
699e192b
RD
161 const wxArrayString& choices = wxPyEmptyStringArray,
162 long style = 0,
163 const wxValidator& validator = wxDefaultValidator,
164 const wxString& name = wxPyListBoxNameStr);
d14a1e28
RD
165
166 bool IsChecked(int index);
a72f4631 167 void Check(int index, int check = true);
d14a1e28 168
8dfc6457 169#if defined(__WXMSW__) || defined(__WXGTK__)
d14a1e28
RD
170 int GetItemHeight();
171#endif
172
173 // return the index of the item at this position or wxNOT_FOUND
174 int HitTest(const wxPoint& pt) const;
1b8c7ba6 175 %Rename(HitTestXY, int, HitTest(wxCoord x, wxCoord y) const);
d14a1e28
RD
176};
177
178//---------------------------------------------------------------------------