]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataview.h
implement wxChoicebook::SetWindowVariant() by forwarding it to wxChoice (see #10398)
[wxWidgets.git] / include / wx / dataview.h
index 29a658f66b0d7924b21ad69585e0c3c454bf0345..a4213bd6d197ab71ea7593beb9a5ce0224d8a621 100644 (file)
 
 #if wxUSE_DATAVIEWCTRL
 
-#include "wx/control.h"
 #include "wx/textctrl.h"
 #include "wx/headercol.h"
 #include "wx/variant.h"
 #include "wx/dynarray.h"
 #include "wx/icon.h"
-#include "wx/imaglist.h"
 #include "wx/weakref.h"
 #include "wx/vector.h"
+#include "wx/dataobj.h"
+
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 #if !(defined(__WXGTK20__) || defined(__WXMAC__)) || defined(__WXUNIVERSAL__)
 // #if !(defined(__WXMAC__)) || defined(__WXUNIVERSAL__)
     #define wxHAS_GENERIC_DATAVIEWCTRL
 #endif
 
-class WXDLLIMPEXP_FWD_CORE wxDataFormat;
-
 // ----------------------------------------------------------------------------
 // wxDataViewCtrl flags
 // ----------------------------------------------------------------------------
@@ -713,8 +712,9 @@ public:
                                 const wxDataViewColumn *column = NULL ) = 0;
     virtual void HitTest( const wxPoint & point, wxDataViewItem &item, wxDataViewColumn* &column ) const = 0;
     virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const = 0;
-    
+
     virtual bool EnableDragSource( const wxDataFormat &format );
+    virtual bool EnableDropTarget( const wxDataFormat &format );
 
 protected:
     virtual void DoSetExpanderColumn() = 0 ;
@@ -744,8 +744,9 @@ public:
         m_value(wxNullVariant),
         m_column(NULL),
         m_pos(-1,-1),
-        m_isDraggable(false),
-        m_dragDataSize(-1)
+        m_dataObject(NULL),
+        m_dataBuffer(NULL),
+        m_dataSize(0)
         { }
 
     wxDataViewEvent(const wxDataViewEvent& event)
@@ -756,8 +757,10 @@ public:
         m_value(event.m_value),
         m_column(event.m_column),
         m_pos(m_pos),
-        m_isDraggable(event.m_isDraggable),
-        m_dragDataSize(event.m_dragDataSize)
+        m_dataObject(event.m_dataObject),
+        m_dataFormat(event.m_dataFormat),
+        m_dataBuffer(event.m_dataBuffer),
+        m_dataSize(event.m_dataSize)
         { }
 
     wxDataViewItem GetItem() const { return m_item; }
@@ -780,15 +783,17 @@ public:
     wxPoint GetPosition() const { return m_pos; }
     void SetPosition( int x, int y ) { m_pos.x = x; m_pos.y = y; }
 
-    // For Drag operations
-    bool IsDraggable() const { return m_isDraggable; }
-    void SetDraggable( bool can_drag = true ) { m_isDraggable = can_drag; }
-    int GetDragDataSize() const { return m_dragDataSize; }
-    void SetDragDataSize( int size ) { m_dragDataSize = size; }
-    void* GetDragDataBuffer() const { return m_dragDataBuffer; }
-    void SetDragDataBuffer( void *buffer ) { m_dragDataBuffer = buffer; }
-    wxDataFormat GetDataFormat() const { return m_dataFormat; }
+    // For drag operations
+    void SetDataObject( wxDataObject *obj ) { m_dataObject = obj; }
+    wxDataObject *GetDataObject() const { return m_dataObject; }
+
+    // For drop operations
     void SetDataFormat( const wxDataFormat &format ) { m_dataFormat = format; }
+    wxDataFormat GetDataFormat() const { return m_dataFormat; }
+    void SetDataSize( size_t size ) { m_dataSize = size; }
+    size_t GetDataSize() const { return m_dataSize; }
+    void SetDataBuffer( void* buf ) { m_dataBuffer = buf;}
+    void *GetDataBuffer() const { return m_dataBuffer; }
 
     virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); }
 
@@ -799,11 +804,12 @@ protected:
     wxVariant           m_value;
     wxDataViewColumn   *m_column;
     wxPoint             m_pos;
-    
-    bool                m_isDraggable;
-    int                 m_dragDataSize;
-    void               *m_dragDataBuffer;
+
+    wxDataObject       *m_dataObject;
+
     wxDataFormat        m_dataFormat;
+    void*               m_dataBuffer;
+    size_t              m_dataSize;
 
 private:
     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent)
@@ -827,9 +833,9 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_
 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED, wxDataViewEvent )
 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED, wxDataViewEvent )
 
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_DRAGGABLE, wxDataViewEvent )
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_GET_DRAG_DATA_SIZE, wxDataViewEvent )
-wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_GET_DRAG_DATA, wxDataViewEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG, wxDataViewEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, wxDataViewEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_DROP, wxDataViewEvent )
 
 typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
 
@@ -857,9 +863,9 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&);
 #define EVT_DATAVIEW_COLUMN_SORTED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_SORTED, id, fn)
 #define EVT_DATAVIEW_COLUMN_REORDERED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_REORDERED, id, fn)
 
-#define EVT_DATAVIEW_ITEM_DRAGGABLE(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_DRAGGABLE, id, fn)
-#define EVT_DATAVIEW_ITEM_GET_DRAG_DATA_SIZE(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_GET_DRAG_DATA_SIZE, id, fn)
-#define EVT_DATAVIEW_ITEM_GET_DRAG_DATA(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_GET_DRAG_DATA, id, fn)
+#define EVT_DATAVIEW_ITEM_BEGIN_DRAG(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_BEGIN_DRAG, id, fn)
+#define EVT_DATAVIEW_ITEM_DROP_POSSIBLE(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_DROP_POSSIBLE, id, fn)
+#define EVT_DATAVIEW_ITEM_DROP(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_DROP, id, fn)
 
 #ifdef wxHAS_GENERIC_DATAVIEWCTRL
     // this symbol doesn't follow the convention for wxUSE_XXX symbols which
@@ -947,9 +953,9 @@ public:
         { if (m_data) delete m_data; m_data = data; }
     wxClientData *GetData() const
         { return m_data; }
-        
+
     wxVector<wxVariant>  m_values;
-    
+
 private:
     wxClientData    *m_data;
 };
@@ -964,7 +970,7 @@ public:
     void PrependColumn( const wxString &varianttype );
     void InsertColumn( unsigned int pos, const wxString &varianttype );
     void AppendColumn( const wxString &varianttype );
-    
+
     void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
     void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
     void InsertItem(  unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
@@ -983,7 +989,7 @@ public:
     virtual bool SetValueByRow( const wxVariant &value,
                            unsigned int row, unsigned int col );
 
-    
+
 public:
     wxVector<wxDataViewListStoreLine*> m_data;
     wxArrayString                      m_cols;
@@ -1014,7 +1020,7 @@ public:
     bool AppendColumn( wxDataViewColumn *column, const wxString &varianttype );
     bool PrependColumn( wxDataViewColumn *column, const wxString &varianttype );
     bool InsertColumn( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype );
-                    
+
     // overridden from base class
     virtual bool PrependColumn( wxDataViewColumn *col );
     virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col );