| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        dnd.h
 
- // Purpose:     interface of wxDropSource and wx*DropTarget
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Possible flags for drag and drop operations.
 
-  */
 
- enum
 
- {
 
-     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.
 
- */
 
- enum wxDragResult
 
- {
 
-     wxDragError,    ///< Error prevented the D&D operation from completing.
 
-     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).
 
- };
 
- /**
 
-     @class wxDropTarget
 
-     This class represents a target for a drag and drop operation. A
 
-     wxDataObject can be associated with it and by default, this object will be
 
-     filled with the data from the drag source, if the data formats supported by
 
-     the data object match the drag source data format.
 
-     There are various virtual handler functions defined in this class which may
 
-     be overridden to give visual feedback or react in a more fine-tuned way,
 
-     e.g. by not accepting data on the whole window area, but only a small
 
-     portion of it. The normal sequence of calls is OnEnter(), OnDragOver()
 
-     possibly many times, OnDrop() and finally OnData().
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, @ref overview_dataobject, wxDropSource,
 
-          wxTextDropTarget, wxFileDropTarget, wxDataFormat, wxDataObject
 
- */
 
- class wxDropTarget
 
- {
 
- public:
 
-     /**
 
-         Constructor. @a data is the data to be associated with the drop target.
 
-     */
 
-     wxDropTarget(wxDataObject* data = NULL);
 
-     /**
 
-         Destructor. Deletes the associated data object, if any.
 
-     */
 
-     virtual ~wxDropTarget();
 
-     /**
 
-         This method may only be called from within OnData(). By default, this
 
-         method copies the data from the drop source to the wxDataObject
 
-         associated with this drop target, calling its wxDataObject::SetData()
 
-         method.
 
-     */
 
-     virtual bool GetData();
 
-     /**
 
-         Called after OnDrop() returns @true. By default this will usually
 
-         GetData() and will return the suggested default value @a defResult.
 
-     */
 
-     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 defResult.
 
-         @param x
 
-             The x coordinate of the mouse.
 
-         @param y
 
-             The y coordinate of the mouse.
 
-         @param defResult
 
-             Suggested value for return value. Determined by SHIFT or CONTROL
 
-             key states.
 
-         @return The desired operation or wxDragNone. This is used for optical
 
-                  feedback from the side of the drop source, typically in form
 
-                  of changing the icon.
 
-     */
 
-     virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult defResult);
 
-     /**
 
-         Called when the user drops a data object on the target. Return @false
 
-         to veto the operation.
 
-         @param x
 
-             The x coordinate of the mouse.
 
-         @param y
 
-             The y coordinate of the mouse.
 
-         @return @true to accept the data, or @false to veto the operation.
 
-     */
 
-     virtual bool OnDrop(wxCoord x, wxCoord y);
 
-     /**
 
-         Called when the mouse enters the drop target. By default, this calls
 
-         OnDragOver().
 
-         @param x
 
-             The x coordinate of the mouse.
 
-         @param y
 
-             The y coordinate of the mouse.
 
-         @param defResult
 
-             Suggested default for return value. Determined by SHIFT or CONTROL
 
-             key states.
 
-         @return The desired operation or wxDragNone. This is used for optical
 
-                  feedback from the side of the drop source, typically in form
 
-                  of changing the icon.
 
-     */
 
-     virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult defResult);
 
-     /**
 
-         Called when the mouse leaves the drop target.
 
-     */
 
-     virtual void OnLeave();
 
-     /**
 
-         Returns the data wxDataObject associated with the drop target
 
-     */
 
-     wxDataObject *GetDataObject() const;
 
-     /**
 
-         Sets the data wxDataObject associated with the drop target and deletes
 
-         any previously associated data object.
 
-     */
 
-     void SetDataObject(wxDataObject* data);
 
-     /**
 
-        Sets the default action for drag and drop.  Use wxDragMove or
 
-        wxDragCopy to set default 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();
 
- };
 
- /**
 
-     @class wxDropSource
 
-     This class represents a source for a drag and drop operation.
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, @ref overview_dataobject, wxDropTarget,
 
-          wxTextDropTarget, wxFileDropTarget
 
- */
 
- class wxDropSource
 
- {
 
- 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 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}
 
-         @param win
 
-             The window which initiates the drag and drop operation.
 
-         @param iconCopy
 
-             The icon or cursor used for feedback for copy operation.
 
-         @param iconMove
 
-             The icon or cursor used for feedback for move operation.
 
-         @param iconNone
 
-             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);
 
-     /**
 
-         The constructor taking a wxDataObject.
 
-         Note that the type of @a iconCopy and subsequent parameters
 
-         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}
 
-         @param data
 
-             The data associated with the drop source.
 
-         @param win
 
-             The window which initiates the drag and drop operation.
 
-         @param iconCopy
 
-             The icon or cursor used for feedback for copy operation.
 
-         @param iconMove
 
-             The icon or cursor used for feedback for move operation.
 
-         @param iconNone
 
-             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);
 
-     /**
 
-         This constructor requires that you must call SetData() later.
 
-         This is the wxGTK-specific version of the constructor taking wxIcon
 
-         instead of wxCursor as the other ports.
 
-         @onlyfor{wxgtk}
 
-         @param win
 
-             The window which initiates the drag and drop operation.
 
-         @param iconCopy
 
-             The icon or cursor used for feedback for copy operation.
 
-         @param iconMove
 
-             The icon or cursor used for feedback for move operation.
 
-         @param iconNone
 
-             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);
 
-     /**
 
-         The constructor taking a wxDataObject.
 
-         This is the wxGTK-specific version of the constructor taking wxIcon
 
-         instead of wxCursor as the other ports.
 
-         @onlyfor{wxgtk}
 
-         @param data
 
-             The data associated with the drop source.
 
-         @param win
 
-             The window which initiates the drag and drop operation.
 
-         @param iconCopy
 
-             The icon or cursor used for feedback for copy operation.
 
-         @param iconMove
 
-             The icon or cursor used for feedback for move operation.
 
-         @param iconNone
 
-             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);
 
-     /**
 
-         Starts the drag-and-drop operation which will terminate when the user
 
-         releases the mouse. Call this in response to a mouse button press, for
 
-         example.
 
-         @param flags
 
-             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
 
-                  an error occurred.
 
-     */
 
-     virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly);
 
-     /**
 
-         Returns the wxDataObject object that has been assigned previously.
 
-     */
 
-     wxDataObject* GetDataObject();
 
-     /**
 
-         You may give some custom UI feedback during the drag and drop operation
 
-         by overriding this function. It is called on each mouse move, so your
 
-         implementation must not be too slow.
 
-         @param effect
 
-             The effect to implement. One of ::wxDragCopy, ::wxDragMove,
 
-             ::wxDragLink and ::wxDragNone.
 
-         @return @false if you want default feedback, or @true if you implement
 
-                 your own feedback. The return value is ignored under GTK.
 
-     */
 
-     virtual bool GiveFeedback(wxDragResult effect);
 
-     /**
 
-         Set the icon to use for a certain drag result.
 
-         @param res
 
-             The drag result to set the icon for.
 
-         @param cursor
 
-             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.
 
-     */
 
-     void SetData(wxDataObject& data);
 
- };
 
- /**
 
-     @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
 
-     This is a drop target which accepts files (dragged from File Manager or
 
-     Explorer).
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, wxDropSource, wxDropTarget, wxTextDropTarget
 
- */
 
- class wxFileDropTarget : public wxDropTarget
 
- {
 
- public:
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxFileDropTarget();
 
-     /**
 
-         See wxDropTarget::OnDrop(). This function is implemented appropriately
 
-         for files, and calls OnDropFiles().
 
-     */
 
-     virtual bool OnDrop(wxCoord x, wxCoord y);
 
-     /**
 
-         Override this function to receive dropped files.
 
-         @param x
 
-             The x coordinate of the mouse.
 
-         @param y
 
-             The y coordinate of the mouse.
 
-         @param filenames
 
-             An array of filenames.
 
-         Return @true to accept the data, or @false to veto the operation.
 
-     */
 
-     virtual bool OnDropFiles(wxCoord x, wxCoord y,
 
-                              const wxArrayString& filenames) = 0;
 
- };
 
- // ============================================================================
 
- // Global functions/macros
 
- // ============================================================================
 
- /** @addtogroup group_funcmacro_gdi */
 
- //@{
 
- /**
 
-     This macro creates either a cursor (MSW) or an icon (elsewhere) with the
 
-     given @a name (of type <tt>const char*</tt>). Under MSW, the cursor is
 
-     loaded from the resource file and the icon is loaded from XPM file under
 
-     other platforms.
 
-     This macro should be used with wxDropSource::wxDropSource().
 
-     @return wxCursor on MSW, otherwise returns a wxIcon
 
-     @header{wx/dnd.h}
 
- */
 
- #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);
 
- //@}
 
 
  |