%module clip_dnd
+#ifndef __WXMAC__
+
%{
#include "helpers.h"
#include <wx/dataobj.h>
%pragma(python) code = "import wx"
+//---------------------------------------------------------------------------
+%{
+ // Put some wx default wxChar* values into wxStrings.
+ static const wxString wxPyEmptyString(wxT(""));
+%}
//----------------------------------------------------------------------
enum wxDataFormatId
{
- wxDF_INVALID = 0,
- wxDF_TEXT = 1, /* CF_TEXT */
- wxDF_BITMAP = 2, /* CF_BITMAP */
- wxDF_METAFILE = 3, /* CF_METAFILEPICT */
- wxDF_SYLK = 4,
- wxDF_DIF = 5,
- wxDF_TIFF = 6,
- wxDF_OEMTEXT = 7, /* CF_OEMTEXT */
- wxDF_DIB = 8, /* CF_DIB */
- wxDF_PALETTE = 9,
- wxDF_PENDATA = 10,
- wxDF_RIFF = 11,
- wxDF_WAVE = 12,
- wxDF_UNICODETEXT = 13,
- wxDF_ENHMETAFILE = 14,
- wxDF_FILENAME = 15, /* CF_HDROP */
- wxDF_LOCALE = 16,
- wxDF_PRIVATE = 20,
- wxDF_MAX
+ wxDF_INVALID,
+ wxDF_TEXT,
+ wxDF_BITMAP,
+ wxDF_METAFILE,
+ wxDF_SYLK,
+ wxDF_DIF,
+ wxDF_TIFF,
+ wxDF_OEMTEXT,
+ wxDF_DIB,
+ wxDF_PALETTE,
+ wxDF_PENDATA,
+ wxDF_RIFF,
+ wxDF_WAVE,
+ wxDF_UNICODETEXT,
+ wxDF_ENHMETAFILE,
+ wxDF_FILENAME,
+ wxDF_LOCALE,
+ wxDF_PRIVATE,
+ wxDF_HTML,
+ wxDF_MAX,
};
//----------------------------------------------------------------------
wxDataFormatId GetType() const;
wxString GetId() const;
- void SetId(const char *format);
+ void SetId(const wxString& format);
};
%new wxDataFormat* wxCustomDataFormat(const wxString &id);
// C++ version.
bool rval = FALSE;
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
if (m_myInst.findCallback("GetDataHere")) {
PyObject* ro;
ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
Py_DECREF(ro);
}
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return rval;
}
// For this one we simply need to make a string from buf and len
// and send it to the Python method.
bool rval = FALSE;
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
if (m_myInst.findCallback("SetData")) {
PyObject* data = PyString_FromStringAndSize((char*)buf, len);
rval = m_myInst.callCallback(Py_BuildValue("(O)", data));
Py_DECREF(data);
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return rval;
}
%}
class wxPyDataObjectSimple : public wxDataObjectSimple {
public:
wxPyDataObjectSimple(const wxDataFormat& format = wxPyFormatInvalid);
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyDataObjectSimple)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyDataObjectSimple)"
};
//----------------------------------------------------------------------
class wxTextDataObject : public wxDataObjectSimple {
public:
- wxTextDataObject(const wxString& text = wxEmptyString);
+ wxTextDataObject(const wxString& text = wxPyEmptyString);
size_t GetTextLength();
wxString GetText();
%{ // Create a new class for wxPython to use
class wxPyTextDataObject : public wxTextDataObject {
public:
- wxPyTextDataObject(const wxString& text = wxEmptyString)
+ wxPyTextDataObject(const wxString& text = wxPyEmptyString)
: wxTextDataObject(text) {}
DEC_PYCALLBACK_SIZET_(GetTextLength);
// Now define it for SWIG
class wxPyTextDataObject : public wxTextDataObject {
public:
- wxPyTextDataObject(const wxString& text = wxEmptyString);
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyTextDataObject)"
+ wxPyTextDataObject(const wxString& text = wxPyEmptyString);
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyTextDataObject)"
};
//----------------------------------------------------------------------
wxBitmap wxPyBitmapDataObject::GetBitmap() {
wxBitmap* rval = &wxNullBitmap;
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
if (m_myInst.findCallback("GetBitmap")) {
PyObject* ro;
wxBitmap* ptr;
Py_DECREF(ro);
}
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return *rval;
}
void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) {
- bool doSave = wxPyRestoreThread();
+ wxPyBeginBlockThreads();
if (m_myInst.findCallback("SetBitmap")) {
m_myInst.callCallback(Py_BuildValue("(O)",
wxPyConstructObject((void*)&bitmap, "wxBitmap")));
}
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
}
%}
class wxPyBitmapDataObject : public wxBitmapDataObject {
public:
wxPyBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap);
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyBitmapDataObject)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyBitmapDataObject)"
};
%addmethods {
PyObject* GetFilenames() {
const wxArrayString& strings = self->GetFilenames();
- PyObject* list = PyList_New(0);
- for (size_t x=0; x<strings.GetCount(); x++)
- PyList_Append(list, PyString_FromString(strings[x]));
- return list;
+ return wxArrayString2PyList_helper(strings);
}
}
#ifdef __WXMSW__
}
size_t GetSize();
+
//void *GetData();
%addmethods {
PyObject* GetData() {
};
+//----------------------------------------------------------------------
+
+class wxURLDataObject : public wxDataObjectComposite {
+public:
+ wxURLDataObject();
+
+ wxString GetURL();
+ void SetURL(const wxString& url);
+};
+
+//----------------------------------------------------------------------
+
+#ifndef __WXGTK__
+
+%{
+#include <wx/metafile.h>
+%}
+
+class wxMetafileDataObject : public wxDataObjectSimple
+{
+public:
+ wxMetafileDataObject();
+
+ void SetMetafile(const wxMetafile& metafile);
+ wxMetafile GetMetafile() const;
+};
+
+#endif
//----------------------------------------------------------------------
//----------------------------------------------------------------------
//----------------------------------------------------------------------
-class wxClipboard {
+class wxClipboard : public wxObject {
public:
wxClipboard();
wxDragNone, // drag target didn't accept the data
wxDragCopy, // the data was successfully copied
wxDragMove, // the data was successfully moved (MSW only)
+ wxDragLink, // operation is a drag-link
wxDragCancel // the operation was cancelled by user (not an error)
};
const wxIcon &go = wxNullIcon);
#endif
- void _setSelf(PyObject* self, PyObject* _class, int incref);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxDropSource, 0)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class, int incref);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxDropSource, 0)"
~wxPyDropSource();
void SetData(wxDataObject& data);
public:
wxPyDropTarget(wxDataObject *dataObject = NULL);
%pragma(python) addtomethod = "__init__:if _args:_args[0].thisown = 0"
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyDropTarget)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyDropTarget)"
~wxPyDropTarget();
%name(wxTextDropTarget) class wxPyTextDropTarget : public wxPyDropTarget {
public:
wxPyTextDropTarget();
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxTextDropTarget)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxTextDropTarget)"
//bool OnDropText(wxCoord x, wxCoord y, const wxString& text) = 0;
wxDragResult base_OnEnter(wxCoord x, wxCoord y, wxDragResult def);
bool wxPyFileDropTarget::OnDropFiles(wxCoord x, wxCoord y,
const wxArrayString& filenames) {
bool rval = FALSE;
- bool doSave = wxPyRestoreThread();
- PyObject* list = PyList_New(0);
- for (size_t i=0; i<filenames.GetCount(); i++) {
- PyObject* str = PyString_FromString(filenames[i].c_str());
- PyList_Append(list, str);
- }
+ wxPyBeginBlockThreads();
+ PyObject* list = wxArrayString2PyList_helper(filenames);
if (m_myInst.findCallback("OnDropFiles"))
rval = m_myInst.callCallback(Py_BuildValue("(iiO)",x,y,list));
Py_DECREF(list);
- wxPySaveThread(doSave);
+ wxPyEndBlockThreads();
return rval;
}
{
public:
wxPyFileDropTarget();
- void _setSelf(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setSelf(self, wxFileDropTarget)"
+ void _setCallbackInfo(PyObject* self, PyObject* _class);
+ %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxFileDropTarget)"
// bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames) = 0;
wxDragResult base_OnEnter(wxCoord x, wxCoord y, wxDragResult def);
%init %{
wxPyTheClipboard = wxTheClipboard;
-
+ wxPyPtrTypeMap_Add("wxDropSource", "wxPyDropSource");
+ wxPyPtrTypeMap_Add("wxTextDropTarget", "wxPyTextDropTarget");
+ wxPyPtrTypeMap_Add("wxFileDropTarget", "wxPyFileDropTarget");
%}
//----------------------------------------------------------------------
+#endif