X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/832df1710864e21007e9f1457b11b3d7d752c6bc..e1ef506e13b7c8e96483b7fc0852dcb46688badd:/include/wx/dataview.h diff --git a/include/wx/dataview.h b/include/wx/dataview.h index c9b931d44c..a4213bd6d1 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -16,23 +16,22 @@ #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 // ---------------------------------------------------------------------------- @@ -193,15 +192,6 @@ public: { return false; } virtual unsigned int GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const = 0; - // define DnD capabilities - virtual bool IsDraggable( const wxDataViewItem &WXUNUSED(item) ) - { return false; } - virtual size_t GetDragDataSize( const wxDataViewItem &WXUNUSED(item), const wxDataFormat &WXUNUSED(format) ) - { return 0; } - virtual bool GetDragData( const wxDataViewItem &WXUNUSED(item), const wxDataFormat &WXUNUSED(format), - void* WXUNUSED(data), size_t WXUNUSED(size) ) - { return FALSE; } - // delegated notifiers virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item ); virtual bool ItemsAdded( const wxDataViewItem &parent, const wxDataViewItemArray &items ); @@ -723,6 +713,9 @@ public: 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 ; virtual void DoSetIndent() = 0; @@ -750,7 +743,10 @@ public: m_model(NULL), m_value(wxNullVariant), m_column(NULL), - m_pos(-1,-1) + m_pos(-1,-1), + m_dataObject(NULL), + m_dataBuffer(NULL), + m_dataSize(0) { } wxDataViewEvent(const wxDataViewEvent& event) @@ -760,7 +756,11 @@ public: m_model(event.m_model), m_value(event.m_value), m_column(event.m_column), - m_pos(m_pos) + m_pos(m_pos), + 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; } @@ -783,6 +783,18 @@ public: wxPoint GetPosition() const { return m_pos; } void SetPosition( int x, int y ) { m_pos.x = x; m_pos.y = y; } + // 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); } protected: @@ -793,6 +805,12 @@ protected: wxDataViewColumn *m_column; wxPoint m_pos; + wxDataObject *m_dataObject; + + wxDataFormat m_dataFormat; + void* m_dataBuffer; + size_t m_dataSize; + private: DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent) }; @@ -815,6 +833,10 @@ 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_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&); #define wxDataViewEventHandler(func) \ @@ -841,6 +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_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 @@ -928,9 +953,9 @@ public: { if (m_data) delete m_data; m_data = data; } wxClientData *GetData() const { return m_data; } - + wxVector m_values; - + private: wxClientData *m_data; }; @@ -945,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 &values, wxClientData *data = NULL ); void PrependItem( const wxVector &values, wxClientData *data = NULL ); void InsertItem( unsigned int row, const wxVector &values, wxClientData *data = NULL ); @@ -964,7 +989,7 @@ public: virtual bool SetValueByRow( const wxVariant &value, unsigned int row, unsigned int col ); - + public: wxVector m_data; wxArrayString m_cols; @@ -992,20 +1017,25 @@ public: const wxDataViewListStore *GetStore() const { return (const wxDataViewListStore*) GetModel(); } - void AppendCol( wxDataViewColumn *column, const wxString &varianttype ); - void PrependCol( wxDataViewColumn *column, const wxString &varianttype ); - void InsertCol( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype ); - - wxDataViewColumn *AppendTextCol( const wxString &label, + 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 ); + virtual bool AppendColumn( wxDataViewColumn *col ); + + wxDataViewColumn *AppendTextColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); - wxDataViewColumn *AppendToggleCol( const wxString &label, + wxDataViewColumn *AppendToggleColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); - wxDataViewColumn *AppendProgressCol( const wxString &label, + wxDataViewColumn *AppendProgressColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); - wxDataViewColumn *AppendIconTextCol( const wxString &label, + wxDataViewColumn *AppendIconTextColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); @@ -1236,16 +1266,13 @@ public: int GetChildCount( const wxDataViewItem& parent ) const { return GetStore()->GetChildCount(parent); } - void SetItemText( const wxDataViewItem& item, const wxString &text ) - { GetStore()->SetItemText(item,text); } + void SetItemText( const wxDataViewItem& item, const wxString &text ); wxString GetItemText( const wxDataViewItem& item ) const { return GetStore()->GetItemText(item); } - void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon ) - { GetStore()->SetItemIcon(item,icon); } + void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon ); const wxIcon &GetItemIcon( const wxDataViewItem& item ) const { return GetStore()->GetItemIcon(item); } - void SetItemExpandedIcon( const wxDataViewItem& item, const wxIcon &icon ) - { GetStore()->SetItemExpandedIcon(item,icon); } + void SetItemExpandedIcon( const wxDataViewItem& item, const wxIcon &icon ); const wxIcon &GetItemExpandedIcon( const wxDataViewItem& item ) const { return GetStore()->GetItemExpandedIcon(item); } void SetItemData( const wxDataViewItem& item, wxClientData *data ) @@ -1253,12 +1280,9 @@ public: wxClientData *GetItemData( const wxDataViewItem& item ) const { return GetStore()->GetItemData(item); } - void DeleteItem( const wxDataViewItem& item ) - { GetStore()->DeleteItem(item); } - void DeleteChildren( const wxDataViewItem& item ) - { GetStore()->DeleteChildren(item); } - void DeleteAllItems() - { GetStore()->DeleteAllItems(); } + void DeleteItem( const wxDataViewItem& item ); + void DeleteChildren( const wxDataViewItem& item ); + void DeleteAllItems(); void OnExpanded( wxDataViewEvent &event ); void OnCollapsed( wxDataViewEvent &event );