- // get count of all children (and grand children and ...) of this item
- size_t GetTotalNumberOfChildren() const;
+ // get count of all children (and grand children if 'recursively')
+ size_t GetChildrenCount(bool recursively = TRUE) const;
void Insert(wxGenericTreeItem *child, size_t index)
{ m_children.Insert(child, index); }
void Insert(wxGenericTreeItem *child, size_t index)
{ m_children.Insert(child, index); }
// @@ probably should use bitfields to save size
bool m_isCollapsed,
m_hasHilight, // same as focused
// @@ probably should use bitfields to save size
bool m_isCollapsed,
m_hasHilight, // same as focused
+size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, bool recursively)
+{
+ wxCHECK_MSG( item.IsOk(), 0u, "invalid tree item" );
+
+ return item.m_pItem->GetChildrenCount(recursively);
+}
+
// -----------------------------------------------------------------------------
// functions to work with tree items
// -----------------------------------------------------------------------------
wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
{
// -----------------------------------------------------------------------------
// functions to work with tree items
// -----------------------------------------------------------------------------
wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
{
return item.m_pItem->GetImage();
}
int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const
{
return item.m_pItem->GetImage();
}
int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const
{
return item.m_pItem->GetSelectedImage();
}
wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const
{
return item.m_pItem->GetSelectedImage();
}
wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const
{
return item.m_pItem->GetData();
}
void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text)
{
return item.m_pItem->GetData();
}
void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text)
{
wxClientDC dc(this);
item.m_pItem->SetText(text, dc);
}
void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image)
{
wxClientDC dc(this);
item.m_pItem->SetText(text, dc);
}
void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image)
{
item.m_pItem->SetImage(image);
}
void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image)
{
item.m_pItem->SetImage(image);
}
void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image)
{
item.m_pItem->SetSelectedImage(image);
}
void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data)
{
item.m_pItem->SetSelectedImage(image);
}
void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data)
{
item.m_pItem->SetData(data);
}
void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has)
{
item.m_pItem->SetData(data);
}
void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has)
{
return !item.m_pItem->GetChildren().IsEmpty();
}
bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const
{
return !item.m_pItem->GetChildren().IsEmpty();
}
bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const
{
- return item.m_pItem->GetChildren().Item(cookie++);
+ wxArrayTreeItems& children = item.m_pItem->GetChildren();
+ if ( (size_t)cookie < children.Count() )
+ {
+ return item.m_pItem->GetChildren().Item(cookie++);
+ }
+ else
+ {
+ // there are no more of them
+ return NULL;
+ }
wxArrayTreeItems& siblings = parent->GetChildren();
int index = siblings.Index(i);
wxASSERT( index != NOT_FOUND ); // I'm not a child of my parent?
wxArrayTreeItems& siblings = parent->GetChildren();
int index = siblings.Index(i);
wxASSERT( index != NOT_FOUND ); // I'm not a child of my parent?
wxArrayTreeItems& siblings = parent->GetChildren();
int index = siblings.Index(i);
wxASSERT( index != NOT_FOUND ); // I'm not a child of my parent?
wxArrayTreeItems& siblings = parent->GetChildren();
int index = siblings.Index(i);
wxASSERT( index != NOT_FOUND ); // I'm not a child of my parent?
// should we give a warning here?
return AddRoot(text, image, selImage, data);
}
// should we give a warning here?
return AddRoot(text, image, selImage, data);
}
if (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much
{
int startX = horizX;
int endX = horizX + 10;
if (!item->HasChildren()) endX += 20;
if (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much
{
int startX = horizX;
int endX = horizX + 10;
if (!item->HasChildren()) endX += 20;
dc.DrawLine( startX, y, endX, y );
if (item->HasPlus())
dc.DrawLine( startX, y, endX, y );
if (item->HasPlus())
{
dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
dc.SetBrush( *m_hilightBrush );
{
dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
dc.SetBrush( *m_hilightBrush );
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
if (item->GetImage() != -1)
{
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
if (item->GetImage() != -1)
{
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
if (item->GetImage() != -1)
{
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
m_imageListNormal->Draw( item->GetImage(), dc, item->GetX(), item->GetY()-1, wxIMAGELIST_DRAW_TRANSPARENT );
dc.DestroyClippingRegion();
}
if (item->GetImage() != -1)
{
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
m_imageListNormal->Draw( item->GetImage(), dc, item->GetX(), item->GetY()-1, wxIMAGELIST_DRAW_TRANSPARENT );
dc.DestroyClippingRegion();
}
dc.DrawText( item->GetText(), image_w+item->GetX(), item->GetY() );
dc.SetPen( *wxBLACK_PEN );
}
dc.DrawText( item->GetText(), image_w+item->GetX(), item->GetY() );
dc.SetPen( *wxBLACK_PEN );
}