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
This commit is contained in:
Robert Roebling
2009-11-13 14:14:44 +00:00
parent a53f722ff2
commit 8ddda15ba5
4 changed files with 21 additions and 11 deletions

View File

@@ -1138,7 +1138,7 @@ public:
wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const; wxDataViewItem GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const;
int GetChildCount( const wxDataViewItem& parent ) const; int GetChildCount( const wxDataViewItem& parent ) const;
void SetItemText( const wxDataViewItem& item, const wxString &text ); void SetItemText( const wxDataViewItem& item, const wxString &text );
wxString GetItemText( const wxDataViewItem& item ) const; wxString GetItemText( const wxDataViewItem& item ) const;
void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon ); void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon );
@@ -1212,6 +1212,9 @@ public:
const wxDataViewTreeStore *GetStore() const const wxDataViewTreeStore *GetStore() const
{ return (const wxDataViewTreeStore*) GetModel(); } { return (const wxDataViewTreeStore*) GetModel(); }
bool IsContainer( const wxDataViewItem& item ) const
{ return GetStore()->IsContainer(item); }
void SetImageList( wxImageList *imagelist ); void SetImageList( wxImageList *imagelist );
wxImageList* GetImageList() { return m_imageList; } wxImageList* GetImageList() { return m_imageList; }

View File

@@ -2023,6 +2023,11 @@ public:
int icon = -1, int icon = -1,
wxClientData* data = NULL); wxClientData* data = NULL);
/**
Returns true if item is a container.
*/
bool IsContainer( const wxDataViewItem& item );
/** /**
Calls the same method from wxDataViewTreeStore but uses Calls the same method from wxDataViewTreeStore but uses
an index position in the image list instead of a wxIcon. an index position in the image list instead of a wxIcon.

View File

@@ -1092,13 +1092,15 @@ void MyFrame::OnAddTreeItem(wxCommandEvent& WXUNUSED(event))
{ {
wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3]; wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3];
wxDataViewItem selected = ctrl->GetSelection(); wxDataViewItem selected = ctrl->GetSelection();
ctrl->AppendItem( selected, "Item", 0 ); if (ctrl->IsContainer(selected))
ctrl->AppendItem( selected, "Item", 0 );
} }
void MyFrame::OnAddTreeContainerItem(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnAddTreeContainerItem(wxCommandEvent& WXUNUSED(event))
{ {
wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3]; wxDataViewTreeCtrl* ctrl = (wxDataViewTreeCtrl*) m_ctrl[3];
wxDataViewItem selected = ctrl->GetSelection(); wxDataViewItem selected = ctrl->GetSelection();
ctrl->AppendContainer(selected, "Container", 0 ); if (ctrl->IsContainer(selected))
ctrl->AppendContainer(selected, "Container", 0 );
} }

View File

@@ -1790,6 +1790,14 @@ wxDataViewTreeStore::InsertContainer(const wxDataViewItem& parent,
return node->GetItem(); 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 wxDataViewItem wxDataViewTreeStore::GetNthChild( const wxDataViewItem& parent, unsigned int pos ) const
{ {
wxDataViewTreeStoreContainerNode *parent_node = FindContainerNode( parent ); wxDataViewTreeStoreContainerNode *parent_node = FindContainerNode( parent );
@@ -1963,14 +1971,6 @@ wxDataViewItem wxDataViewTreeStore::GetParent( const wxDataViewItem &item ) cons
return parent->GetItem(); 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 unsigned int wxDataViewTreeStore::GetChildren( const wxDataViewItem &item, wxDataViewItemArray &children ) const
{ {
wxDataViewTreeStoreContainerNode *node = FindContainerNode( item ); wxDataViewTreeStoreContainerNode *node = FindContainerNode( item );