+PyObject *wxDataObject_GetAllFormats(wxDataObject *self,wxDataObject::Direction dir){
+ size_t count = self->GetFormatCount(dir);
+ wxDataFormat* formats = new wxDataFormat[count];
+ self->GetAllFormats(formats, dir);
+
+ bool blocked = wxPyBeginBlockThreads();
+ PyObject* list = PyList_New(count);
+ for (size_t i=0; i<count; i++) {
+ wxDataFormat* format = new wxDataFormat(formats[i]);
+ PyObject* obj = wxPyConstructObject((void*)format, wxT("wxDataFormat"), True);
+ PyList_Append(list, obj);
+ Py_DECREF(obj);
+ }
+ wxPyEndBlockThreads(blocked);
+ delete [] formats;
+ return list;
+ }
+PyObject *wxDataObject_GetDataHere(wxDataObject *self,wxDataFormat const &format){
+ PyObject* rval = NULL;
+ size_t size = self->GetDataSize(format);
+ bool blocked = wxPyBeginBlockThreads();
+ if (size) {
+ char* buf = new char[size];
+ if (self->GetDataHere(format, buf))
+ rval = PyString_FromStringAndSize(buf, size);
+ delete [] buf;
+ }
+ if (! rval) {
+ rval = Py_None;
+ Py_INCREF(rval);
+ }
+ wxPyEndBlockThreads(blocked);
+ return rval;
+ }
+bool wxDataObject_SetData(wxDataObject *self,wxDataFormat const &format,PyObject *data){
+ bool rval;
+ bool blocked = wxPyBeginBlockThreads();
+ if (PyString_Check(data)) {
+ rval = self->SetData(format, PyString_Size(data), PyString_AsString(data));
+ }
+ else {
+ // raise a TypeError if not a string
+ PyErr_SetString(PyExc_TypeError, "String expected.");
+ rval = False;
+ }
+ wxPyEndBlockThreads(blocked);
+ return rval;
+ }
+PyObject *wxDataObjectSimple_GetDataHere(wxDataObjectSimple *self){
+ PyObject* rval = NULL;
+ size_t size = self->GetDataSize();
+ bool blocked = wxPyBeginBlockThreads();
+ if (size) {
+ char* buf = new char[size];
+ if (self->GetDataHere(buf))
+ rval = PyString_FromStringAndSize(buf, size);
+ delete [] buf;
+ }
+ if (! rval) {
+ rval = Py_None;
+ Py_INCREF(rval);
+ }
+ wxPyEndBlockThreads(blocked);
+ return rval;
+ }
+bool wxDataObjectSimple_SetData(wxDataObjectSimple *self,PyObject *data){
+ bool rval;
+ bool blocked = wxPyBeginBlockThreads();
+ if (PyString_Check(data)) {
+ rval = self->SetData(PyString_Size(data), PyString_AsString(data));
+ }
+ else {
+ // raise a TypeError if not a string
+ PyErr_SetString(PyExc_TypeError, "String expected.");
+ rval = False;
+ }
+ wxPyEndBlockThreads(blocked);
+ return rval;
+ }