|
Blender V4.3
|
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::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) |
| void | uncollapse_by_default () |
| bool | is_collapsed () const |
| bool | is_collapsible () const |
| int | count_parents () const |
| virtual void | on_collapse_change (bContext &C, bool is_collapsed) |
| virtual std::optional< bool > | should_be_collapsed () 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 |
Protected Attributes inherited from blender::ui::TreeViewItemContainer | |
| Vector< std::unique_ptr< AbstractTreeViewItem > > | children_ |
| TreeViewItemContainer * | root_ = nullptr |
| AbstractTreeViewItem * | parent_ = nullptr |
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 183 of file UI_tree_view.hh.
|
overridedefault |
| void blender::ui::AbstractTreeViewItem::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::GreasePencilLayerCurvesDomainViewItem, blender::ed::spreadsheet::GreasePencilLayersViewItem, blender::ed::spreadsheet::GreasePencilLayerViewItem, blender::ed::spreadsheet::GreasePencilViewItem, blender::ed::spreadsheet::InstanceReferenceViewItem, blender::ed::spreadsheet::InstancesViewItem, blender::ed::spreadsheet::MeshDomainViewItem, blender::ed::spreadsheet::MeshViewItem, blender::ed::spreadsheet::PointCloudViewItem, blender::ed::spreadsheet::PointsViewItem, blender::ed::spreadsheet::RootGeometryViewItem, blender::ed::spreadsheet::VolumeGridsViewItem, blender::ui::BasicTreeViewItem, blender::ui::bonecollections::BoneCollectionItem, blender::ui::greasepencil::LayerGroupViewItem, and blender::ui::greasepencil::LayerViewItem.
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 678 of file tree_view.cc.
References blender::ui::AbstractViewItem::change_state_delayed(), set_collapsed(), and should_be_collapsed().
| int blender::ui::AbstractTreeViewItem::count_parents | ( | ) | const |
Definition at line 583 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::parent_.
Referenced by 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 555 of file tree_view.cc.
Referenced by 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 550 of file tree_view.cc.
References create_drop_target().
|
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 560 of file tree_view.cc.
References label_.
|
protected |
Definition at line 690 of file tree_view.cc.
References blender::ui::TreeViewItemContainer::parent_.
|
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 524 of file tree_view.cc.
References label_.
| AbstractTreeView & blender::ui::AbstractTreeViewItem::get_tree_view | ( | ) | const |
Definition at line 565 of file tree_view.cc.
References blender::ui::AbstractViewItem::get_view().
Referenced by blender::ed::asset::shelf::AssetCatalogSelectorTree::Item::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 570 of file tree_view.cc.
References uiBut::block, uiBut::rect, ui_block_to_window_rctf(), and blender::ui::AbstractViewItem::view_item_button().
Referenced by blender::ui::TreeViewItemDropTarget::choose_drop_location(), 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 617 of file tree_view.cc.
References BLI_assert_msg, get_tree_view(), and is_collapsible().
Referenced by blender::ui::TreeViewItemDropTarget::choose_drop_location(), blender::ui::bonecollections::BoneCollectionItem::on_collapse_change(), blender::ui::bonecollections::BoneCollectionItem::should_be_collapsed(), and toggle_collapsed_from_view().
| bool blender::ui::AbstractTreeViewItem::is_collapsible | ( | ) | const |
Definition at line 651 of file tree_view.cc.
References BLI_assert_msg, blender::ui::TreeViewItemContainer::children_, get_tree_view(), and supports_collapsing().
Referenced by blender::ui::TreeViewItemDropTarget::choose_drop_location(), 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 603 of file tree_view.cc.
References BLI_assert_msg, uiBut::block, 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 blender::ed::asset_browser::AssetCatalogTreeViewItem::build_row().
|
overrideprotectedvirtual |
See AbstractViewItem::matches().
Implements blender::ui::AbstractViewItem.
Definition at line 697 of file tree_view.cc.
References count_parents(), matches_single(), and blender::ui::TreeViewItemContainer::parent_.
|
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 545 of file tree_view.cc.
References label_.
Referenced by 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.
Definition at line 661 of file tree_view.cc.
Referenced by 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 529 of file tree_view.cc.
References label_.
|
virtual |
Expand or collapse this tree view item.
Reimplemented in blender::ui::bonecollections::BoneCollectionItem.
Definition at line 629 of file tree_view.cc.
References is_collapsible().
Referenced by change_state_delayed(), blender::ui::bonecollections::BoneCollectionItem::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.
Definition at line 666 of file tree_view.cc.
Referenced by 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 519 of file tree_view.cc.
Referenced by is_collapsible(), and uncollapse_by_default().
| bool blender::ui::AbstractTreeViewItem::toggle_collapsed | ( | ) |
Toggle the expanded/collapsed state.
Definition at line 624 of file tree_view.cc.
References set_collapsed().
Referenced by toggle_collapsed_from_view().
|
protected |
Toggle the collapsed/expanded state, and call on_collapse_change() if it changed.
Definition at line 671 of file tree_view.cc.
References is_collapsed(), on_collapse_change(), and toggle_collapsed().
| 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 642 of file tree_view.cc.
References BLI_assert, BLI_assert_msg, get_tree_view(), and supports_collapsing().
Referenced by 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 537 of file tree_view.cc.
References blender::ui::AbstractViewItem::update_from_old().
|
friend |
Definition at line 184 of file UI_tree_view.hh.
|
friend |
Definition at line 187 of file UI_tree_view.hh.
|
friend |
Definition at line 185 of file UI_tree_view.hh.
|
protected |
This label is used as the default way to identifying an item within its parent.
Definition at line 194 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::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::RootGeometryViewItem::build_row(), blender::ed::spreadsheet::VolumeGridsViewItem::build_row(), blender::ed::spreadsheet::CurvesDomainViewItem::CurvesDomainViewItem(), blender::ed::spreadsheet::CurvesViewItem::CurvesViewItem(), debug_name(), 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::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::PointCloudViewItem::PointCloudViewItem(), blender::ed::spreadsheet::PointsViewItem::PointsViewItem(), rename(), blender::ed::spreadsheet::RootGeometryViewItem::RootGeometryViewItem(), and blender::ed::spreadsheet::VolumeGridsViewItem::VolumeGridsViewItem().