Patch# 893337, Fix for line control point handling in wxLineShape

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-05-07 19:52:02 +00:00
parent 30210c7d61
commit 1ce56f78fe
3 changed files with 43 additions and 17 deletions

View File

@ -193,7 +193,27 @@ public:
%extend {
PyObject* GetLineControlPoints() {
wxList* list = self->GetLineControlPoints();
return wxPy_ConvertShapeList(list);
return wxPy_ConvertRealPointList(list);
}
// part of Patch# 893337
void SetLineControlPoints(PyObject* list) {
wxList* real_point_list = wxPy_wxRealPoint_ListHelper(list);
self->MakeLineControlPoints((int)(real_point_list->GetCount()));
wxList* old_control_points = self->GetLineControlPoints();
wxNode* old_node = old_control_points->GetFirst();
wxNode* real_node = real_point_list->GetFirst();
while(old_node)
{
wxRealPoint* old_point = (wxRealPoint*)old_node->GetData();
wxRealPoint* new_point = (wxRealPoint*)real_node->GetData();
old_point->x = new_point->x;
old_point->y = new_point->y;
old_node = old_node->GetNext();
real_node = real_node->GetNext();
}
self->ClearPointList(*real_point_list);
delete real_point_list;
}
}
@ -282,21 +302,7 @@ public:
%extend {
PyObject* GetPoints() {
wxList* list = self->GetPoints();
PyObject* pyList;
PyObject* pyObj;
wxObject* wxObj;
wxNode* node = list->GetFirst();
bool blocked = wxPyBeginBlockThreads();
pyList = PyList_New(0);
while (node) {
wxObj = node->GetData();
pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0);
PyList_Append(pyList, pyObj);
node = node->GetNext();
}
wxPyEndBlockThreads(blocked);
return pyList;
return wxPy_ConvertRealPointList(list);
}
PyObject* GetOriginalPoints() {

View File

@ -256,6 +256,26 @@ PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source) {
//---------------------------------------------------------------------------
PyObject* wxPy_ConvertRealPointList(wxListBase* list) {
PyObject* pyList;
PyObject* pyObj;
wxObject* wxObj;
wxNode* node = list->GetFirst();
bool blocked = wxPyBeginBlockThreads();
pyList = PyList_New(0);
while (node) {
wxObj = node->GetData();
pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0);
PyList_Append(pyList, pyObj);
node = node->GetNext();
}
wxPyEndBlockThreads(blocked);
return pyList;
}
//---------------------------------------------------------------------------
PyObject* wxPy_ConvertShapeList(wxListBase* listbase) {
wxList* list = (wxList*)listbase;
PyObject* pyList;

View File

@ -101,7 +101,7 @@ wxList* wxPy_wxListHelper(PyObject* pyList, const wxChar* className);
wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList);
PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source);
PyObject* wxPy_ConvertShapeList(wxListBase* list);
PyObject* wxPy_ConvertRealPointList(wxListBase* list);
//---------------------------------------------------------------------------