]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/clip_dnd.i
implement wxColourDialog::Move() (patch 548048)
[wxWidgets.git] / wxPython / src / clip_dnd.i
index a66618af31d18489d2b0f321e5a3ee8160bb46c8..bf4acd7712de289d563b169c4371dcd829f114e1 100644 (file)
 
 %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,
 };
 
 //----------------------------------------------------------------------
@@ -72,7 +78,7 @@ public:
     wxDataFormatId GetType() const;
 
     wxString GetId() const;
-    void SetId(const char *format);
+    void SetId(const wxString& format);
 };
 
 %new wxDataFormat* wxCustomDataFormat(const wxString &id);
@@ -149,7 +155,7 @@ bool wxPyDataObjectSimple::GetDataHere(void *buf) {
     // C++ version.
 
     bool rval = FALSE;
-    wxPyTState* state = wxPyBeginBlockThreads();
+    wxPyBeginBlockThreads();
     if (m_myInst.findCallback("GetDataHere")) {
         PyObject* ro;
         ro = m_myInst.callCallbackObj(Py_BuildValue("()"));
@@ -160,7 +166,7 @@ bool wxPyDataObjectSimple::GetDataHere(void *buf) {
             Py_DECREF(ro);
         }
     }
-    wxPyEndBlockThreads(state);
+    wxPyEndBlockThreads();
     return rval;
 }
 
@@ -168,13 +174,13 @@ bool wxPyDataObjectSimple::SetData(size_t len, const void *buf) {
     // For this one we simply need to make a string from buf and len
     // and send it to the Python method.
     bool rval = FALSE;
-    wxPyTState* state = wxPyBeginBlockThreads();
+    wxPyBeginBlockThreads();
     if (m_myInst.findCallback("SetData")) {
         PyObject* data = PyString_FromStringAndSize((char*)buf, len);
         rval = m_myInst.callCallback(Py_BuildValue("(O)", data));
         Py_DECREF(data);
     }
-    wxPyEndBlockThreads(state);
+    wxPyEndBlockThreads();
     return rval;
 }
 %}
@@ -205,7 +211,7 @@ public:
 
 class wxTextDataObject : public wxDataObjectSimple {
 public:
-    wxTextDataObject(const wxString& text = wxEmptyString);
+    wxTextDataObject(const wxString& text = wxPyEmptyString);
 
     size_t GetTextLength();
     wxString GetText();
@@ -217,7 +223,7 @@ public:
 %{  // 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);
@@ -236,7 +242,7 @@ IMP_PYCALLBACK__STRING(wxPyTextDataObject, wxTextDataObject, SetText);
 // Now define it for SWIG
 class wxPyTextDataObject : public wxTextDataObject {
 public:
-    wxPyTextDataObject(const wxString& text = wxEmptyString);
+    wxPyTextDataObject(const wxString& text = wxPyEmptyString);
     void _setCallbackInfo(PyObject* self, PyObject* _class);
     %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyTextDataObject)"
 };
@@ -266,7 +272,7 @@ public:
 
 wxBitmap wxPyBitmapDataObject::GetBitmap() {
     wxBitmap* rval = &wxNullBitmap;
-    wxPyTState* state = wxPyBeginBlockThreads();
+    wxPyBeginBlockThreads();
     if (m_myInst.findCallback("GetBitmap")) {
         PyObject* ro;
         wxBitmap* ptr;
@@ -277,17 +283,17 @@ wxBitmap wxPyBitmapDataObject::GetBitmap() {
             Py_DECREF(ro);
         }
     }
-    wxPyEndBlockThreads(state);
+    wxPyEndBlockThreads();
     return *rval;
 }
 
 void wxPyBitmapDataObject::SetBitmap(const wxBitmap& bitmap) {
-    wxPyTState* state = wxPyBeginBlockThreads();
+    wxPyBeginBlockThreads();
     if (m_myInst.findCallback("SetBitmap")) {
         m_myInst.callCallback(Py_BuildValue("(O)",
                               wxPyConstructObject((void*)&bitmap, "wxBitmap")));
     }
-    wxPyEndBlockThreads(state);
+    wxPyEndBlockThreads();
 }
 %}
 
@@ -313,10 +319,7 @@ public:
     %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__
@@ -370,6 +373,25 @@ public:
     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
+
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------
@@ -595,16 +617,12 @@ public:
 bool wxPyFileDropTarget::OnDropFiles(wxCoord x, wxCoord y,
                                      const wxArrayString& filenames) {
     bool rval = FALSE;
-    wxPyTState* state = wxPyBeginBlockThreads();
-    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);
-    wxPyEndBlockThreads(state);
+    wxPyEndBlockThreads();
     return rval;
 }