Blender V4.3
interface_template_list.cc File Reference
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include "BLI_fnmatch.h"
#include "BLI_function_ref.hh"
#include "BLI_listbase.h"
#include "BLI_math_base.h"
#include "BLI_string.h"
#include "BLI_string_ref.hh"
#include "BLI_utildefines.h"
#include "BLI_vector.hh"
#include "BKE_screen.hh"
#include "BLT_translation.hh"
#include "ED_screen.hh"
#include "MEM_guardedalloc.h"
#include "RNA_access.hh"
#include "RNA_prototypes.hh"
#include "UI_interface.hh"
#include "UI_view2d.hh"
#include "WM_api.hh"
#include "interface_intern.hh"

Go to the source code of this file.

Classes

struct  TemplateListInputData
 
struct  _uilist_item
 
struct  TemplateListItems
 
struct  TemplateListLayoutDrawData
 
struct  TemplateListVisualInfo
 
struct  StringCmp
 

Functions

static void uilist_draw_item_default (uiList *ui_list, const bContext *, uiLayout *layout, PointerRNA *, PointerRNA *itemptr, int icon, PointerRNA *, const char *, int, int)
 
static void uilist_draw_filter_default (uiList *ui_list, const bContext *, uiLayout *layout)
 
static int cmpstringp (const void *p1, const void *p2)
 
void UI_list_filter_and_sort_items (uiList *ui_list, const bContext *, uiListItemFilterFn item_filter_fn, PointerRNA *dataptr, const char *propname, uiListItemGetNameFn get_name_fn)
 
bool UI_list_item_index_is_filtered_visible (const uiList *ui_list, const int item_idx)
 
static void uilist_filter_items_default (uiList *ui_list, const bContext *C, PointerRNA *dataptr, const char *propname)
 
static void uilist_free_dyn_data (uiList *ui_list)
 
static bool ui_template_list_data_retrieve (const char *listtype_name, const char *list_id, PointerRNA *dataptr, const char *propname, PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, TemplateListInputData *r_input_data, uiListType **r_list_type)
 
static void ui_template_list_collect_items (PointerRNA *list_ptr, PropertyRNA *list_prop, const uiList *ui_list, int activei, TemplateListItems *r_items)
 
static void ui_template_list_collect_display_items (const bContext *C, uiList *ui_list, TemplateListInputData *input_data, const uiListFilterItemsFunc filter_items_fn, TemplateListItems *r_items)
 
static void uilist_prepare (uiList *ui_list, const TemplateListItems *items, const TemplateListLayoutDrawData *layout_data, TemplateListVisualInfo *r_visual_info)
 
static void uilist_resize_update (bContext *C, uiList *ui_list)
 
static void * uilist_item_use_dynamic_tooltip (PointerRNA *itemptr, const char *propname)
 
static std::string uilist_item_tooltip_func (bContext *, void *argN, const char *tip)
 
static uiListui_list_ensure (const bContext *C, uiListType *ui_list_type, const char *list_id, int layout_type, bool sort_reverse, bool sort_lock)
 
static void ui_template_list_layout_draw (const bContext *C, uiList *ui_list, uiLayout *layout, TemplateListInputData *input_data, TemplateListItems *items, const TemplateListLayoutDrawData *layout_data, const enum uiTemplateListFlags flags)
 
uiListuiTemplateList_ex (uiLayout *layout, const bContext *C, const char *listtype_name, const char *list_id, PointerRNA *dataptr, const char *propname, PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, int rows, int maxrows, int layout_type, int columns, enum uiTemplateListFlags flags, void *customdata)
 
void uiTemplateList (uiLayout *layout, const bContext *C, const char *listtype_name, const char *list_id, PointerRNA *dataptr, const char *propname, PointerRNA *active_dataptr, const char *active_propname, const char *item_dyntip_propname, int rows, int maxrows, int layout_type, int columns, enum uiTemplateListFlags flags)
 
PointerRNAUI_list_custom_activate_operator_set (uiList *ui_list, const char *opname, bool create_properties)
 
PointerRNAUI_list_custom_drag_operator_set (uiList *ui_list, const char *opname, bool create_properties)
 
List-types Registration
void ED_uilisttypes_ui ()
 

Function Documentation

◆ cmpstringp()

static int cmpstringp ( const void * p1,
const void * p2 )
static

Definition at line 203 of file interface_template_list.cc.

References BLI_strcasecmp().

Referenced by UI_list_filter_and_sort_items().

◆ ED_uilisttypes_ui()

void ED_uilisttypes_ui ( )

◆ UI_list_custom_activate_operator_set()

PointerRNA * UI_list_custom_activate_operator_set ( uiList * ui_list,
const char * opname,
bool create_properties )

◆ UI_list_custom_drag_operator_set()

PointerRNA * UI_list_custom_drag_operator_set ( uiList * ui_list,
const char * opname,
bool create_properties )

◆ ui_list_ensure()

◆ UI_list_filter_and_sort_items()

void UI_list_filter_and_sort_items ( uiList * ui_list,
const bContext * C,
uiListItemFilterFn item_filter_fn,
PointerRNA * dataptr,
const char * propname,
uiListItemGetNameFn get_name_fn = nullptr )

Filter list items using item_filter_fn and sort the result. This respects the normal UI list filter settings like alphabetical sorting (UILST_FLT_SORT_ALPHA), and result inverting (UILST_FLT_EXCLUDE).

Call this from a uiListType::filter_items callback with any #item_filter_fn. uiListNameFilter can be used to apply the default name based filtering.

Parameters
get_name_fnIn some cases the name cannot be retrieved via RNA. This function can be set to provide the name still.

Definition at line 209 of file interface_template_list.cc.

References BLI_strdup(), cmpstringp(), uiList::dyn_data, uiList::filter_flag, uiList::filter_sort_flag, uiListDyn::items_filter_flags, uiListDyn::items_filter_neworder, uiListDyn::items_len, uiListDyn::items_shown, len, MEM_callocN, MEM_freeN(), MEM_mallocN, StringCmp::org_idx, RNA_PROP_BEGIN, RNA_PROP_END, RNA_property_collection_length(), RNA_struct_find_property(), RNA_struct_name_get_alloc(), STRNCPY, UI_LIST_ITEM_FILTER_MATCHES, UI_LIST_ITEM_NEVER_SHOW, UILST_FLT_EXCLUDE, UILST_FLT_ITEM, UILST_FLT_ITEM_NEVER_SHOW, UILST_FLT_SORT_ALPHA, and UILST_FLT_SORT_MASK.

Referenced by asset_view_filter_items(), and uilist_filter_items_default().

◆ UI_list_item_index_is_filtered_visible()

bool UI_list_item_index_is_filtered_visible ( const uiList * ui_list,
const int item_idx )

◆ ui_template_list_collect_display_items()

◆ ui_template_list_collect_items()

◆ ui_template_list_data_retrieve()

static bool ui_template_list_data_retrieve ( const char * listtype_name,
const char * list_id,
PointerRNA * dataptr,
const char * propname,
PointerRNA * active_dataptr,
const char * active_propname,
const char * item_dyntip_propname,
TemplateListInputData * r_input_data,
uiListType ** r_list_type )
static

◆ ui_template_list_layout_draw()

static void ui_template_list_layout_draw ( const bContext * C,
uiList * ui_list,
uiLayout * layout,
TemplateListInputData * input_data,
TemplateListItems * items,
const TemplateListLayoutDrawData * layout_data,
const enum uiTemplateListFlags flags )
static

Definition at line 709 of file interface_template_list.cc.

References TemplateListInputData::active_dataptr, TemplateListItems::active_item_idx, TemplateListInputData::activeprop, col, TemplateListLayoutDrawData::columns, uiBut::context, PointerRNA::data, TemplateListInputData::dataptr, TemplateListLayoutDrawData::draw_filter, TemplateListLayoutDrawData::draw_item, uiList::dyn_data, TemplateListVisualInfo::end_idx, uiList::filter_flag, uiListDyn::height, TemplateListInputData::item_dyntip_propname, TemplateListItems::item_vec, uiListDyn::items_shown, uiList::layout_type, uiList::list_grip, uiList::list_scroll, MEM_freeN(), TemplateListInputData::prop, PROP_EDITABLE, uiListDyn::resize, uiListDyn::resize_prev, RNA_property_flag(), RNA_property_identifier(), RNA_property_pointer_type(), RNA_struct_ui_icon(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), SNPRINTF, TemplateListVisualInfo::start_idx, TIP_, UI_block_emboss_set(), UI_block_flag_disable(), UI_block_flag_enable(), UI_BLOCK_LIST_ITEM, UI_BTYPE_GRIP, UI_BTYPE_LISTROW, UI_BTYPE_NUM, UI_BTYPE_SCROLL, UI_BTYPE_SEPR, UI_BTYPE_TOGGLE, UI_BUT_DISABLED, UI_but_drawflag_enable(), UI_but_flag_disable(), UI_but_flag_enable(), UI_but_func_set(), UI_but_func_tooltip_set(), UI_BUT_NO_TOOLTIP, UI_BUT_UNDO, UI_EMBOSS, UI_EMBOSS_NONE, UI_icon_from_rnaptr(), ui_layout_list_set_labels_active(), UI_preview_tile_size_x(), UI_preview_tile_size_y(), UI_preview_tile_size_y_no_label(), UI_TEMPLATE_LIST_NO_FILTER_OPTIONS, UI_TEMPLATE_LIST_NO_GRIP, UI_TEMPLATE_LIST_NO_NAMES, UI_UNIT_X, UI_UNIT_Y, uiDefBut(), uiDefButI(), uiDefButR_prop(), uiDefIconButBitI(), uiDefIconButI(), uiDefIconTextButR_prop(), uiItemL(), uiLayoutColumn(), uiLayoutGetBlock(), uiLayoutGetContextStore(), uiLayoutGetWidth(), uiLayoutGridFlow(), uiLayoutListBox(), uiLayoutListItemAddPadding(), uiLayoutOverlap(), uiLayoutRow(), uilist_item_tooltip_func(), uilist_item_use_dynamic_tooltip(), uilist_prepare(), uilist_resize_update(), UILST_FLT_SHOW, UILST_LAYOUT_BIG_PREVIEW_GRID, UILST_LAYOUT_COMPACT, UILST_LAYOUT_DEFAULT, UILST_LAYOUT_GRID, V2D_SCROLL_WIDTH, uiButScrollBar::visual_height, uiListDyn::visual_height, and TemplateListVisualInfo::visual_items.

Referenced by uiTemplateList_ex().

◆ uilist_draw_filter_default()

static void uilist_draw_filter_default ( uiList * ui_list,
const bContext * ,
uiLayout * layout )
static

◆ uilist_draw_item_default()

static void uilist_draw_item_default ( uiList * ui_list,
const bContext * ,
uiLayout * layout,
PointerRNA * ,
PointerRNA * itemptr,
int icon,
PointerRNA * ,
const char * ,
int ,
int  )
static

◆ uilist_filter_items_default()

static void uilist_filter_items_default ( uiList * ui_list,
const bContext * C,
PointerRNA * dataptr,
const char * propname )
static

Default UI List filtering: Filter by name.

Definition at line 331 of file interface_template_list.cc.

References uiList::filter_byname, and UI_list_filter_and_sort_items().

Referenced by uiTemplateList_ex().

◆ uilist_free_dyn_data()

◆ uilist_item_tooltip_func()

static std::string uilist_item_tooltip_func ( bContext * ,
void * argN,
const char * tip )
static

Definition at line 640 of file interface_template_list.cc.

Referenced by ui_template_list_layout_draw().

◆ uilist_item_use_dynamic_tooltip()

static void * uilist_item_use_dynamic_tooltip ( PointerRNA * itemptr,
const char * propname )
static

◆ uilist_prepare()

◆ uilist_resize_update()

◆ uiTemplateList()

◆ uiTemplateList_ex()