54 std::optional<std::string>
debug_name()
const override;
68 void add_grid_tile_button(
uiBlock &block);
118 template<
class ItemT,
typename... Args>
inline ItemT &
add_item(Args &&...args);
130 void update_children_from_old(
const AbstractView &old_view)
override;
161 template<
class ViewType>
inline ViewType &
get_view()
const;
179 std::optional<StringRef> search_string = {});
215 BIFIconID override_preview_icon_id = ICON_NONE)
const;
231 std::optional<bool> should_be_active()
const override;
241 static_assert(std::is_base_of_v<AbstractGridViewItem, ItemT>,
242 "Type must derive from and implement the AbstractGridViewItem interface");
244 return dynamic_cast<ItemT &
>(
add_item(std::make_unique<ItemT>(std::forward<Args>(args)...)));
249 static_assert(std::is_base_of_v<AbstractGridView, ViewType>,
250 "Type must derive from and implement the ui::AbstractGridView interface");
251 return dynamic_cast<ViewType &
>(
view_);
virtual void build_grid_tile(const bContext &C, uiLayout &layout) const =0
friend class GridViewLayoutBuilder
std::optional< std::string > debug_name() const override
AbstractGridView & get_view() const
virtual std::unique_ptr< GridViewItemDropTarget > create_drop_target()
friend class AbstractGridView
AbstractGridViewItem(StringRef identifier)
std::unique_ptr< DropTargetInterface > create_item_drop_target() final
~AbstractGridViewItem() override=default
bool matches(const AbstractViewItem &other) const override
Map< StringRef, AbstractGridViewItem * > item_map_
ItemT & add_item(Args &&...args)
void set_tile_size(int tile_width, int tile_height)
friend class GridViewLayoutBuilder
int get_item_count() const
void foreach_filtered_item(ItemIterFn iter_fn) const
FunctionRef< void(AbstractGridViewItem &)> ItemIterFn
int get_item_count_filtered() const
void foreach_item(ItemIterFn iter_fn) const
~AbstractGridView() override=default
std::optional< int > item_count_filtered_
const GridViewStyle & get_style() const
friend class AbstractGridViewItem
friend class GridViewBuilder
virtual void build_items()=0
Vector< std::unique_ptr< AbstractGridViewItem > > items_
AbstractViewItem()=default
friend class AbstractViewItem
DropTargetInterface()=default
void build_grid_view(const bContext &C, AbstractGridView &grid_view, uiLayout &layout, std::optional< StringRef > search_string={})
GridViewBuilder(uiBlock &block)
GridViewItemDropTarget(AbstractGridView &view)
ViewType & get_view() const
PreviewGridItem(StringRef identifier, StringRef label, int preview_icon_id)
void set_is_active_fn(IsActiveFn fn)
void build_grid_tile_button(uiLayout &layout, BIFIconID override_preview_icon_id=ICON_NONE) const
std::function< void(bContext &C, PreviewGridItem &new_active)> ActivateFn
void set_on_activate_fn(ActivateFn fn)
std::function< bool()> IsActiveFn
void build_grid_tile(const bContext &C, uiLayout &layout) const override
GridViewStyle(int width, int height)