X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8eff6c56f09d20b1f18ee842efa16864d43ba930..92153555cf08cc818d6f4becfc1576d9c2add023:/include/wx/dataview.h diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 63a565efc4..d4da5c66ed 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -16,27 +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" -#if !(defined(__WXGTK20__) || defined(__WXMAC__)) || defined(__WXUNIVERSAL__) -// #if !(defined(__WXMAC__)) || defined(__WXUNIVERSAL__) +class WXDLLIMPEXP_FWD_CORE wxImageList; + +#if !(defined(__WXGTK20__) || defined(__WXOSX__)) || defined(__WXUNIVERSAL__) +// #if !(defined(__WXOSX__)) || defined(__WXUNIVERSAL__) #define wxHAS_GENERIC_DATAVIEWCTRL #endif -class WXDLLIMPEXP_FWD_CORE wxDataFormat; - -// ---------------------------------------------------------------------------- -// wxDataViewCtrl flags -// ---------------------------------------------------------------------------- - // ---------------------------------------------------------------------------- // wxDataViewCtrl globals // ---------------------------------------------------------------------------- @@ -50,6 +45,13 @@ class WXDLLIMPEXP_FWD_ADV wxDataViewModelNotifier; extern WXDLLIMPEXP_DATA_ADV(const char) wxDataViewCtrlNameStr[]; +// ---------------------------------------------------------------------------- +// wxDataViewCtrl flags +// ---------------------------------------------------------------------------- + +// size of a wxDataViewRenderer without contents: +#define wxDVC_DEFAULT_RENDERER_SIZE 20 + // the default width of new (text) columns: #define wxDVC_DEFAULT_WIDTH 80 @@ -79,10 +81,6 @@ public: void* GetID() const { return m_id; } operator const void* () const { return m_id; } -#ifdef __WXDEBUG__ - void Print( const wxString &text ) const; -#endif - private: void* m_id; }; @@ -163,7 +161,7 @@ private: WX_DECLARE_LIST_WITH_DECL(wxDataViewModelNotifier, wxDataViewModelNotifiers, class WXDLLIMPEXP_ADV); -class WXDLLIMPEXP_ADV wxDataViewModel: public wxObjectRefData +class WXDLLIMPEXP_ADV wxDataViewModel: public wxRefCounter { public: wxDataViewModel(); @@ -193,15 +191,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 ); @@ -220,7 +209,7 @@ public: // default compare function virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2, - unsigned int column, bool ascending ); + unsigned int column, bool ascending ) const; virtual bool HasDefaultCompare() const { return false; } // internal @@ -269,7 +258,7 @@ public: // compare based on index virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2, - unsigned int column, bool ascending ); + unsigned int column, bool ascending ) const; virtual bool HasDefaultCompare() const; // implement base methods @@ -285,11 +274,11 @@ public: // internal virtual bool IsVirtualListModel() const { return false; } - unsigned int GetLastIndex() const { return m_lastIndex; } + unsigned int GetCount() const { return m_hash.GetCount(); } private: wxDataViewItemArray m_hash; - unsigned int m_lastIndex; + unsigned int m_nextFreeID; bool m_ordered; }; @@ -334,7 +323,7 @@ public: // compare based on index virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2, - unsigned int column, bool ascending ); + unsigned int column, bool ascending ) const; virtual bool HasDefaultCompare() const; // implement base methods @@ -350,11 +339,10 @@ public: // internal virtual bool IsVirtualListModel() const { return true; } - unsigned int GetLastIndex() const { return m_lastIndex; } + unsigned int GetCount() const { return m_size; } private: - wxDataViewItemArray m_hash; - unsigned int m_lastIndex; + unsigned int m_size; bool m_ordered; }; #endif @@ -437,7 +425,7 @@ public: virtual int GetAlignment() const = 0; // in-place editing - virtual bool HasEditorCtrl() + virtual bool HasEditorCtrl() const { return false; } virtual wxControl* CreateEditorCtrl(wxWindow * WXUNUSED(parent), wxRect WXUNUSED(labelRect), @@ -576,11 +564,17 @@ public: wxDataViewCtrlBase(); virtual ~wxDataViewCtrlBase(); + // model + // ----- + virtual bool AssociateModel( wxDataViewModel *model ); wxDataViewModel* GetModel(); const wxDataViewModel* GetModel() const; - // short cuts + + // column management + // ----------------- + wxDataViewColumn *PrependTextColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int width = -1, wxAlignment align = wxALIGN_NOT, @@ -679,7 +673,6 @@ public: wxAlignment align = wxALIGN_CENTER, int flags = wxDATAVIEW_COL_RESIZABLE ); - virtual bool PrependColumn( wxDataViewColumn *col ); virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col ); virtual bool AppendColumn( wxDataViewColumn *col ); @@ -698,6 +691,10 @@ public: virtual wxDataViewColumn *GetSortingColumn() const = 0; + + // items management + // ---------------- + void SetIndent( int indent ) { m_indent = indent ; DoSetIndent(); } int GetIndent() const @@ -723,6 +720,27 @@ 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; +#if wxUSE_DRAG_AND_DROP + virtual bool EnableDragSource(const wxDataFormat& WXUNUSED(format)) + { return false; } + virtual bool EnableDropTarget(const wxDataFormat& WXUNUSED(format)) + { return false; } +#endif // wxUSE_DRAG_AND_DROP + + // define control visual attributes + // -------------------------------- + + virtual wxVisualAttributes GetDefaultAttributes() const + { + return GetClassDefaultAttributes(GetWindowVariant()); + } + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL) + { + return wxControl::GetCompositeControlsDefaultAttributes(variant); + } + protected: virtual void DoSetExpanderColumn() = 0 ; virtual void DoSetIndent() = 0; @@ -750,7 +768,14 @@ public: m_model(NULL), m_value(wxNullVariant), m_column(NULL), - m_pos(-1,-1) + m_pos(-1,-1), + m_cacheFrom(0), + m_cacheTo(0) +#if wxUSE_DRAG_AND_DROP + , m_dataObject(NULL), + m_dataBuffer(NULL), + m_dataSize(0) +#endif { } wxDataViewEvent(const wxDataViewEvent& event) @@ -760,7 +785,15 @@ 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_cacheFrom(event.m_cacheFrom), + m_cacheTo(event.m_cacheTo) +#if wxUSE_DRAG_AND_DROP + , m_dataObject(event.m_dataObject), + m_dataFormat(event.m_dataFormat), + m_dataBuffer(event.m_dataBuffer), + m_dataSize(event.m_dataSize) +#endif { } wxDataViewItem GetItem() const { return m_item; } @@ -783,6 +816,26 @@ public: wxPoint GetPosition() const { return m_pos; } void SetPosition( int x, int y ) { m_pos.x = x; m_pos.y = y; } + // For wxEVT_COMMAND_DATAVIEW_CACHE_HINT + int GetCacheFrom() const { return m_cacheFrom; } + int GetCacheTo() const { return m_cacheTo; } + void SetCache(int from, int to) { m_cacheFrom = from; m_cacheTo = to; } + + +#if wxUSE_DRAG_AND_DROP + // 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; } +#endif // wxUSE_DRAG_AND_DROP + virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); } protected: @@ -792,28 +845,45 @@ protected: wxVariant m_value; wxDataViewColumn *m_column; wxPoint m_pos; + int m_cacheFrom; + int m_cacheTo; + +#if wxUSE_DRAG_AND_DROP + wxDataObject *m_dataObject; + + wxDataFormat m_dataFormat; + void* m_dataBuffer; + size_t m_dataSize; +#endif // wxUSE_DRAG_AND_DROP private: DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent) }; -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEvent ) +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEvent ); + +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEvent ); -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, wxDataViewEvent ) +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEvent ); -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEvent ) +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK, wxDataViewEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, wxDataViewEvent ); +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_COLUMN_HEADER_CLICK, wxDataViewEvent ) -wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, wxDataViewEvent ) -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_CACHE_HINT, 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&); @@ -830,6 +900,7 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&); #define EVT_DATAVIEW_ITEM_COLLAPSED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_COLLAPSED, id, fn) #define EVT_DATAVIEW_ITEM_EXPANDING(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EXPANDING, id, fn) #define EVT_DATAVIEW_ITEM_EXPANDED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EXPANDED, id, fn) +#define EVT_DATAVIEW_ITEM_START_EDITING(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_START_EDITING, id, fn) #define EVT_DATAVIEW_ITEM_EDITING_STARTED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EDITING_STARTED, id, fn) #define EVT_DATAVIEW_ITEM_EDITING_DONE(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_EDITING_DONE, id, fn) #define EVT_DATAVIEW_ITEM_VALUE_CHANGED(id, fn) wx__DECLARE_DATAVIEWEVT(ITEM_VALUE_CHANGED, id, fn) @@ -840,7 +911,11 @@ typedef void (wxEvtHandler::*wxDataViewEventFunction)(wxDataViewEvent&); #define EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICKED(id, fn) wx__DECLARE_DATAVIEWEVT(COLUMN_HEADER_RIGHT_CLICK, id, fn) #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_CACHE_HINT(id, fn) wx__DECLARE_DATAVIEWEVT(CACHE_HINT, 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 @@ -868,7 +943,7 @@ public: wxDataViewSpinRenderer( int min, int max, wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, int alignment = wxDVR_DEFAULT_ALIGNMENT ); - virtual bool HasEditorCtrl() { return true; } + virtual bool HasEditorCtrl() const { return true; } virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ); virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value ); virtual bool Render( wxRect rect, wxDC *dc, int state ); @@ -881,7 +956,7 @@ private: long m_min,m_max; }; -#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXMAC__) +#if defined(wxHAS_GENERIC_DATAVIEWCTRL) || defined(__WXOSX_CARBON__) // ------------------------------------- // wxDataViewChoiceRenderer @@ -893,7 +968,7 @@ public: wxDataViewChoiceRenderer( const wxArrayString &choices, wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, int alignment = wxDVR_DEFAULT_ALIGNMENT ); - virtual bool HasEditorCtrl() { return true; } + virtual bool HasEditorCtrl() const { return true; } virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ); virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value ); virtual bool Render( wxRect rect, wxDC *dc, int state ); @@ -928,9 +1003,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,25 +1020,13 @@ public: void PrependColumn( const wxString &varianttype ); void InsertColumn( unsigned int pos, const wxString &varianttype ); void AppendColumn( const wxString &varianttype ); - - void PrependStringColumn() - { PrependColumn( wxT("string") ); } - void InsertStringColumn( unsigned int pos ) - { InsertColumn( pos, wxT("string") ); } - void AppendStringColumn() - { AppendColumn( wxT("string") ); } - + 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 ); - void DeleteItem( unsigned pos ); + void DeleteItem( unsigned int pos ); void DeleteAllItems(); - void SetStringValue( const wxString &value, unsigned int row, unsigned int col ) - { SetValueByRow( value, row, col ); } - wxString GetStringValue( unsigned int row, unsigned int col ) - { wxVariant value; GetValueByRow( value, row, col ); return value.GetString(); } - // override base virtuals virtual unsigned int GetColumnCount() const; @@ -976,12 +1039,91 @@ public: virtual bool SetValueByRow( const wxVariant &value, unsigned int row, unsigned int col ); - + public: wxVector m_data; wxArrayString m_cols; }; +//----------------------------------------------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewListCtrl: public wxDataViewCtrl +{ +public: + wxDataViewListCtrl(); + wxDataViewListCtrl( wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = wxDV_ROW_LINES, + const wxValidator& validator = wxDefaultValidator ); + ~wxDataViewListCtrl(); + + bool Create( wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = wxDV_ROW_LINES, + const wxValidator& validator = wxDefaultValidator ); + + wxDataViewListStore *GetStore() + { return (wxDataViewListStore*) GetModel(); } + const wxDataViewListStore *GetStore() const + { return (const wxDataViewListStore*) GetModel(); } + + 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 *AppendToggleColumn( const wxString &label, + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); + wxDataViewColumn *AppendProgressColumn( const wxString &label, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); + wxDataViewColumn *AppendIconTextColumn( const wxString &label, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE ); + + void AppendItem( const wxVector &values, wxClientData *data = NULL ) + { GetStore()->AppendItem( values, data ); } + void PrependItem( const wxVector &values, wxClientData *data = NULL ) + { GetStore()->PrependItem( values, data ); } + void InsertItem( unsigned int row, const wxVector &values, wxClientData *data = NULL ) + { GetStore()->InsertItem( row, values, data ); } + void DeleteItem( unsigned row ) + { GetStore()->DeleteItem( row ); } + void DeleteAllItems() + { GetStore()->DeleteAllItems(); } + + void SetValue( const wxVariant &value, unsigned int row, unsigned int col ) + { GetStore()->SetValueByRow( value, row, col ); + GetStore()->RowValueChanged( row, col); } + void GetValue( wxVariant &value, unsigned int row, unsigned int col ) + { GetStore()->GetValueByRow( value, row, col ); } + + void SetTextValue( const wxString &value, unsigned int row, unsigned int col ) + { GetStore()->SetValueByRow( value, row, col ); + GetStore()->RowValueChanged( row, col); } + wxString GetTextValue( unsigned int row, unsigned int col ) const + { wxVariant value; GetStore()->GetValueByRow( value, row, col ); return value.GetString(); } + + void SetToggleValue( bool value, unsigned int row, unsigned int col ) + { GetStore()->SetValueByRow( value, row, col ); + GetStore()->RowValueChanged( row, col); } + bool GetToggleValue( unsigned int row, unsigned int col ) const + { wxVariant value; GetStore()->GetValueByRow( value, row, col ); return value.GetBool(); } + + void OnSize( wxSizeEvent &event ); + +private: + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewListCtrl) +}; //----------------------------------------------------------------------------- // wxDataViewTreeStore @@ -1110,7 +1252,7 @@ public: virtual unsigned int GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const; virtual int Compare( const wxDataViewItem &item1, const wxDataViewItem &item2, - unsigned int column, bool ascending ); + unsigned int column, bool ascending ) const; virtual bool HasDefaultCompare() const { return true; } @@ -1127,6 +1269,8 @@ public: wxDataViewTreeStoreNode *m_root; }; +//----------------------------------------------------------------------------- + class WXDLLIMPEXP_ADV wxDataViewTreeCtrl: public wxDataViewCtrl { public: @@ -1172,16 +1316,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 ) @@ -1189,12 +1330,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 );