Ejemplo n.º 1
0
bool TreeModelFilter::ItemIsVisible(const wxDataViewItem& item) const
{
    if (!item.IsOk()) return true;

    Row row(item, *const_cast<TreeModelFilter*>(this));
    return ItemIsVisible(row);
}
Ejemplo n.º 2
0
// If the background is a bitmap, and a tree is expanded/collapsed we
// need to redraw the entire background because windows moves the bitmap
// up (on collapse) destroying the position of the background.
void VividTree::OnTvnItemexpanding(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	if ( GetBkMode() == VividTree::BK_MODE_BMP && ItemIsVisible( pNMTreeView->itemNew.hItem ) )
		Invalidate();  // redraw everything
	*pResult = 0;
}
Ejemplo n.º 3
0
void TreeModelFilter::ForeachNode(const VisitFunction& visitFunction)
{
	_childModel->ForeachNode([&] (Row& row)
	{
		// Only visit unfiltered items
        if (ItemIsVisible(row))
		{
			visitFunction(row);
		}
	});
}
Ejemplo n.º 4
0
wxDataViewItem TreeModelFilter::FindInteger(long needle, int column)
{
	return FindRecursiveUsingRows(getRootNode(), [&] (Row& row)->bool
	{
        if (!ItemIsVisible(row))
		{
			return false; // skip filtered items
		}

		return row[GetColumns()[column]].getInteger() == needle;
	});
}
Ejemplo n.º 5
0
wxDataViewItem TreeModelFilter::FindString(const std::string& needle, int column)
{
	return FindRecursiveUsingRows(getRootNode(), [&] (Row& row)->bool
	{
        if (!ItemIsVisible(row))
		{
			return false; // skip filtered items
		}

		return static_cast<std::string>(row[GetColumns()[column]]) == needle;
	});
}
Ejemplo n.º 6
0
unsigned int TreeModelFilter::GetChildren(const wxDataViewItem& item, wxDataViewItemArray& children) const
{
	if (_filterColumn == NULL && !_customVisibleFunc)
	{
		return _childModel->GetChildren(item, children);
	}

	// Get the raw child list
	wxDataViewItemArray unfilteredChildren;
	_childModel->GetChildren(item, unfilteredChildren);

	// Only add the visible ones to the result set
	std::for_each(unfilteredChildren.begin(), unfilteredChildren.end(), [&] (const wxDataViewItem& item)
	{
        if (ItemIsVisible(item))
		{
			children.Add(item);
		}
	});

	return children.size();
}