30class AbstractGridView;
31class GridViewItemDropTarget;
50 std::optional<std::string>
debug_name()
const override;
64 static
void grid_tile_click_fn(
bContext *,
void *but_arg1,
void *);
65 void add_grid_tile_button(
uiBlock &block);
100 void foreach_filtered_item(
ItemIterFn iter_fn)
const;
115 template<
class ItemT,
typename... Args>
inline ItemT &add_item(Args &&...args);
117 int get_item_count()
const;
118 int get_item_count_filtered()
const;
120 void set_tile_size(
int tile_width,
int tile_height);
127 void update_children_from_old(
const AbstractView &old_view)
override;
158 template<
class ViewType>
inline ViewType &get_view()
const;
173 void build_grid_view(
const bContext &C,
177 std::optional<StringRef> search_string = {});
202 bool hide_label_ =
false;
206 int preview_icon_id = ICON_NONE;
212 void build_grid_tile_button(
uiLayout &layout,
213 BIFIconID override_preview_icon_id = ICON_NONE)
const;
229 std::optional<bool> should_be_active()
const override;
230 void on_activate(
bContext &C)
override;
239 static_assert(std::is_base_of<AbstractGridViewItem, ItemT>::value,
240 "Type must derive from and implement the AbstractGridViewItem interface");
242 return dynamic_cast<ItemT &
>(add_item(std::make_unique<ItemT>(std::forward<Args>(args)...)));
247 static_assert(std::is_base_of<AbstractGridView, ViewType>::value,
248 "Type must derive from and implement the ui::AbstractGridView interface");
249 return dynamic_cast<ViewType &
>(
view_);
virtual void build_grid_tile(const bContext &C, uiLayout &layout) const =0
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)
~AbstractGridView() override=default
std::optional< int > item_count_filtered_
virtual void build_items()=0
Vector< std::unique_ptr< AbstractGridViewItem > > items_
ViewType & get_view() const
std::function< void(bContext &C, PreviewGridItem &new_active)> ActivateFn
std::function< bool()> IsActiveFn