From 8ddda15ba50407de79f9749ab840d8c9ba0dde39 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Fri, 13 Nov 2009 14:14:44 +0000 Subject: [PATCH] Implement and document wxDataViewTreeCtrl::IsContainer(), use it in the sample to not add items to non-containers git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataview.h | 5 ++++- interface/wx/dataview.h | 5 +++++ samples/dataview/dataview.cpp | 6 ++++-- src/common/datavcmn.cpp | 16 ++++++++-------- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 8be8ad3dfd..f4c86ff9ee 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -1138,7 +1138,7 @@ public: wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const; int GetChildCount( const wxDataViewItem& parent ) const; - + void SetItemText( const wxDataViewItem& item, const wxString &text ); wxString GetItemText( const wxDataViewItem& item ) const; void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon ); @@ -1212,6 +1212,9 @@ public: const wxDataViewTreeStore *GetStore() const { return (const wxDataViewTreeStore*) GetModel(); } + bool IsContainer( const wxDataViewItem& item ) const + { return GetStore()->IsContainer(item); } + void SetImageList( wxImageList *imagelist ); wxImageList* GetImageList() { return m_imageList; } diff --git a/interface/wx/dataview.h b/interface/wx/dataview.h index 2cadb8f90c..551e09607b 100644 --- a/interface/wx/dataview.h +++ b/interface/wx/dataview.h @@ -2023,6 +2023,11 @@ public: int icon = -1, wxClientData* data = NULL); + /** + Returns true if item is a container. + */ + bool IsContainer( const wxDataViewItem& item ); + /** Calls the same method from wxDataViewTreeStore but uses an index position in the image list instead of a wxIcon. diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index 3f0db083cc..6633e1dfa5 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -1092,13 +1092,15 @@ void MyFrame::OnAddTreeItem(wxCommandEvent& WXUNUSED(event)) { wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3]; wxDataViewItem selected = ctrl->GetSelection(); - ctrl->AppendItem( selected, "Item", 0 ); + if (ctrl->IsContainer(selected)) + ctrl->AppendItem( selected, "Item", 0 ); } void MyFrame::OnAddTreeContainerItem(wxCommandEvent& WXUNUSED(event)) { wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3]; wxDataViewItem selected = ctrl->GetSelection(); - ctrl->AppendContainer(selected, "Container", 0 ); + if (ctrl->IsContainer(selected)) + ctrl->AppendContainer(selected, "Container", 0 ); } diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index bb258cd33b..af4987ae39 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -1790,6 +1790,14 @@ wxDataViewTreeStore::InsertContainer(const wxDataViewItem& parent, return node->GetItem(); } +bool wxDataViewTreeStore::IsContainer( const wxDataViewItem& item ) const +{ + wxDataViewTreeStoreNode *node = FindNode( item ); + if (!node) return false; + + return node->IsContainer(); +} + wxDataViewItem wxDataViewTreeStore::GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const { wxDataViewTreeStoreContainerNode *parent_node = FindContainerNode( parent ); @@ -1963,14 +1971,6 @@ wxDataViewItem wxDataViewTreeStore::GetParent( const wxDataViewItem &item ) cons return parent->GetItem(); } -bool wxDataViewTreeStore::IsContainer( const wxDataViewItem &item ) const -{ - wxDataViewTreeStoreNode *node = FindNode( item ); - if (!node) return false; - - return node->IsContainer(); -} - unsigned int wxDataViewTreeStore::GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const { wxDataViewTreeStoreContainerNode *node = FindContainerNode( item ); -- 2.47.2