]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow AddWindow and RemoveWindow to be overridden in classes derived
authorRobin Dunn <robin@alldunn.com>
Wed, 14 Aug 2002 23:26:42 +0000 (23:26 +0000)
committerRobin Dunn <robin@alldunn.com>
Wed, 14 Aug 2002 23:26:42 +0000 (23:26 +0000)
in Python

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/src/helpers.h
wxPython/src/msw/windows2.cpp
wxPython/src/msw/windows2.py
wxPython/src/windows2.i

index acc450dce6130b118c92a2750dae16d7ccc315f0..e0cb056cf75eb4b0355adda90eaa8583e6879a2e 100644 (file)
@@ -1315,6 +1315,30 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh);
 
 //---------------------------------------------------------------------------
 
+#define DEC_PYCALLBACK_VOID_WXWINBASE(CBNAME)                      \
+    void CBNAME(wxWindowBase* a);                                  \
+    void base_##CBNAME(wxWindowBase* a);
+
+
+#define IMP_PYCALLBACK_VOID_WXWINBASE(CLASS, PCLASS, CBNAME)                    \
+    void CLASS::CBNAME(wxWindowBase* a) {                                       \
+        bool found;                                                             \
+        wxPyBeginBlockThreads();                                                \
+        if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) {                \
+            PyObject* obj = wxPyMake_wxObject(a);                               \
+            wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj));          \
+            Py_DECREF(obj);                                                     \
+        }                                                                       \
+        wxPyEndBlockThreads();                                                  \
+        if (! found)                                                            \
+            PCLASS::CBNAME(a);                                                  \
+    }                                                                           \
+    void CLASS::base_##CBNAME(wxWindowBase* a) {                                \
+        PCLASS::CBNAME(a);                                                      \
+    }
+
+//---------------------------------------------------------------------------
+
 #define DEC_PYCALLBACK_BOOL_(CBNAME)                      \
     bool CBNAME();                                        \
     bool base_##CBNAME();
index 779f3fe1c357406358a77189fb93e190e3932acd..cdfe06938068504f5619a254ec028a3f009733ff 100644 (file)
@@ -136,6 +136,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -162,6 +165,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, RemoveChild);
+
  // C++ version of Python aware wxControl
 class wxPyControl : public wxControl
 {
@@ -198,6 +204,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -224,6 +233,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyControl, wxControl, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, RemoveChild);
+
  // C++ version of Python aware wxPanel
 class wxPyPanel : public wxPanel
 {
@@ -259,6 +271,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -285,6 +300,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, RemoveChild);
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -3326,6 +3344,80 @@ static PyObject *_wrap_wxPyWindow_base_GetMaxSize(PyObject *self, PyObject *args
     return _resultobj;
 }
 
+#define wxPyWindow_base_AddChild(_swigobj,_swigarg0)  (_swigobj->base_AddChild(_swigarg0))
+static PyObject *_wrap_wxPyWindow_base_AddChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyWindow * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyWindow_base_AddChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyWindow_base_AddChild. Expected _wxPyWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyWindow_base_AddChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyWindow_base_AddChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyWindow_base_RemoveChild(_swigobj,_swigarg0)  (_swigobj->base_RemoveChild(_swigarg0))
+static PyObject *_wrap_wxPyWindow_base_RemoveChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyWindow * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyWindow_base_RemoveChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyWindow_base_RemoveChild. Expected _wxPyWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyWindow_base_RemoveChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyWindow_base_RemoveChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static void *SwigwxPyControlTowxControl(void *ptr) {
     wxPyControl *src;
     wxControl *dest;
@@ -3999,6 +4091,80 @@ static PyObject *_wrap_wxPyControl_base_GetMaxSize(PyObject *self, PyObject *arg
     return _resultobj;
 }
 
+#define wxPyControl_base_AddChild(_swigobj,_swigarg0)  (_swigobj->base_AddChild(_swigarg0))
+static PyObject *_wrap_wxPyControl_base_AddChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyControl * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyControl_base_AddChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyControl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyControl_base_AddChild. Expected _wxPyControl_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControl_base_AddChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyControl_base_AddChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyControl_base_RemoveChild(_swigobj,_swigarg0)  (_swigobj->base_RemoveChild(_swigarg0))
+static PyObject *_wrap_wxPyControl_base_RemoveChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyControl * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyControl_base_RemoveChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyControl_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyControl_base_RemoveChild. Expected _wxPyControl_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyControl_base_RemoveChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyControl_base_RemoveChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static void *SwigwxPyPanelTowxPanel(void *ptr) {
     wxPyPanel *src;
     wxPanel *dest;
@@ -4663,7 +4829,83 @@ static PyObject *_wrap_wxPyPanel_base_GetMaxSize(PyObject *self, PyObject *args,
     return _resultobj;
 }
 
+#define wxPyPanel_base_AddChild(_swigobj,_swigarg0)  (_swigobj->base_AddChild(_swigarg0))
+static PyObject *_wrap_wxPyPanel_base_AddChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyPanel * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyPanel_base_AddChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyPanel_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyPanel_base_AddChild. Expected _wxPyPanel_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPanel_base_AddChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyPanel_base_AddChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxPyPanel_base_RemoveChild(_swigobj,_swigarg0)  (_swigobj->base_RemoveChild(_swigarg0))
+static PyObject *_wrap_wxPyPanel_base_RemoveChild(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyPanel * _arg0;
+    wxWindow * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","child", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxPyPanel_base_RemoveChild",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyPanel_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxPyPanel_base_RemoveChild. Expected _wxPyPanel_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxPyPanel_base_RemoveChild. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    wxPyPanel_base_RemoveChild(_arg0,_arg1);
+
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) return NULL;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
 static PyMethodDef windows2cMethods[] = {
+        { "wxPyPanel_base_RemoveChild", (PyCFunction) _wrap_wxPyPanel_base_RemoveChild, METH_VARARGS | METH_KEYWORDS },
+        { "wxPyPanel_base_AddChild", (PyCFunction) _wrap_wxPyPanel_base_AddChild, METH_VARARGS | METH_KEYWORDS },
         { "wxPyPanel_base_GetMaxSize", (PyCFunction) _wrap_wxPyPanel_base_GetMaxSize, METH_VARARGS | METH_KEYWORDS },
         { "wxPyPanel_base_AcceptsFocusFromKeyboard", (PyCFunction) _wrap_wxPyPanel_base_AcceptsFocusFromKeyboard, METH_VARARGS | METH_KEYWORDS },
         { "wxPyPanel_base_AcceptsFocus", (PyCFunction) _wrap_wxPyPanel_base_AcceptsFocus, METH_VARARGS | METH_KEYWORDS },
@@ -4682,6 +4924,8 @@ static PyMethodDef windows2cMethods[] = {
         { "wxPyPanel_base_DoMoveWindow", (PyCFunction) _wrap_wxPyPanel_base_DoMoveWindow, METH_VARARGS | METH_KEYWORDS },
         { "wxPyPanel__setCallbackInfo", (PyCFunction) _wrap_wxPyPanel__setCallbackInfo, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPyPanel", (PyCFunction) _wrap_new_wxPyPanel, METH_VARARGS | METH_KEYWORDS },
+        { "wxPyControl_base_RemoveChild", (PyCFunction) _wrap_wxPyControl_base_RemoveChild, METH_VARARGS | METH_KEYWORDS },
+        { "wxPyControl_base_AddChild", (PyCFunction) _wrap_wxPyControl_base_AddChild, METH_VARARGS | METH_KEYWORDS },
         { "wxPyControl_base_GetMaxSize", (PyCFunction) _wrap_wxPyControl_base_GetMaxSize, METH_VARARGS | METH_KEYWORDS },
         { "wxPyControl_base_AcceptsFocusFromKeyboard", (PyCFunction) _wrap_wxPyControl_base_AcceptsFocusFromKeyboard, METH_VARARGS | METH_KEYWORDS },
         { "wxPyControl_base_AcceptsFocus", (PyCFunction) _wrap_wxPyControl_base_AcceptsFocus, METH_VARARGS | METH_KEYWORDS },
@@ -4700,6 +4944,8 @@ static PyMethodDef windows2cMethods[] = {
         { "wxPyControl_base_DoMoveWindow", (PyCFunction) _wrap_wxPyControl_base_DoMoveWindow, METH_VARARGS | METH_KEYWORDS },
         { "wxPyControl__setCallbackInfo", (PyCFunction) _wrap_wxPyControl__setCallbackInfo, METH_VARARGS | METH_KEYWORDS },
         { "new_wxPyControl", (PyCFunction) _wrap_new_wxPyControl, METH_VARARGS | METH_KEYWORDS },
+        { "wxPyWindow_base_RemoveChild", (PyCFunction) _wrap_wxPyWindow_base_RemoveChild, METH_VARARGS | METH_KEYWORDS },
+        { "wxPyWindow_base_AddChild", (PyCFunction) _wrap_wxPyWindow_base_AddChild, METH_VARARGS | METH_KEYWORDS },
         { "wxPyWindow_base_GetMaxSize", (PyCFunction) _wrap_wxPyWindow_base_GetMaxSize, METH_VARARGS | METH_KEYWORDS },
         { "wxPyWindow_base_AcceptsFocusFromKeyboard", (PyCFunction) _wrap_wxPyWindow_base_AcceptsFocusFromKeyboard, METH_VARARGS | METH_KEYWORDS },
         { "wxPyWindow_base_AcceptsFocus", (PyCFunction) _wrap_wxPyWindow_base_AcceptsFocus, METH_VARARGS | METH_KEYWORDS },
index f9850115824951e90c1cbb748de97940aa758abf..1956c91f0e97e09ab8fd6584a3466b1d91d06d51 100644 (file)
@@ -342,6 +342,12 @@ class wxPyWindowPtr(wxWindowPtr):
         val = apply(windows2c.wxPyWindow_base_GetMaxSize,(self,) + _args, _kwargs)
         if val: val = wxSizePtr(val) ; val.thisown = 1
         return val
+    def base_AddChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyWindow_base_AddChild,(self,) + _args, _kwargs)
+        return val
+    def base_RemoveChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyWindow_base_RemoveChild,(self,) + _args, _kwargs)
+        return val
     def __repr__(self):
         return "<C wxPyWindow instance at %s>" % (self.this,)
 class wxPyWindow(wxPyWindowPtr):
@@ -412,6 +418,12 @@ class wxPyControlPtr(wxControlPtr):
         val = apply(windows2c.wxPyControl_base_GetMaxSize,(self,) + _args, _kwargs)
         if val: val = wxSizePtr(val) ; val.thisown = 1
         return val
+    def base_AddChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyControl_base_AddChild,(self,) + _args, _kwargs)
+        return val
+    def base_RemoveChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyControl_base_RemoveChild,(self,) + _args, _kwargs)
+        return val
     def __repr__(self):
         return "<C wxPyControl instance at %s>" % (self.this,)
 class wxPyControl(wxPyControlPtr):
@@ -482,6 +494,12 @@ class wxPyPanelPtr(wxPanelPtr):
         val = apply(windows2c.wxPyPanel_base_GetMaxSize,(self,) + _args, _kwargs)
         if val: val = wxSizePtr(val) ; val.thisown = 1
         return val
+    def base_AddChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyPanel_base_AddChild,(self,) + _args, _kwargs)
+        return val
+    def base_RemoveChild(self, *_args, **_kwargs):
+        val = apply(windows2c.wxPyPanel_base_RemoveChild,(self,) + _args, _kwargs)
+        return val
     def __repr__(self):
         return "<C wxPyPanel instance at %s>" % (self.this,)
 class wxPyPanel(wxPyPanelPtr):
index 39b3ceaac94da70e96284acd7b24fe8b57264d0e..2e6872bccfac5355bcf1ba0ccec67a7b78cb8406 100644 (file)
@@ -306,7 +306,6 @@ public:
 // the virtual methods in Python derived classes.
 
 //      Which (any?) of these should be done also???
-//      AddChild
 //      Destroy
 //      DoCaptureMouse
 //      DoClientToScreen
@@ -323,7 +322,6 @@ public:
 //      GetClientAreaOrigin
 //      GetDefaultItem
 //      IsTopLevel
-//      RemoveChild
 //      SetBackgroundColour
 //      SetDefaultItem
 //      SetFocus
@@ -369,6 +367,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -395,6 +396,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, RemoveChild);
+
 %}
 
 // And now the one for SWIG to see
@@ -433,6 +437,9 @@ public:
     bool base_AcceptsFocus() const;
     bool base_AcceptsFocusFromKeyboard() const;
     wxSize base_GetMaxSize() const;
+
+    void base_AddChild(wxWindow* child);
+    void base_RemoveChild(wxWindow* child);
 }
 
 //---------------------------------------------------------------------------
@@ -475,6 +482,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -501,6 +511,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyControl, wxControl, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, RemoveChild);
+
 %}
 
 // And now the one for SWIG to see
@@ -540,6 +553,9 @@ public:
     bool base_AcceptsFocus() const;
     bool base_AcceptsFocusFromKeyboard() const;
     wxSize base_GetMaxSize() const;
+
+    void base_AddChild(wxWindow* child);
+    void base_RemoveChild(wxWindow* child);
 }
 
 //---------------------------------------------------------------------------
@@ -580,6 +596,9 @@ public:
     DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard);
     DEC_PYCALLBACK_SIZE_const(GetMaxSize);
 
+    DEC_PYCALLBACK_VOID_WXWINBASE(AddChild);
+    DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild);
+
     PYPRIVATE;
 };
 
@@ -606,6 +625,9 @@ IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocus);
 IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocusFromKeyboard);
 IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, GetMaxSize);
 
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, AddChild);
+IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, RemoveChild);
+
 %}
 
 // And now the one for SWIG to see
@@ -644,6 +666,9 @@ public:
     bool base_AcceptsFocus() const;
     bool base_AcceptsFocusFromKeyboard() const;
     wxSize base_GetMaxSize() const;
+
+    void base_AddChild(wxWindow* child);
+    void base_RemoveChild(wxWindow* child);
 }