|
Blender V4.5
|
Abstract base class for defining a customizable tree-view item. More...
#include <UI_tree_view.hh>
Inherits blender::ui::AbstractViewItem, and blender::ui::TreeViewItemContainer.
Inherited by blender::ed::spreadsheet::DataSetViewItem, blender::ed::spreadsheet::InstancesTreeViewItem, blender::ed::spreadsheet::ViewerPathTreeViewItem, blender::ui::BasicTreeViewItem, blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
Public Member Functions | |
| ~AbstractTreeViewItem () override=default | |
| virtual void | build_row (uiLayout &row)=0 |
| std::optional< std::string > | debug_name () const override |
| std::unique_ptr< DropTargetInterface > | create_item_drop_target () final |
| virtual std::unique_ptr< TreeViewItemDropTarget > | create_drop_target () |
| AbstractTreeView & | get_tree_view () const |
| std::optional< rctf > | get_win_rect (const ARegion ®ion) const |
| void | begin_renaming () |
| bool | toggle_collapsed () |
| virtual bool | set_collapsed (bool collapsed) |
| virtual void | on_collapse_change (bContext &C, bool is_collapsed) |
| virtual std::optional< bool > | should_be_collapsed () const |
| void | uncollapse_by_default () |
| bool | is_collapsed () const |
| bool | is_collapsible () const |
| int | count_parents () const |
| Public Member Functions inherited from blender::ui::AbstractViewItem | |
| virtual | ~AbstractViewItem ()=default |
| virtual void | build_context_menu (bContext &C, uiLayout &column) const |
| virtual std::unique_ptr< AbstractViewItemDragController > | create_drag_controller () const |
| AbstractView & | get_view () const |
| uiButViewItem * | view_item_button () const |
| void | disable_interaction () |
| bool | is_interactive () const |
| void | disable_activatable () |
| bool | is_active () const |
| bool | is_search_highlight () const |
| virtual void | on_activate (bContext &C) |
| virtual std::optional< bool > | should_be_active () const |
| void | activate (bContext &C) |
| void | deactivate () |
| virtual bool | supports_renaming () const |
| bool | is_renaming () const |
| void | begin_renaming () |
| void | end_renaming () |
| void | rename_apply (const bContext &C) |
| bool | is_filtered_visible () const |
| Public Member Functions inherited from blender::ui::TreeViewItemContainer | |
| template<class ItemT, typename... Args> | |
| ItemT & | add_tree_item (Args &&...args) |
| AbstractTreeViewItem & | add_tree_item (std::unique_ptr< AbstractTreeViewItem > item) |
Protected Member Functions | |
| StringRef | get_rename_string () const override |
| bool | rename (const bContext &C, StringRefNull new_name) override |
| virtual bool | supports_collapsing () const |
| void | toggle_collapsed_from_view (bContext &C) |
| void | change_state_delayed () override |
| bool | matches (const AbstractViewItem &other) const override |
| void | update_from_old (const AbstractViewItem &old) override |
| virtual bool | matches_single (const AbstractTreeViewItem &other) const |
| bool | is_hovered () const |
| void | ensure_parents_uncollapsed () |
| Protected Member Functions inherited from blender::ui::AbstractViewItem | |
| AbstractViewItem ()=default | |
| void | add_rename_button (uiBlock &block) |
| virtual bool | should_be_filtered_visible (StringRefNull filter_string) const |
| Protected Member Functions inherited from blender::ui::TreeViewItemContainer | |
| void | foreach_item_recursive (ItemIterFn iter_fn, IterOptions options=IterOptions::None) const |
| void | foreach_parent (ItemIterFn iter_fn) const |
Protected Attributes | |
| std::string | label_ |
| Protected Attributes inherited from blender::ui::AbstractViewItem | |
| AbstractView * | view_ = nullptr |
| uiButViewItem * | view_item_but_ = nullptr |
| bool | is_activatable_ = true |
| bool | is_interactive_ = true |
| bool | is_active_ = false |
| bool | is_renaming_ = false |
| bool | is_highlighted_search_ = false |
| bool | is_filtered_visible_ = true |
| bool | is_always_collapsible_ = false |
| Protected Attributes inherited from blender::ui::TreeViewItemContainer | |
| Vector< std::unique_ptr< AbstractTreeViewItem > > | children_ |
| TreeViewItemContainer * | root_ = nullptr |
| AbstractTreeViewItem * | parent_ = nullptr |
| bool | is_flat_ = false |
Friends | |
| class | AbstractTreeView |
| class | TreeViewLayoutBuilder |
| class | TreeViewItemAPIWrapper |
Additional Inherited Members | |
| Public Types inherited from blender::ui::TreeViewItemContainer | |
| enum class | IterOptions { None = 0 , SkipCollapsed = 1 << 0 , SkipFiltered = 1 << 1 } |
| using | ItemIterFn = FunctionRef<void(AbstractTreeViewItem &)> |
Abstract base class for defining a customizable tree-view item.
The tree-view item defines how to build its data into a tree-row. There are implementations for common layouts, e.g. BasicTreeViewItem. It also stores state information that needs to be persistent over redraws, like the collapsed state.
Definition at line 201 of file UI_tree_view.hh.
|
overridedefault |
| void blender::ui::AbstractTreeViewItem::begin_renaming | ( | ) |
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, blender::ui::AbstractViewItem::AbstractViewItem(), begin_renaming(), C, change_state_delayed(), count_parents(), ensure_parents_uncollapsed(), final, get_rename_string(), is_collapsed(), is_collapsible(), is_hovered(), matches(), matches_single(), on_collapse_change(), override, rename(), set_collapsed(), should_be_collapsed(), supports_collapsing(), toggle_collapsed(), toggle_collapsed_from_view(), uncollapse_by_default(), and update_from_old().
Referenced by begin_renaming().
|
pure virtual |
Implemented in blender::ed::asset::shelf::AssetCatalogSelectorTree::Item, blender::ed::asset_browser::AssetCatalogTreeViewItem, blender::ed::spreadsheet::CurvesDomainViewItem, blender::ed::spreadsheet::CurvesViewItem, blender::ed::spreadsheet::EvaluteClosureViewerPathItem, blender::ed::spreadsheet::ForeachElementViewerPathItem, blender::ed::spreadsheet::GreasePencilLayerCurvesDomainViewItem, blender::ed::spreadsheet::GreasePencilLayersViewItem, blender::ed::spreadsheet::GreasePencilLayerViewItem, blender::ed::spreadsheet::GreasePencilViewItem, blender::ed::spreadsheet::GroupNodeViewerPathItem, blender::ed::spreadsheet::IDViewerPathItem, blender::ed::spreadsheet::InstanceReferenceViewItem, blender::ed::spreadsheet::InstancesViewItem, blender::ed::spreadsheet::MeshDomainViewItem, blender::ed::spreadsheet::MeshViewItem, blender::ed::spreadsheet::ModifierViewerPathItem, blender::ed::spreadsheet::PointCloudViewItem, blender::ed::spreadsheet::PointsViewItem, blender::ed::spreadsheet::RepeatViewerPathItem, blender::ed::spreadsheet::RootGeometryViewItem, blender::ed::spreadsheet::SimulationViewerPathPathItem, blender::ed::spreadsheet::ViewerNodeViewerPathItem, blender::ed::spreadsheet::VolumeGridsViewItem, blender::ui::BasicTreeViewItem, blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
References AbstractTreeView, create_drop_target(), final, get_tree_view(), and get_win_rect().
Referenced by blender::ui::TreeViewLayoutBuilder::build_row().
|
overrideprotectedvirtual |
See #AbstractView::change_state_delayed(). Overrides should call the base class implementation.
Reimplemented from blender::ui::AbstractViewItem.
Definition at line 736 of file tree_view.cc.
References blender::ui::AbstractViewItem::change_state_delayed(), set_collapsed(), and should_be_collapsed().
Referenced by begin_renaming().
| int blender::ui::AbstractTreeViewItem::count_parents | ( | ) | const |
Definition at line 638 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, i, and blender::ui::TreeViewItemContainer::parent_.
Referenced by begin_renaming(), blender::ed::asset::shelf::AssetCatalogSelectorTree::build_catalog_items_recursive(), blender::ed::asset::shelf::AssetCatalogTreeView::build_catalog_items_recursive(), and matches().
|
virtual |
Reimplemented in blender::ed::asset_browser::AssetCatalogTreeViewItem, blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
Definition at line 610 of file tree_view.cc.
Referenced by build_row(), and create_item_drop_target().
|
finalvirtual |
If an item wants to support dropping data into it, it has to return a drop target here. That is an object implementing DropTargetInterface.
Reimplemented from blender::ui::AbstractViewItem.
Definition at line 605 of file tree_view.cc.
References create_drop_target().
Referenced by blender::ui::region_views_find_drop_target_at().
|
overridevirtual |
View types should implement this to return some name or identifier of the item, which is helpful for debugging (there's nothing to identify the item just from the AbstractViewItem otherwise).
Reimplemented from blender::ui::AbstractViewItem.
Definition at line 615 of file tree_view.cc.
References label_.
|
protected |
Definition at line 748 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, and blender::ui::TreeViewItemContainer::parent_.
Referenced by begin_renaming().
|
overrideprotectedvirtual |
See AbstractViewItem::get_rename_string().
Reimplemented from blender::ui::AbstractViewItem.
Reimplemented in blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
Definition at line 579 of file tree_view.cc.
References label_.
Referenced by begin_renaming().
| AbstractTreeView & blender::ui::AbstractTreeViewItem::get_tree_view | ( | ) | const |
Definition at line 620 of file tree_view.cc.
References AbstractTreeView, and blender::ui::AbstractViewItem::get_view().
Referenced by blender::ed::asset::shelf::AssetCatalogSelectorTree::Item::build_row(), build_row(), blender::ed::asset_browser::AssetCatalogTreeViewItem::create_drag_controller(), blender::ui::bonecollections::BoneCollectionItem::create_drag_controller(), blender::ui::greasepencil::LayerGroupViewItem::create_drag_controller(), blender::ui::greasepencil::LayerViewItem::create_drag_controller(), blender::ed::spreadsheet::DataSetViewItem::get_tree(), blender::ed::spreadsheet::InstancesTreeViewItem::get_tree(), is_collapsed(), is_collapsible(), is_hovered(), blender::ed::asset_browser::AssetCatalogTreeViewItem::on_activate(), blender::ed::asset_browser::AssetCatalogTreeViewItem::rename(), blender::ed::asset_browser::AssetCatalogTreeViewItem::supports_renaming(), and uncollapse_by_default().
| std::optional< rctf > blender::ui::AbstractTreeViewItem::get_win_rect | ( | const ARegion & | region | ) | const |
Calculate the view item rectangle from its view-item button, converted to window space. Returns an unset optional if there is no view item button for this item.
Definition at line 625 of file tree_view.cc.
References uiBut::block, uiBut::rect, ui_block_to_window_rctf(), and blender::ui::AbstractViewItem::view_item_button().
Referenced by build_row(), and blender::ui::AbstractTreeView::find_hovered().
| bool blender::ui::AbstractTreeViewItem::is_collapsed | ( | ) | const |
Requires the tree to have completed reconstruction, see #is_reconstructed(). Otherwise we can't be sure about the item state.
Definition at line 672 of file tree_view.cc.
References BLI_assert_msg, get_tree_view(), and is_collapsible().
Referenced by begin_renaming(), blender::ui::bonecollections::BoneCollectionItem::on_collapse_change(), blender::ui::greasepencil::LayerGroupViewItem::on_collapse_change(), blender::ui::bonecollections::BoneCollectionItem::should_be_collapsed(), blender::ui::greasepencil::LayerGroupViewItem::should_be_collapsed(), and toggle_collapsed_from_view().
| bool blender::ui::AbstractTreeViewItem::is_collapsible | ( | ) | const |
Definition at line 723 of file tree_view.cc.
References BLI_assert_msg, blender::ui::TreeViewItemContainer::children_, get_tree_view(), blender::ui::AbstractViewItem::is_always_collapsible_, and supports_collapsing().
Referenced by begin_renaming(), is_collapsed(), and set_collapsed().
|
protected |
Can be called from the #AbstractTreeViewItem::build_row() implementation, but not earlier. The hovered state can't be queried reliably otherwise. Note that this does a linear lookup in the old block, so isn't too great performance-wise.
Definition at line 658 of file tree_view.cc.
References BLI_assert_msg, uiBut::flag, get_tree_view(), ui_block_view_find_matching_view_item_but_in_old_block(), UI_HOVER, and blender::ui::AbstractViewItem::view_item_but_.
Referenced by begin_renaming(), and blender::ed::asset_browser::AssetCatalogTreeViewItem::build_row().
|
overrideprotectedvirtual |
See #AbstractViewItem::matches().
Implements blender::ui::AbstractViewItem.
Definition at line 755 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, blender::ui::AbstractViewItem::AbstractViewItem(), count_parents(), matches_single(), and blender::ui::TreeViewItemContainer::parent_.
Referenced by begin_renaming().
|
protectedvirtual |
Compare this item to other to check if they represent the same data. Used to recognize an item from a previous redraw, to be able to keep its state (e.g. open/closed, active, etc.). Items are only matched if their parents also match. By default this just matches the item's label (if the parents match!). If that isn't good enough for a sub-class, that can override it.
TODO matches_single() is a rather temporary name, used to indicate that this only compares the item itself, not the parents. Item matching is expected to change quite a bit anyway.
Definition at line 600 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, and label_.
Referenced by begin_renaming(), and matches().
|
virtual |
Called when the view changes an item's state from expanded to collapsed, or vice versa. Will only be called if the state change is triggered through the view, not through external changes. E.g. a click on an item calls it, a change in the value returned by should_be_collapsed() to reflect an external state change does not.
Reimplemented in blender::ui::bonecollections::BoneCollectionItem, and blender::ui::greasepencil::LayerGroupViewItem.
Definition at line 704 of file tree_view.cc.
Referenced by begin_renaming(), and toggle_collapsed_from_view().
|
overrideprotectedvirtual |
See AbstractViewItem::rename().
Reimplemented from blender::ui::AbstractViewItem.
Reimplemented in blender::ed::asset_browser::AssetCatalogTreeViewItem, blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
Definition at line 584 of file tree_view.cc.
References label_.
Referenced by begin_renaming().
|
virtual |
Expand or collapse this tree view item.
Reimplemented in blender::ui::bonecollections::BoneCollectionItem, and blender::ui::greasepencil::LayerGroupViewItem.
Definition at line 691 of file tree_view.cc.
References is_collapsible().
Referenced by begin_renaming(), change_state_delayed(), blender::ui::bonecollections::BoneCollectionItem::set_collapsed(), blender::ui::greasepencil::LayerGroupViewItem::set_collapsed(), and toggle_collapsed().
|
virtual |
If the result is not empty, it controls whether the item should be collapsed or not, usually depending on the data that the view represents.
Reimplemented in blender::ui::bonecollections::BoneCollectionItem, and blender::ui::greasepencil::LayerGroupViewItem.
Definition at line 709 of file tree_view.cc.
Referenced by begin_renaming(), and change_state_delayed().
|
protectedvirtual |
Return whether the item can be collapsed. Used to disable collapsing for items with children. The default implementation returns true.
Reimplemented in blender::ui::greasepencil::LayerViewItem.
Definition at line 574 of file tree_view.cc.
Referenced by begin_renaming(), is_collapsible(), and uncollapse_by_default().
| bool blender::ui::AbstractTreeViewItem::toggle_collapsed | ( | ) |
Toggle the expanded/collapsed state.
Definition at line 679 of file tree_view.cc.
References set_collapsed().
Referenced by begin_renaming(), and toggle_collapsed_from_view().
|
protected |
Toggle the collapsed/expanded state, and call on_collapse_change() if it changed.
Definition at line 684 of file tree_view.cc.
References C, is_collapsed(), on_collapse_change(), and toggle_collapsed().
Referenced by begin_renaming().
| void blender::ui::AbstractTreeViewItem::uncollapse_by_default | ( | ) |
Make this item be uncollapsed on first draw (may later be overridden by should_be_collapsed()). Must only be done during tree building.
Definition at line 714 of file tree_view.cc.
References BLI_assert, BLI_assert_msg, get_tree_view(), and supports_collapsing().
Referenced by begin_renaming(), blender::ed::asset::shelf::AssetCatalogSelectorTree::build_catalog_items_recursive(), blender::ed::asset::shelf::AssetCatalogTreeView::build_catalog_items_recursive(), blender::ed::asset::shelf::AssetCatalogSelectorTree::build_tree(), blender::ed::asset::shelf::AssetCatalogTreeView::build_tree(), blender::ed::asset_browser::AssetCatalogTreeView::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_mesh(), and blender::ed::spreadsheet::GeometryDataSetTreeView::build_tree_for_pointcloud().
|
overrideprotectedvirtual |
See #AbstractViewItem::update_from_old().
Reimplemented from blender::ui::AbstractViewItem.
Definition at line 592 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::AbstractTreeViewItem, blender::ui::AbstractViewItem::AbstractViewItem(), and blender::ui::AbstractViewItem::update_from_old().
Referenced by begin_renaming().
|
friend |
Definition at line 202 of file UI_tree_view.hh.
References AbstractTreeView.
Referenced by AbstractTreeView, build_row(), and get_tree_view().
|
friend |
Definition at line 205 of file UI_tree_view.hh.
References TreeViewItemAPIWrapper.
Referenced by TreeViewItemAPIWrapper.
|
friend |
Definition at line 203 of file UI_tree_view.hh.
References TreeViewLayoutBuilder.
Referenced by TreeViewLayoutBuilder.
|
protected |
This label is used as the default way to identifying an item within its parent.
Definition at line 212 of file UI_tree_view.hh.
Referenced by blender::ui::BasicTreeViewItem::add_label(), blender::ui::BasicTreeViewItem::BasicTreeViewItem(), blender::ui::bonecollections::BoneCollectionItem::BoneCollectionItem(), blender::ed::asset_browser::AssetCatalogTreeViewItem::build_row(), blender::ed::spreadsheet::CurvesDomainViewItem::build_row(), blender::ed::spreadsheet::CurvesViewItem::build_row(), blender::ed::spreadsheet::EvaluteClosureViewerPathItem::build_row(), blender::ed::spreadsheet::ForeachElementViewerPathItem::build_row(), blender::ed::spreadsheet::GreasePencilLayerCurvesDomainViewItem::build_row(), blender::ed::spreadsheet::GreasePencilLayersViewItem::build_row(), blender::ed::spreadsheet::GreasePencilViewItem::build_row(), blender::ed::spreadsheet::InstancesViewItem::build_row(), blender::ed::spreadsheet::MeshDomainViewItem::build_row(), blender::ed::spreadsheet::MeshViewItem::build_row(), blender::ed::spreadsheet::PointCloudViewItem::build_row(), blender::ed::spreadsheet::PointsViewItem::build_row(), blender::ed::spreadsheet::RepeatViewerPathItem::build_row(), blender::ed::spreadsheet::RootGeometryViewItem::build_row(), blender::ed::spreadsheet::SimulationViewerPathPathItem::build_row(), blender::ed::spreadsheet::VolumeGridsViewItem::build_row(), blender::ed::spreadsheet::CurvesDomainViewItem::CurvesDomainViewItem(), blender::ed::spreadsheet::CurvesViewItem::CurvesViewItem(), debug_name(), blender::ed::spreadsheet::EvaluteClosureViewerPathItem::EvaluteClosureViewerPathItem(), blender::ed::spreadsheet::ForeachElementViewerPathItem::ForeachElementViewerPathItem(), get_rename_string(), blender::ed::spreadsheet::GreasePencilLayerCurvesDomainViewItem::GreasePencilLayerCurvesDomainViewItem(), blender::ed::spreadsheet::GreasePencilLayersViewItem::GreasePencilLayersViewItem(), blender::ed::spreadsheet::GreasePencilLayerViewItem::GreasePencilLayerViewItem(), blender::ed::spreadsheet::GreasePencilViewItem::GreasePencilViewItem(), blender::ed::spreadsheet::GroupNodeViewerPathItem::GroupNodeViewerPathItem(), blender::ed::spreadsheet::IDViewerPathItem::IDViewerPathItem(), blender::ed::spreadsheet::InstanceReferenceViewItem::InstanceReferenceViewItem(), blender::ed::spreadsheet::InstancesViewItem::InstancesViewItem(), blender::ui::greasepencil::LayerGroupViewItem::LayerGroupViewItem(), blender::ui::greasepencil::LayerViewItem::LayerViewItem(), matches_single(), blender::ed::spreadsheet::MeshDomainViewItem::MeshDomainViewItem(), blender::ed::spreadsheet::MeshViewItem::MeshViewItem(), blender::ed::spreadsheet::ModifierViewerPathItem::ModifierViewerPathItem(), blender::ed::spreadsheet::PointCloudViewItem::PointCloudViewItem(), blender::ed::spreadsheet::PointsViewItem::PointsViewItem(), rename(), blender::ed::spreadsheet::RepeatViewerPathItem::RepeatViewerPathItem(), blender::ed::spreadsheet::RootGeometryViewItem::RootGeometryViewItem(), blender::ed::spreadsheet::SimulationViewerPathPathItem::SimulationViewerPathPathItem(), blender::ed::spreadsheet::ViewerNodeViewerPathItem::ViewerNodeViewerPathItem(), and blender::ed::spreadsheet::VolumeGridsViewItem::VolumeGridsViewItem().