30class AbstractGridView;
31class GridViewItemDropTarget;
54 std::optional<std::string>
debug_name()
const override;
68 static
void grid_tile_click_fn(
bContext *,
void *but_arg1,
void *);
69 void add_grid_tile_button(
uiBlock &block);
104 void foreach_filtered_item(
ItemIterFn iter_fn)
const;
119 template<
class ItemT,
typename... Args>
inline ItemT &add_item(Args &&...args);
121 int get_item_count()
const;
122 int get_item_count_filtered()
const;
124 void set_tile_size(
int tile_width,
int tile_height);
131 void update_children_from_old(
const AbstractView &old_view)
override;
162 template<
class ViewType>
inline ViewType &get_view()
const;
177 void build_grid_view(
const bContext &C,
180 std::optional<StringRef> search_string = {});
205 bool hide_label_ =
false;
209 int preview_icon_id = ICON_NONE;
215 void build_grid_tile_button(
uiLayout &layout,
216 BIFIconID override_preview_icon_id = ICON_NONE)
const;
232 std::optional<bool> should_be_active()
const override;
233 void on_activate(
bContext &C)
override;
242 static_assert(std::is_base_of_v<AbstractGridViewItem, ItemT>,
243 "Type must derive from and implement the AbstractGridViewItem interface");
245 return dynamic_cast<ItemT &
>(add_item(std::make_unique<ItemT>(std::forward<Args>(args)...)));
250 static_assert(std::is_base_of_v<AbstractGridView, ViewType>,
251 "Type must derive from and implement the ui::AbstractGridView interface");
252 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