|
Blender V5.0
|
#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_string_utf8.h"#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_layout.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 StringRef listtype_name, const char *list_id, PointerRNA *dataptr, const StringRefNull propname, PointerRNA *active_dataptr, const StringRefNull 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 StringRef tip) |
| static uiList * | ui_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) |
| uiList * | uiTemplateList_ex (uiLayout *layout, const bContext *C, const char *listtype_name, const char *list_id, PointerRNA *dataptr, const StringRefNull propname, PointerRNA *active_dataptr, const StringRefNull 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, blender::StringRefNull 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) |
List-types Registration | |
| void | ED_uilisttypes_ui () |
|
static |
Definition at line 195 of file interface_template_list.cc.
References BLI_strcasecmp(), and name.
Referenced by UI_list_filter_and_sort_items().
| void ED_uilisttypes_ui | ( | ) |
Definition at line 1196 of file interface_template_list.cc.
References UI_UL_cache_file_layers(), and WM_uilisttype_add().
Referenced by ED_spacetypes_init().
|
static |
Definition at line 638 of file interface_template_list.cc.
References BLI_addtail(), BLI_findstring(), C, CTX_wm_region(), CTX_wm_region_popup(), uiList::dyn_data, uiList::filter_sort_flag, uiListDyn::free_runtime_data_fn, uiListDyn::items_filter_flags, uiListDyn::items_filter_neworder, uiListDyn::items_len, uiListDyn::items_shown, uiList::layout_type, uiList::list_grip, uiList::list_id, MEM_callocN(), MEM_SAFE_FREE, offsetof, STRNCPY_UTF8, uiList::type, UI_LIST_AUTO_SIZE_THRESHOLD, ARegion::ui_lists, UI_MAX_NAME_STR, uilist_free_dyn_data(), UILST_FLT_SORT_LOCK, UILST_FLT_SORT_REVERSE, and WM_uilisttype_to_full_list_id().
Referenced by uiTemplateList_ex().
| 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 ) |
Helper to apply custom filtering to UI lists not defined in Python. Custom filtering for Python UI lists has own code. This is also used as the default filtering if no uiListType::filter_items callback is set.
Filters list items using item_filter_fn and sorts the result. Also handles alphabetical sorting (UILST_FLT_SORT_ALPHA), and result inverting (UILST_FLT_EXCLUDE) if enabled, so the callback doesn't have to do this (unlike the filter function in Python).
Call this from a uiListType::filter_items callback with any #item_filter_fn. uiListNameFilter can be used to apply the default name based filtering.
| get_name_fn | In some cases the name cannot be retrieved via RNA. This function can be set to provide the name still. |
Definition at line 202 of file interface_template_list.cc.
References BLI_strdup(), cmpstringp(), uiList::dyn_data, uiList::filter_flag, uiList::filter_sort_flag, i, uiListDyn::items_filter_flags, uiListDyn::items_filter_neworder, uiListDyn::items_len, uiListDyn::items_shown, len, MEM_calloc_arrayN(), MEM_freeN(), MEM_malloc_arrayN(), name, 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_LOCK.
Referenced by uilist_filter_items_default().
| bool UI_list_item_index_is_filtered_visible | ( | const uiList * | ui_list, |
| const int | item_idx ) |
Definition at line 303 of file interface_template_list.cc.
References uiList::dyn_data, uiListDyn::items_filter_flags, UILST_FLT_ITEM, and UILST_FLT_ITEM_NEVER_SHOW.
Referenced by ui_template_list_collect_items().
|
static |
Create the UI-list representation of the list items, sorted and filtered if needed.
Definition at line 488 of file interface_template_list.cc.
References TemplateListInputData::active_item_idx, C, PointerRNA::data, TemplateListInputData::dataptr, uiList::dyn_data, TemplateListItems::item_vec, uiListDyn::items_len, uiListDyn::items_shown, uiList::layout_type, TemplateListInputData::prop, Vector< T, InlineBufferCapacity, Allocator >::resize(), RNA_property_collection_length(), RNA_property_identifier(), ui_template_list_collect_items(), and UILST_LAYOUT_COMPACT.
Referenced by uiTemplateList_ex().
|
static |
Definition at line 425 of file interface_template_list.cc.
References TemplateListItems::active_item_idx, uiList::dyn_data, uiList::filter_sort_flag, i, TemplateListItems::item_vec, uiListDyn::items_filter_flags, uiListDyn::items_filter_neworder, uiListDyn::items_shown, RNA_PROP_BEGIN, RNA_PROP_END, RNA_property_int_set(), UI_list_item_index_is_filtered_visible(), and UILST_FLT_SORT_REVERSE.
Referenced by ui_template_list_collect_display_items().
|
static |
Validate input parameters and initialize r_data from that. Plus find the list-type and return it in r_list_type.
Definition at line 355 of file interface_template_list.cc.
References TemplateListInputData::active_dataptr, TemplateListInputData::active_item_idx, TemplateListInputData::activeprop, blender::StringRefNull::c_str(), PointerRNA::data, TemplateListInputData::dataptr, TemplateListInputData::item_dyntip_propname, TemplateListInputData::prop, PROP_COLLECTION, PROP_INT, RNA_property_int_get(), RNA_property_type(), RNA_struct_find_property(), RNA_struct_identifier(), RNA_warning, PointerRNA::type, UI_UL_DEFAULT_CLASS_NAME, and WM_uilisttype_find().
Referenced by uiTemplateList_ex().
|
static |
Definition at line 692 of file interface_template_list.cc.
References TemplateListInputData::active_dataptr, TemplateListItems::active_item_idx, TemplateListInputData::activeprop, uiLayout::block(), C, col, uiLayout::column(), TemplateListLayoutDrawData::columns, uiBut::context, PointerRNA::data, TemplateListInputData::dataptr, TemplateListLayoutDrawData::draw_filter, TemplateListLayoutDrawData::draw_item, uiList::dyn_data, blender::ui::Emboss, TemplateListVisualInfo::end_idx, uiList::filter_flag, uiLayout::grid_flow(), Grip, uiListDyn::height, i, TemplateListInputData::item_dyntip_propname, TemplateListItems::item_vec, uiListDyn::items_shown, uiList::layout_type, uiLayout::list_box(), uiList::list_grip, uiList::list_scroll, ListRow, MEM_freeN(), blender::ui::None, Num, uiLayout::overlap(), TemplateListInputData::prop, PROP_EDITABLE, uiListDyn::resize, uiListDyn::resize_prev, RNA_property_flag(), RNA_property_identifier(), RNA_property_pointer_type(), RNA_struct_ui_icon(), uiLayout::row(), Scroll, Sepr, Vector< T, InlineBufferCapacity, Allocator >::size(), SNPRINTF_UTF8, TemplateListVisualInfo::start_idx, TIP_, Toggle, UI_block_emboss_set(), UI_block_flag_disable(), UI_block_flag_enable(), UI_BLOCK_LIST_ITEM, 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_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(), uiLayoutListItemAddPadding(), 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, V2D_SCROLL_WIDTH, uiButScrollBar::visual_height, uiListDyn::visual_height, and TemplateListVisualInfo::visual_items.
Referenced by uiTemplateList_ex().
Definition at line 120 of file interface_template_list.cc.
References uiList::filter_sort_flag, uiLayout::prop(), RNA_pointer_create_discrete(), uiLayout::row(), UI_ITEM_NONE, UI_ITEM_R_ICON_ONLY, UI_ITEM_R_TOGGLE, UILST_FLT_SORT_LOCK, and UILST_FLT_SORT_REVERSE.
Referenced by uiTemplateList_ex().
|
static |
Definition at line 92 of file interface_template_list.cc.
References uiLayout::label(), uiList::layout_type, uiLayout::prop(), RNA_NO_INDEX, RNA_struct_name_property(), PointerRNA::type, UI_ITEM_R_NO_BG, UILST_LAYOUT_COMPACT, and UILST_LAYOUT_DEFAULT.
Referenced by uiTemplateList_ex().
|
static |
Default UI List filtering: Filter by name.
Definition at line 322 of file interface_template_list.cc.
References C, uiList::filter_byname, and UI_list_filter_and_sort_items().
Referenced by uiTemplateList_ex().
|
static |
Definition at line 337 of file interface_template_list.cc.
References uiListDyn::customdata, uiList::dyn_data, uiListDyn::items_filter_flags, uiListDyn::items_filter_neworder, and MEM_SAFE_FREE.
Referenced by ui_list_ensure().
Definition at line 624 of file interface_template_list.cc.
References blender::StringRefBase::is_empty().
Referenced by ui_template_list_layout_draw().
|
static |
Definition at line 612 of file interface_template_list.cc.
References PointerRNA::data, PROP_STRING, RNA_property_string_get_alloc(), RNA_property_type(), and RNA_struct_find_property().
Referenced by ui_template_list_layout_draw().
|
static |
Definition at line 524 of file interface_template_list.cc.
References TemplateListItems::active_item_idx, ceil, CLAMP, TemplateListLayoutDrawData::columns, uiListDyn::columns, uiList::dyn_data, TemplateListVisualInfo::end_idx, uiList::flag, floor, uiListDyn::height, TemplateListItems::item_vec, uiList::list_grip, uiList::list_last_len, uiList::list_scroll, max_ii(), TemplateListLayoutDrawData::maxrows, min_ii(), TemplateListLayoutDrawData::rows, Vector< T, InlineBufferCapacity, Allocator >::size(), TemplateListVisualInfo::start_idx, UI_LIST_AUTO_SIZE_THRESHOLD, UILST_SCROLL_TO_ACTIVE_ITEM, uiListDyn::visual_height, uiListDyn::visual_height_min, and TemplateListVisualInfo::visual_items.
Referenced by ui_template_list_layout_draw().
Definition at line 594 of file interface_template_list.cc.
References C, CTX_wm_region_popup(), diff(), uiList::dyn_data, ED_region_tag_refresh_ui(), uiList::flag, uiList::list_grip, uiListDyn::resize, uiListDyn::resize_prev, round_fl_to_int(), UI_UNIT_Y, and UILST_SCROLL_TO_ACTIVE_ITEM.
Referenced by ui_template_list_layout_draw().
| void uiTemplateList | ( | uiLayout * | layout, |
| const bContext * | C, | ||
| const char * | listtype_name, | ||
| const char * | list_id, | ||
| PointerRNA * | dataptr, | ||
| blender::StringRefNull | 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 ) |
Definition at line 1159 of file interface_template_list.cc.
References C, and uiTemplateList_ex().
Referenced by blender::nodes::draw_data_blocks(), blender::nodes::socket_items::ui::draw_items_list_with_operators(), blender::panel_draw(), uiTemplateCacheFileLayers(), and uiTemplateCollectionExporters().
| uiList * uiTemplateList_ex | ( | uiLayout * | layout, |
| const bContext * | C, | ||
| const char * | listtype_name, | ||
| const char * | list_id, | ||
| PointerRNA * | dataptr, | ||
| const StringRefNull | propname, | ||
| PointerRNA * | active_dataptr, | ||
| const StringRefNull | active_propname, | ||
| const char * | item_dyntip_propname, | ||
| int | rows, | ||
| int | maxrows, | ||
| int | layout_type, | ||
| int | columns, | ||
| enum uiTemplateListFlags | flags, | ||
| void * | customdata ) |
Definition at line 1089 of file interface_template_list.cc.
References TemplateListInputData::active_item_idx, C, TemplateListLayoutDrawData::columns, uiListDyn::customdata, TemplateListLayoutDrawData::draw_filter, uiListType::draw_filter, TemplateListLayoutDrawData::draw_item, uiListType::draw_item, uiList::dyn_data, uiListType::filter_items, uiList::flag, uiList::list_last_activei, TemplateListLayoutDrawData::maxrows, MEM_SAFE_FREE, TemplateListLayoutDrawData::rows, ui_list_ensure(), ui_template_list_collect_display_items(), ui_template_list_data_retrieve(), ui_template_list_layout_draw(), UI_TEMPLATE_LIST_SORT_LOCK, UI_TEMPLATE_LIST_SORT_REVERSE, uilist_draw_filter_default(), uilist_draw_item_default(), uilist_filter_items_default(), and UILST_SCROLL_TO_ACTIVE_ITEM.
Referenced by uiTemplateList().