From 14afa2cbca535ad8fabc8f7ef6792f2d6dc01741 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 21 Feb 2002 00:54:23 +0000 Subject: [PATCH] Better wrapper for wxListCtrl.GetColumn, and some other cleanup git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/src/controls2.i | 17 ++++++++++++++++- wxPython/src/msw/controls2.cpp | 27 ++++++++++++--------------- wxPython/src/msw/controls2.py | 6 ++++++ wxPython/src/msw/wx.py | 2 +- wxPython/src/windows.i | 4 ++-- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/wxPython/src/controls2.i b/wxPython/src/controls2.i index ebbb299a32..5f0077a7bf 100644 --- a/wxPython/src/controls2.i +++ b/wxPython/src/controls2.i @@ -421,7 +421,22 @@ public: bool SetBackgroundColour(const wxColour& col); // Gets information about this column - bool GetColumn(int col, wxListItem& item) const; + // bool GetColumn(int col, wxListItem& item) const; + %addmethods { + %new wxListItem* GetColumn(int col) { + wxListItem item; + if (self->GetColumn(col, item)) + return new wxListItem(item); + else + return NULL; + } + } // The OOR typemaps don't know what to do with the %new, so fix it up. + %pragma(python) addtoclass = " + def GetItem(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_GetColumn,(self,) + _args, _kwargs) + if val is not None: val.thisown = 1 + return val + " // Sets information about this column bool SetColumn(int col, wxListItem& item) ; diff --git a/wxPython/src/msw/controls2.cpp b/wxPython/src/msw/controls2.cpp index 4c7f47568e..13074c0dc7 100644 --- a/wxPython/src/msw/controls2.cpp +++ b/wxPython/src/msw/controls2.cpp @@ -3182,19 +3182,23 @@ static PyObject *_wrap_wxListCtrl_SetBackgroundColour(PyObject *self, PyObject * return _resultobj; } -#define wxListCtrl_GetColumn(_swigobj,_swigarg0,_swigarg1) (_swigobj->GetColumn(_swigarg0,_swigarg1)) +static wxListItem * wxPyListCtrl_GetColumn(wxPyListCtrl *self,int col) { + wxListItem item; + if (self->GetColumn(col, item)) + return new wxListItem(item); + else + return NULL; + } static PyObject *_wrap_wxListCtrl_GetColumn(PyObject *self, PyObject *args, PyObject *kwargs) { PyObject * _resultobj; - bool _result; + wxListItem * _result; wxPyListCtrl * _arg0; int _arg1; - wxListItem * _arg2; PyObject * _argo0 = 0; - PyObject * _argo2 = 0; - char *_kwnames[] = { "self","col","item", NULL }; + char *_kwnames[] = { "self","col", NULL }; self = self; - if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxListCtrl_GetColumn",_kwnames,&_argo0,&_arg1,&_argo2)) + if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxListCtrl_GetColumn",_kwnames,&_argo0,&_arg1)) return NULL; if (_argo0) { if (_argo0 == Py_None) { _arg0 = NULL; } @@ -3203,20 +3207,13 @@ static PyObject *_wrap_wxListCtrl_GetColumn(PyObject *self, PyObject *args, PyOb return NULL; } } - if (_argo2) { - if (_argo2 == Py_None) { _arg2 = NULL; } - else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxListItem_p")) { - PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxListCtrl_GetColumn. Expected _wxListItem_p."); - return NULL; - } - } { PyThreadState* __tstate = wxPyBeginAllowThreads(); - _result = (bool )wxListCtrl_GetColumn(_arg0,_arg1,*_arg2); + _result = (wxListItem *)wxPyListCtrl_GetColumn(_arg0,_arg1); wxPyEndAllowThreads(__tstate); if (PyErr_Occurred()) return NULL; -} _resultobj = Py_BuildValue("i",_result); +}{ _resultobj = wxPyMake_wxObject(_result); } return _resultobj; } diff --git a/wxPython/src/msw/controls2.py b/wxPython/src/msw/controls2.py index 66a0e5ea88..b550f38f9e 100644 --- a/wxPython/src/msw/controls2.py +++ b/wxPython/src/msw/controls2.py @@ -621,6 +621,12 @@ class wxListCtrlPtr(wxControlPtr): def __repr__(self): return "" % (self.this,) + def GetItem(self, *_args, **_kwargs): + val = apply(controls2c.wxListCtrl_GetColumn,(self,) + _args, _kwargs) + if val is not None: val.thisown = 1 + return val + + def GetItem(self, *_args, **_kwargs): val = apply(controls2c.wxListCtrl_GetItem,(self,) + _args, _kwargs) val.thisown = 1 diff --git a/wxPython/src/msw/wx.py b/wxPython/src/msw/wx.py index d72f84b8a0..76d13b852a 100644 --- a/wxPython/src/msw/wx.py +++ b/wxPython/src/msw/wx.py @@ -1676,7 +1676,7 @@ class __wxPyCleanup: sys.__wxPythonCleanup = __wxPyCleanup() -## # another possible solution, but it gets called too eary... +## # another possible solution, but it gets called too early... ## if sys.version[0] == '2': ## import atexit ## atexit.register(wxc.wxApp_CleanUp) diff --git a/wxPython/src/windows.i b/wxPython/src/windows.i index a72fb75ab5..a29f448070 100644 --- a/wxPython/src/windows.i +++ b/wxPython/src/windows.i @@ -375,8 +375,8 @@ public: wxSizer* GetSizer(); // Track if this window is a member of a sizer - void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; } - wxSizer *GetContainingSizer() const { return m_containingSizer; } + void SetContainingSizer(wxSizer* sizer); + wxSizer *GetContainingSizer() const; wxValidator* GetValidator(); void SetValidator(const wxValidator& validator); -- 2.47.2