Blender V5.0
blender::ui::TreeViewItemContainer Class Reference

#include <UI_tree_view.hh>

Inherited by blender::ui::AbstractTreeView, and blender::ui::AbstractTreeViewItem.

Public Types

enum class  IterOptions { None = 0 , SkipCollapsed = 1 << 0 , SkipFiltered = 1 << 1 }
using ItemIterFn = FunctionRef<void(AbstractTreeViewItem &)>

Public Member Functions

template<class ItemT, typename... Args>
ItemT & add_tree_item (Args &&...args)
AbstractTreeViewItemadd_tree_item (std::unique_ptr< AbstractTreeViewItem > item)

Protected Member Functions

void foreach_item_recursive (ItemIterFn iter_fn, IterOptions options=IterOptions::None) const
void foreach_parent (ItemIterFn iter_fn) const

Protected Attributes

Vector< std::unique_ptr< AbstractTreeViewItem > > children_
TreeViewItemContainer * root_ = nullptr
AbstractTreeViewItemparent_ = nullptr
bool is_flat_ = false

Friends

class AbstractTreeView
class AbstractTreeViewItem

Detailed Description

Both the tree-view (as the root of the tree) and the items can have children. This is the base class for both, to store and manage child items. Children are owned by their parent container (tree-view or item).

That means this type can be used whenever either an AbstractTreeView or an AbstractTreeViewItem is needed, but the TreeViewOrItem alias is a better name to use then.

Definition at line 49 of file UI_tree_view.hh.

Member Typedef Documentation

◆ ItemIterFn

Member Enumeration Documentation

◆ IterOptions

Enumerator
None 
SkipCollapsed 
SkipFiltered 

Definition at line 70 of file UI_tree_view.hh.

Member Function Documentation

◆ add_tree_item() [1/2]

template<class ItemT, typename... Args>
ItemT & blender::ui::TreeViewItemContainer::add_tree_item ( Args &&... args)
inline

Convenience wrapper constructing the item by forwarding given arguments to the constructor of the type (ItemT).

E.g. if your tree-item type has the following constructor:

MyTreeItem(std::string str, int i);
#define str(s)
i
Definition text_draw.cc:230

You can add an item like this:

ItemT & add_tree_item(Args &&...args)

Definition at line 449 of file UI_tree_view.hh.

References add_tree_item().

Referenced by add_tree_item(), blender::ed::spreadsheet::ViewerPathTreeView::add_viewer_path_elem(), blender::ed::spreadsheet::ViewerDataTreeView::build_bundle_children(), blender::ed::asset::shelf::AssetCatalogSelectorTree::build_catalog_items_recursive(), blender::ed::asset::shelf::AssetCatalogTreeView::build_catalog_items_recursive(), blender::ed::spreadsheet::ViewerDataTreeView::build_closure_children(), blender::ed::asset::shelf::AssetCatalogSelectorTree::build_tree(), blender::ed::asset::shelf::AssetCatalogTreeView::build_tree(), blender::ed::object::shapekey::ShapeKeyTreeView::build_tree(), blender::ed::spreadsheet::GeometryInstancesTreeView::build_tree(), blender::ed::spreadsheet::ViewerDataTreeView::build_tree(), blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_curves(), blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_grease_pencil(), blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_instances(), blender::ed::spreadsheet::GeometryInstancesTreeView::build_tree_for_instances(), blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_mesh(), blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_pointcloud(), and blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_volume().

◆ add_tree_item() [2/2]

AbstractTreeViewItem & blender::ui::TreeViewItemContainer::add_tree_item ( std::unique_ptr< AbstractTreeViewItem > item)

Add an already constructed tree item to this parent. Ownership is moved to it. All tree items must be added through this, it handles important invariants!

Definition at line 51 of file tree_view.cc.

References AbstractTreeView, AbstractTreeViewItem, children_, parent_, blender::ui::AbstractView::register_item(), and root_.

◆ foreach_item_recursive()

◆ foreach_parent()

void blender::ui::TreeViewItemContainer::foreach_parent ( ItemIterFn iter_fn) const
protected

◆ AbstractTreeView

friend class AbstractTreeView
friend

Definition at line 50 of file UI_tree_view.hh.

References AbstractTreeView.

Referenced by AbstractTreeView, and add_tree_item().

◆ AbstractTreeViewItem

Member Data Documentation

◆ children_

Vector<std::unique_ptr<AbstractTreeViewItem> > blender::ui::TreeViewItemContainer::children_
protected

◆ is_flat_

bool blender::ui::TreeViewItemContainer::is_flat_ = false
protected

Can be set to true to indicate that all of the children items do not have children themselves. In this case, no space is reserved for the chevron.

Definition at line 67 of file UI_tree_view.hh.

Referenced by blender::ed::object::shapekey::ShapeKeyTreeView::ShapeKeyTreeView(), and blender::ed::spreadsheet::ViewerPathTreeView::ViewerPathTreeView().

◆ parent_

◆ root_

TreeViewItemContainer* blender::ui::TreeViewItemContainer::root_ = nullptr
protected

Adding the first item to the root will set this, then it's passed on to all children.

Definition at line 59 of file UI_tree_view.hh.

Referenced by add_tree_item().


The documentation for this class was generated from the following files: