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:
parent
30210c7d61
commit
1ce56f78fe
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user