+
+class wxControlWithItems : public wxControl {
+public:
+
+ // void Clear(); ambiguous, redefine below...
+ void Delete(int n);
+
+ int GetCount();
+ %pragma(python) addtoclass = "Number = GetCount"
+ wxString GetString(int n);
+ void SetString(int n, const wxString& s);
+ int FindString(const wxString& s);
+
+ void Select(int n);
+ int GetSelection();
+
+ wxString GetStringSelection() const;
+
+ // void Append(const wxString& item);
+ // void Append(const wxString& item, char* clientData);
+ // char* GetClientData(const int n);
+ // void SetClientData(const int n, char* data);
+ %addmethods {
+ void Append(const wxString& item, PyObject* clientData=NULL) {
+ if (clientData) {
+ wxPyClientData* data = new wxPyClientData(clientData);
+ self->Append(item, data);
+ } else
+ self->Append(item);
+ }
+
+ PyObject* GetClientData(int n) {
+ wxPyClientData* data = (wxPyClientData*)self->GetClientObject(n);
+ if (data) {
+ Py_INCREF(data->m_obj);
+ return data->m_obj;
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ }
+
+ void SetClientData(int n, PyObject* clientData) {
+ wxPyClientData* data = new wxPyClientData(clientData);
+ self->SetClientObject(n, data);
+ }
+ }
+
+};
+//----------------------------------------------------------------------
+