1 ///////////////////////////////////////////////////////////////////////////////
3 // Purpose: Declaration of the wxDropTarget, wxDropSource class etc.
4 // Author: Stefan Csomor
6 // Copyright: (c) 1998 Stefan Csomor
7 // Licence: wxWindows licence
8 ///////////////////////////////////////////////////////////////////////////////
13 #if wxUSE_DRAG_AND_DROP
16 #include "wx/object.h"
17 #include "wx/string.h"
18 #include "wx/string.h"
19 #include "wx/dataobj.h"
20 #include "wx/cursor.h"
22 //-------------------------------------------------------------------------
24 //-------------------------------------------------------------------------
26 class WXDLLIMPEXP_FWD_CORE wxWindow
;
28 class WXDLLIMPEXP_FWD_CORE wxDropTarget
;
29 class WXDLLIMPEXP_FWD_CORE wxTextDropTarget
;
30 class WXDLLIMPEXP_FWD_CORE wxFileDropTarget
;
32 class WXDLLIMPEXP_FWD_CORE wxDropSource
;
34 // ----------------------------------------------------------------------------
36 // ----------------------------------------------------------------------------
38 // this macro may be used instead for wxDropSource ctor arguments: it will use
39 // the icon 'name' from an XPM file under GTK, but will expand to something
40 // else under MSW. If you don't use it, you will have to use #ifdef in the
42 #define wxDROP_ICON(X) wxCursor(X##_xpm)
44 //-------------------------------------------------------------------------
46 //-------------------------------------------------------------------------
48 class WXDLLIMPEXP_CORE wxDropTarget
: public wxDropTargetBase
52 wxDropTarget(wxDataObject
*dataObject
= NULL
);
54 virtual wxDragResult
OnDragOver(wxCoord x
, wxCoord y
, wxDragResult def
);
55 virtual bool OnDrop(wxCoord x
, wxCoord y
);
56 virtual wxDragResult
OnData(wxCoord x
, wxCoord y
, wxDragResult def
);
57 virtual bool GetData();
58 // NOTE: This is needed by the generic wxDataViewCtrl, not sure how to implement.
59 virtual wxDataFormat
GetMatchingPair();
61 bool CurrentDragHasSupportedFormat() ;
62 void SetCurrentDragPasteboard( void* dragpasteboard
) { m_currentDragPasteboard
= dragpasteboard
; }
64 void* m_currentDragPasteboard
;
67 //-------------------------------------------------------------------------
69 //-------------------------------------------------------------------------
71 class WXDLLIMPEXP_CORE wxDropSource
: public wxDropSourceBase
74 // ctors: if you use default ctor you must call SetData() later!
76 // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
77 // compatibility, as well as both icon parameters
78 wxDropSource( wxWindow
*win
= NULL
,
79 const wxCursor
&cursorCopy
= wxNullCursor
,
80 const wxCursor
&cursorMove
= wxNullCursor
,
81 const wxCursor
&cursorStop
= wxNullCursor
);
83 /* constructor for setting one data object */
84 wxDropSource( wxDataObject
& data
,
86 const wxCursor
&cursorCopy
= wxNullCursor
,
87 const wxCursor
&cursorMove
= wxNullCursor
,
88 const wxCursor
&cursorStop
= wxNullCursor
);
90 virtual ~wxDropSource();
92 // do it (call this in response to a mouse button press, for example)
93 // params: if bAllowMove is false, data can be only copied
94 virtual wxDragResult
DoDragDrop(int flags
= wxDrag_CopyOnly
);
96 wxWindow
* GetWindow() { return m_window
; }
97 void SetCurrentDragPasteboard( void* dragpasteboard
) { m_currentDragPasteboard
= dragpasteboard
; }
98 bool MacInstallDefaultCursor(wxDragResult effect
) ;
99 static wxDropSource
* GetCurrentDropSource();
103 void* m_currentDragPasteboard
;
106 #endif // wxUSE_DRAG_AND_DROP