X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0f6c9085a50548c48d49874ff64c4928ba053c0c..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/interface/wx/dnd.h?ds=sidebyside diff --git a/interface/wx/dnd.h b/interface/wx/dnd.h index 6c2ed5394f..719ab99433 100644 --- a/interface/wx/dnd.h +++ b/interface/wx/dnd.h @@ -3,50 +3,19 @@ // Purpose: interface of wxDropSource and wx*DropTarget // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** - @class wxTextDropTarget - - A predefined drop target for dealing with text data. - - @library{wxcore} - @category{dnd} - - @see @ref overview_dnd, wxDropSource, wxDropTarget, wxFileDropTarget -*/ -class wxTextDropTarget : public wxDropTarget + Possible flags for drag and drop operations. + */ +enum { -public: - /** - Constructor. - */ - wxTextDropTarget(); - - /** - See wxDropTarget::OnDrop(). This function is implemented appropriately - for text, and calls OnDropText(). - */ - virtual bool OnDrop(wxCoord x, wxCoord y); - - /** - Override this function to receive dropped text. - - @param x - The x coordinate of the mouse. - @param y - The y coordinate of the mouse. - @param data - The data being dropped: a wxString. - - Return @true to accept the data, or @false to veto the operation. - */ - virtual bool OnDropText(wxCoord x, wxCoord y, const wxString& data) = 0; + wxDrag_CopyOnly = 0, ///< Allow only copying. + wxDrag_AllowMove = 1, ///< Allow moving too (copying is always allowed). + wxDrag_DefaultMove = 3 ///< Allow moving and make it default operation. }; - - /** Result returned from a wxDropSource::DoDragDrop() call. */ @@ -60,6 +29,8 @@ enum wxDragResult wxDragCancel ///< The operation was cancelled by user (not an error). }; + + /** @class wxDropTarget @@ -103,19 +74,19 @@ public: /** Called after OnDrop() returns @true. By default this will usually - GetData() and will return the suggested default value @a def. + GetData() and will return the suggested default value @a defResult. */ - virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def); + virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult defResult) = 0; /** Called when the mouse is being dragged over the drop target. By - default, this calls functions return the suggested return value @a def. + default, this calls functions return the suggested return value @a defResult. @param x The x coordinate of the mouse. @param y The y coordinate of the mouse. - @param def + @param defResult Suggested value for return value. Determined by SHIFT or CONTROL key states. @@ -123,7 +94,7 @@ public: feedback from the side of the drop source, typically in form of changing the icon. */ - virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def); + virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult defResult); /** Called when the user drops a data object on the target. Return @false @@ -146,7 +117,7 @@ public: The x coordinate of the mouse. @param y The y coordinate of the mouse. - @param def + @param defResult Suggested default for return value. Determined by SHIFT or CONTROL key states. @@ -154,7 +125,7 @@ public: feedback from the side of the drop source, typically in form of changing the icon. */ - virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def); + virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult defResult); /** Called when the mouse leaves the drop target. @@ -166,6 +137,22 @@ public: any previously associated data object. */ void SetDataObject(wxDataObject* data); + + + /** + Sets the default action for drag and drop. Use wxDragMove or + wxDragCopy to set deafult action to move or copy and use wxDragNone + (default) to set default action specified by initialization of draging + (see wxDropSource::DoDragDrop()) + */ + void SetDefaultAction(wxDragResult action); + + /** + Returns default action for drag and drop or wxDragNone if this not + specified. + */ + wxDragResult GetDefaultAction(); + }; @@ -188,8 +175,8 @@ public: This constructor requires that you must call SetData() later. Note that the type of @a iconCopy and subsequent parameters - differs between different ports: these are cursors under Windows but - icons for GTK. You should use the macro wxDROP_ICON() in portable + differs between different ports: these are cursors under Windows and OS + X but icons for GTK. You should use the macro wxDROP_ICON() in portable programs instead of directly using either of these types. @onlyfor{wxmsw,wxosx} @@ -204,16 +191,16 @@ public: The icon or cursor used for feedback when operation can't be done. */ wxDropSource(wxWindow* win = NULL, - const wxIcon& iconCopy = wxNullIcon, - const wxIcon& iconMove = wxNullIcon, - const wxIcon& iconNone = wxNullIcon); + const wxCursor& iconCopy = wxNullCursor, + const wxCursor& iconMove = wxNullCursor, + const wxCursor& iconNone = wxNullCursor); /** - The constructor for wxDataObject. + The constructor taking a wxDataObject. Note that the type of @a iconCopy and subsequent parameters - differs between different ports: these are cursors under Windows but - icons for GTK. You should use the macro wxDROP_ICON() in portable + differs between different ports: these are cursors under Windows and OS + X but icons for GTK. You should use the macro wxDROP_ICON() in portable programs instead of directly using either of these types. @onlyfor{wxmsw,wxosx} @@ -230,17 +217,15 @@ public: The icon or cursor used for feedback when operation can't be done. */ wxDropSource(wxDataObject& data, wxWindow* win = NULL, - const wxIcon& iconCopy = wxNullIcon, - const wxIcon& iconMove = wxNullIcon, - const wxIcon& iconNone = wxNullIcon); + const wxCursor& iconCopy = wxNullCursor, + const wxCursor& iconMove = wxNullCursor, + const wxCursor& iconNone = wxNullCursor); /** This constructor requires that you must call SetData() later. - Note that the type of @a iconCopy and subsequent parameters - differs between different ports: these are cursors under Windows but - icons for GTK. You should use the macro wxDROP_ICON() in portable - programs instead of directly using either of these types. + This is the wxGTK-specific version of the constructor taking wxIcon + instead of wxCursor as the other ports. @onlyfor{wxgtk} @@ -254,17 +239,15 @@ public: The icon or cursor used for feedback when operation can't be done. */ wxDropSource(wxWindow* win = NULL, - const wxCursor& iconCopy = wxNullCursor, - const wxCursor& iconMove = wxNullCursor, - const wxCursor& iconNone = wxNullCursor); + const wxIcon& iconCopy = wxNullIcon, + const wxIcon& iconMove = wxNullIcon, + const wxIcon& iconNone = wxNullIcon); /** - The constructor for wxDataObject. + The constructor taking a wxDataObject. - Note that the type of @a iconCopy and subsequent parameters - differs between different ports: these are cursors under Windows but - icons for GTK. You should use the macro wxDROP_ICON() in portable - programs instead of directly using either of these types. + This is the wxGTK-specific version of the constructor taking wxIcon + instead of wxCursor as the other ports. @onlyfor{wxgtk} @@ -280,14 +263,9 @@ public: The icon or cursor used for feedback when operation can't be done. */ wxDropSource(wxDataObject& data, wxWindow* win = NULL, - const wxCursor& iconCopy = wxNullCursor, - const wxCursor& iconMove = wxNullCursor, - const wxCursor& iconNone = wxNullCursor); - - /** - Default constructor. - */ - virtual ~wxDropSource(); + const wxIcon& iconCopy = wxNullIcon, + const wxIcon& iconMove = wxNullIcon, + const wxIcon& iconNone = wxNullIcon); /** Starts the drag-and-drop operation which will terminate when the user @@ -295,10 +273,11 @@ public: example. @param flags - If wxDrag_AllowMove is included in the flags, data may be moved and - not only copied (default). If wxDrag_DefaultMove is specified - (which includes the previous flag), this is even the default - operation. + If ::wxDrag_AllowMove is included in the flags, data may be moved + and not only copied as is the case for the default + ::wxDrag_CopyOnly. If ::wxDrag_DefaultMove is specified + (which includes the previous flag), moving is not only possible but + becomes the default operation. @return The operation requested by the user, may be ::wxDragCopy, ::wxDragMove, ::wxDragLink, ::wxDragCancel or ::wxDragNone if @@ -331,10 +310,24 @@ public: @param res The drag result to set the icon for. @param cursor - The ion to show when this drag result occurs. + The icon to show when this drag result occurs. + + @onlyfor{wxmsw,wxosx} */ void SetCursor(wxDragResult res, const wxCursor& cursor); + /** + Set the icon to use for a certain drag result. + + @param res + The drag result to set the icon for. + @param icon + The icon to show when this drag result occurs. + + @onlyfor{wxgtk} + */ + void SetIcon(wxDragResult res, const wxIcon& icon); + /** Sets the data wxDataObject associated with the drop source. This will not delete any previously associated data. @@ -344,6 +337,46 @@ public: +/** + @class wxTextDropTarget + + A predefined drop target for dealing with text data. + + @library{wxcore} + @category{dnd} + + @see @ref overview_dnd, wxDropSource, wxDropTarget, wxFileDropTarget +*/ +class wxTextDropTarget : public wxDropTarget +{ +public: + /** + Constructor. + */ + wxTextDropTarget(); + + /** + See wxDropTarget::OnDrop(). This function is implemented appropriately + for text, and calls OnDropText(). + */ + virtual bool OnDrop(wxCoord x, wxCoord y); + + /** + Override this function to receive dropped text. + + @param x + The x coordinate of the mouse. + @param y + The y coordinate of the mouse. + @param data + The data being dropped: a wxString. + + Return @true to accept the data, or @false to veto the operation. + */ + virtual bool OnDropText(wxCoord x, wxCoord y, const wxString& data) = 0; +}; + + /** @class wxFileDropTarget @@ -408,5 +441,11 @@ public: */ #define wxDROP_ICON(name) +/** + Returns true if res indicates that something was done during a DnD operation, + i.e. is neither error nor none nor cancel. +*/ +bool wxIsDragResultOk(wxDragResult res); + //@}