]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/ole/dropsrc.h
OS X savvy implementation
[wxWidgets.git] / include / wx / msw / ole / dropsrc.h
index e16968b28520406b360ee4eb3d31cdfc5d6a5412..2b383a3ab6c51da1f342cbc07920ed7aaec0db20 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        ole/dropsrc.h
 // Purpose:     declaration of the wxDropSource class
 // Author:      Vadim Zeitlin
-// Modified by: 
+// Modified by:
 // Created:     06.03.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 #ifndef   _WX_OLEDROPSRC_H
 #define   _WX_OLEDROPSRC_H
 
-#ifdef __GNUG__
-#pragma interface
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma interface
 #endif
 
-#if !USE_DRAG_AND_DROP
-  #error  "You should #define USE_DRAG_AND_DROP to 1 to compile this file!"
-#endif  //WX_DRAG_DROP
+#if wxUSE_DRAG_AND_DROP
 
 // ----------------------------------------------------------------------------
 // forward declarations
 // ----------------------------------------------------------------------------
+
 class wxIDropSource;
-class wxDataObject;
+class WXDLLEXPORT wxDataObject;
+class WXDLLEXPORT wxWindow;
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+// this macro may be used instead for wxDropSource ctor arguments: it will use
+// the cursor 'name' from the resources under MSW, but will expand to
+// something else under GTK. If you don't use it, you will have to use #ifdef
+// in the application code.
+#define wxDROP_ICON(name)   wxCursor(_T(#name))
 
 // ----------------------------------------------------------------------------
 // wxDropSource is used to start the drag-&-drop operation on associated
 // wxDataObject object. It's responsible for giving UI feedback while dragging.
 // ----------------------------------------------------------------------------
-class wxDropSource
+
+class WXDLLEXPORT wxDropSource : public wxDropSourceBase
 {
 public:
-  enum DragResult
-  {
-    Error,    // error prevented the d&d operation from completing
-    None,     // drag target didn't accept the data
-    Copy,     // the data was successfully copied
-    Move,     // the data was successfully moved
-    Cancel    // the operation was cancelled by user (not an error)
-  };
-
-  // ctors: if you use default ctor you must call SetData() later!
-  // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
-  //     compatibility
-  wxDropSource(wxWindow *win = NULL);
-  wxDropSource(wxDataObject& data, wxWindow *win = NULL);
-
-  void SetData(wxDataObject& data);
-
-  virtual ~wxDropSource();
-
-  // do it (call this in response to a mouse button press, for example)
-  // params: if bAllowMove is false, data can be only copied
-  DragResult DoDragDrop(bool bAllowMove = FALSE);
-
-  // overridable: you may give some custom UI feedback during d&d operation
-  // in this function (it's called on each mouse move, so it shouldn't be too
-  // slow). Just return false if you want default feedback.
-  virtual bool GiveFeedback(DragResult effect, bool bScrolling);
+    // ctors: if you use default ctor you must call SetData() later!
+    //
+    // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
+    //     compatibility, as well as both icon parameters
+    wxDropSource(wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
+    wxDropSource(wxDataObject& data,
+                 wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
 
-protected:
-  void Init();
+    virtual ~wxDropSource();
+
+    // do it (call this in response to a mouse button press, for example)
+    // params: if bAllowMove is false, data can be only copied
+    virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly);
+
+    // overridable: you may give some custom UI feedback during d&d operation
+    // in this function (it's called on each mouse move, so it shouldn't be
+    // too slow). Just return false if you want default feedback.
+    virtual bool GiveFeedback(wxDragResult effect);
 
-  wxDataObject  *m_pData;         // pointer to associated data object
+protected:
+    void Init();
 
 private:
-  wxIDropSource *m_pIDropSource;  // the pointer to COM interface
+    wxIDropSource *m_pIDropSource;  // the pointer to COM interface
+
+    DECLARE_NO_COPY_CLASS(wxDropSource)
 };
 
-#endif  //_WX_OLEDROPSRC_H
\ No newline at end of file
+#endif  //wxUSE_DRAG_AND_DROP
+
+#endif  //_WX_OLEDROPSRC_H