+//---------------------------------------------------------------------------
+
+class wxPyDropSource : public wxDropSource {
+public:
+#ifndef __WXGTK__
+ wxPyDropSource(wxWindow *win = NULL,
+ const wxCursor © = wxNullCursor,
+ const wxCursor &move = wxNullCursor,
+ const wxCursor &none = wxNullCursor)
+ : wxDropSource(win, copy, move, none) {}
+#else
+ wxPyDropSource(wxWindow *win = NULL,
+ const wxIcon& copy = wxNullIcon,
+ const wxIcon& move = wxNullIcon,
+ const wxIcon& none = wxNullIcon)
+ : wxDropSource(win, copy, move, none) {}
+#endif
+ ~wxPyDropSource() { }
+
+ DEC_PYCALLBACK_BOOL_DR(GiveFeedback);
+ PYPRIVATE;
+};
+
+
+class wxPyDropTarget : public wxDropTarget {
+public:
+ wxPyDropTarget(wxDataObject *dataObject = NULL)
+ : wxDropTarget(dataObject) {}
+
+ // called when mouse leaves the window: might be used to remove the
+ // feedback which was given in OnEnter()
+ DEC_PYCALLBACK__(OnLeave);
+
+ // called when the mouse enters the window (only once until OnLeave())
+ DEC_PYCALLBACK_DR_2WXCDR(OnEnter);
+
+ // called when the mouse moves in the window - shouldn't take long to
+ // execute or otherwise mouse movement would be too slow
+ DEC_PYCALLBACK_DR_2WXCDR(OnDragOver);
+
+ // called after OnDrop() returns True: you will usually just call
+ // GetData() from here and, probably, also refresh something to update the
+ // new data and, finally, return the code indicating how did the operation
+ // complete (returning default value in case of success and wxDragError on
+ // failure is usually ok)
+ DEC_PYCALLBACK_DR_2WXCDR_pure(OnData);
+
+ // this function is called when data is dropped at position (x, y) - if it
+ // returns True, OnData() will be called immediately afterwards which will
+ // allow to retrieve the data dropped.
+ DEC_PYCALLBACK_BOOL_INTINT(OnDrop);
+
+ PYPRIVATE;
+};
+
+
+
+