Blender V4.5
UI_interface_layout.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include <optional>
8
9#include "BLI_string_ref.hh"
10#include "BLI_vector.hh"
11
12#include "UI_interface_icons.hh" /* `eAlertIcon` */
13#include "UI_interface_types.hh"
14
15#include "WM_types.hh" /* `wmOperatorCallContext` */
16
17struct bContext;
18struct bContextStore;
19struct uiBlock;
20struct uiBut;
21struct uiLayoutRoot;
22struct uiStyle;
23struct MenuType;
24struct PanelType;
25struct PointerRNA;
26
27/* Layout
28 *
29 * More automated layout of buttons. Has three levels:
30 * - Layout: contains a number templates, within a bounded width or height.
31 * - Template: predefined layouts for buttons with a number of slots, each
32 * slot can contain multiple items.
33 * - Item: item to put in a template slot, being either an RNA property,
34 * operator, label or menu. Also regular buttons can be used when setting
35 * uiBlockCurLayout. */
36
37namespace blender::ui {
38enum class ItemType : int8_t;
39enum class ItemInternalFlag : uint8_t;
40enum class EmbossType : uint8_t;
41} // namespace blender::ui
42
47
53struct uiItem {
56
57 uiItem() = default;
58 uiItem(const uiItem &) = default;
59 virtual ~uiItem() = default;
60};
61
62enum eUI_Item_Flag : uint16_t;
63
64enum class LayoutSeparatorType : int8_t {
68};
69
75struct uiLayout : uiItem {
76 // protected:
81
83
86
87 int x_, y_, w_, h_;
88 float scale_[2];
89 short space_;
90 bool align_;
91 bool active_;
102 float units_[2];
105
106 public:
107 uiLayout &absolute(bool align);
109
114 uiLayout &box();
119 uiLayout &column(bool align);
127 uiLayout &column(bool align, blender::StringRef heading);
128
133 uiLayout &row(bool align);
141 uiLayout &row(bool align, blender::StringRef heading);
142
148 uiLayout &column_flow(int number, bool align);
162 bool row_major, int columns_len, bool even_columns, bool even_rows, bool align);
163
165 uiLayout &list_box(uiList *ui_list, PointerRNA *actptr, PropertyRNA *actprop);
166
173
175 uiLayout &overlap();
176
195 PointerRNA *open_prop_owner,
196 blender::StringRefNull open_prop_name);
207 PointerRNA *open_prop_owner,
208 blender::StringRefNull open_prop_name,
211 PointerRNA *open_prop_owner,
212 blender::StringRefNull open_prop_name,
213 PointerRNA *bool_prop_owner,
214 blender::StringRefNull bool_prop_name,
215 std::optional<blender::StringRefNull> label);
223 PanelLayout panel(const bContext *C, blender::StringRef idname, bool default_closed);
224
234 uiLayout *panel(const bContext *C,
235 blender::StringRef idname,
236 bool default_closed,
238
244 uiLayout &split(float percentage, bool align);
245
247
249 void label(blender::StringRef name, int icon);
250
255 void menu(MenuType *mt, std::optional<blender::StringRef> name, int icon);
260 void menu(blender::StringRef menuname, std::optional<blender::StringRef> name, int icon);
261
268 void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg);
276 void menu_fn_argN_free(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *argN);
285 std::optional<blender::StringRef> name,
286 int icon,
287 wmOperatorCallContext context,
289
296 PointerRNA op(wmOperatorType *ot, std::optional<blender::StringRef> name, int icon);
297
305 PointerRNA op(blender::StringRefNull opname, std::optional<blender::StringRef> name, int icon);
306
316 std::optional<blender::StringRef> name,
317 int icon,
318 wmOperatorCallContext context,
327 void prop(PointerRNA *ptr,
329 int index,
330 int value,
332 std::optional<blender::StringRef> name_opt,
333 int icon,
334 std::optional<blender::StringRef> placeholder = std::nullopt);
336 void prop(PointerRNA *ptr,
337 blender::StringRefNull propname,
339 std::optional<blender::StringRef> name,
340 int icon);
341
343 void separator(float factor = 1.0f, LayoutSeparatorType type = LayoutSeparatorType::Auto);
344};
345
346enum {
349};
350
351enum {
358};
359
360enum {
365};
366
367enum eUI_Item_Flag : uint16_t {
368 /* UI_ITEM_O_RETURN_PROPS = 1 << 0, */ /* UNUSED */
395 /* Even create the property split layout if there's no name to show there. */
402};
404#define UI_ITEM_NONE eUI_Item_Flag(0)
405
407 int dir,
408 int type,
409 int x,
410 int y,
411 int size,
412 int em,
413 int padding,
414 const uiStyle *style);
415void UI_block_layout_set_current(uiBlock *block, uiLayout *layout);
416void UI_block_layout_resolve(uiBlock *block, int *r_x, int *r_y);
423void UI_block_layout_free(uiBlock *block);
424
430bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter);
431
433
434void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
439void uiLayoutContextCopy(uiLayout *layout, const bContextStore *context);
440
453 uiButToolTipFunc func,
454 void *arg,
455 uiCopyArgFunc copy_arg,
456 uiFreeArgFunc free_arg);
457
458void UI_menutype_draw(bContext *C, MenuType *mt, uiLayout *layout);
459
463void UI_paneltype_draw(bContext *C, PanelType *pt, uiLayout *layout);
464
465/* Only for convenience. */
466void uiLayoutSetContextFromBut(uiLayout *layout, uiBut *but);
467
469void uiLayoutSetActive(uiLayout *layout, bool active);
470void uiLayoutSetActiveDefault(uiLayout *layout, bool active_default);
471void uiLayoutSetActivateInit(uiLayout *layout, bool activate_init);
472void uiLayoutSetEnabled(uiLayout *layout, bool enabled);
473void uiLayoutSetRedAlert(uiLayout *layout, bool redalert);
474void uiLayoutSetAlignment(uiLayout *layout, char alignment);
475void uiLayoutSetFixedSize(uiLayout *layout, bool fixed_size);
476void uiLayoutSetKeepAspect(uiLayout *layout, bool keepaspect);
477void uiLayoutSetScaleX(uiLayout *layout, float scale);
478void uiLayoutSetScaleY(uiLayout *layout, float scale);
479void uiLayoutSetUnitsX(uiLayout *layout, float unit);
480void uiLayoutSetUnitsY(uiLayout *layout, float unit);
482void uiLayoutSetPropSep(uiLayout *layout, bool is_sep);
483void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep);
484int uiLayoutGetLocalDir(const uiLayout *layout);
485void uiLayoutSetSearchWeight(uiLayout *layout, float weight);
486
488bool uiLayoutGetActive(uiLayout *layout);
491bool uiLayoutGetEnabled(uiLayout *layout);
492bool uiLayoutGetRedAlert(uiLayout *layout);
493int uiLayoutGetAlignment(uiLayout *layout);
494bool uiLayoutGetFixedSize(uiLayout *layout);
495bool uiLayoutGetKeepAspect(uiLayout *layout);
496int uiLayoutGetWidth(uiLayout *layout);
497float uiLayoutGetScaleX(uiLayout *layout);
498float uiLayoutGetScaleY(uiLayout *layout);
499float uiLayoutGetUnitsX(uiLayout *layout);
500float uiLayoutGetUnitsY(uiLayout *layout);
502bool uiLayoutGetPropSep(uiLayout *layout);
505float uiLayoutGetSearchWeight(uiLayout *layout);
506
509
510/* Layout create functions. */
511
512bool uiLayoutEndsWithPanelHeader(const uiLayout &layout);
513
514/* items */
515
516void uiItemEnumO_ptr(uiLayout *layout,
518 std::optional<blender::StringRef> name,
519 int icon,
520 blender::StringRefNull propname,
521 int value);
522void uiItemEnumO(uiLayout *layout,
524 std::optional<blender::StringRef> name,
525 int icon,
526 blender::StringRefNull propname,
527 int value);
531void uiItemEnumO_value(uiLayout *layout,
533 int icon,
535 blender::StringRefNull propname,
536 int value);
537void uiItemEnumO_string(uiLayout *layout,
539 int icon,
541 blender::StringRefNull propname,
542 const char *value_str);
543void uiItemsEnumO(uiLayout *layout,
545 blender::StringRefNull propname);
546
549 std::optional<blender::StringRef> name,
550 int icon,
551 wmOperatorCallContext context,
553 const char *menu_id, /* extra menu arg. */
554 PointerRNA *r_opptr);
555
561 PropertyRNA *prop,
562 int index,
563 int value,
565 std::optional<blender::StringRefNull> name,
566 int icon,
567 const char *panel_type);
570 PropertyRNA *prop,
571 int index,
572 int value,
574 std::optional<blender::StringRefNull> name,
575 int icon,
576 const char *menu_type);
577void uiItemEnumR_prop(uiLayout *layout,
578 std::optional<blender::StringRefNull> name,
579 int icon,
581 PropertyRNA *prop,
582 int value);
585 PropertyRNA *prop,
586 const char *value,
587 std::optional<blender::StringRefNull> name,
588 int icon);
589void uiItemEnumR_string(uiLayout *layout,
591 blender::StringRefNull propname,
592 const char *value,
593 std::optional<blender::StringRefNull> name,
594 int icon);
596void uiItemPointerR_prop(uiLayout *layout,
598 PropertyRNA *prop,
599 PointerRNA *searchptr,
600 PropertyRNA *searchprop,
601 std::optional<blender::StringRefNull> name,
602 int icon,
603 bool results_are_suggestions);
604void uiItemPointerR(uiLayout *layout,
606 blender::StringRefNull propname,
607 PointerRNA *searchptr,
608 blender::StringRefNull searchpropname,
609 std::optional<blender::StringRefNull> name,
610 int icon);
611
617void uiItemsFullEnumO(uiLayout *layout,
619 blender::StringRefNull propname,
620 IDProperty *properties,
621 wmOperatorCallContext context,
623 const int active = -1);
632 const PointerRNA &ptr,
633 PropertyRNA *prop,
634 IDProperty *properties,
635 wmOperatorCallContext context,
637 const EnumPropertyItem *item_array,
638 int totitem,
639 int active = -1);
640
649
659
661 uiLayout *layout, blender::StringRef name, int icon, bool highlight, bool redalert);
673void uiItemLDrag(uiLayout *layout, PointerRNA *ptr, blender::StringRef name, int icon);
677void uiItemMContents(uiLayout *layout, blender::StringRef menuname);
678
679/* Decorators. */
680
685void uiItemDecoratorR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index);
690void uiItemDecoratorR(uiLayout *layout,
692 std::optional<blender::StringRefNull> propname,
693 int index);
694
696void uiItemSpacer(uiLayout *layout);
697
702
704 const char *text,
705 float factor,
706 eButProgressType progress_type);
707
708/* popover */
710 const bContext *C,
711 PanelType *pt,
712 std::optional<blender::StringRef> name_opt,
713 int icon);
715 const bContext *C,
716 blender::StringRef panel_type,
717 std::optional<blender::StringRef> name_opt,
718 int icon);
720 bContext *C,
721 int space_id,
722 int region_id,
723 const char *context,
724 const char *category);
725
730 const bContext *C,
732 blender::StringRefNull propname,
733 std::optional<blender::StringRefNull> name,
734 int icon,
735 PointerRNA *r_opptr);
736void uiItemMenuEnumFullO(uiLayout *layout,
737 const bContext *C,
739 blender::StringRefNull propname,
741 int icon,
742 PointerRNA *r_opptr);
743void uiItemMenuEnumO(uiLayout *layout,
744 const bContext *C,
746 blender::StringRefNull propname,
748 int icon);
749void uiItemMenuEnumR_prop(uiLayout *layout,
751 PropertyRNA *prop,
752 std::optional<blender::StringRefNull>,
753 int icon);
754void uiItemTabsEnumR_prop(uiLayout *layout,
755 bContext *C,
757 PropertyRNA *prop,
758 PointerRNA *ptr_highlight,
759 PropertyRNA *prop_highlight,
760 bool icon_only);
761
762/* Only for testing, inspecting layouts. */
766const char *UI_layout_introspect(uiLayout *layout);
767
773 const uiStyle *style,
774 const int dialog_width,
775 const eAlertIcon icon,
776 const int icon_size);
777uiLayout *uiItemsAlertBox(uiBlock *block, const int size, const eAlertIcon icon);
#define ENUM_OPERATORS(_type, _max)
#define C
Definition RandGen.cpp:29
void uiLayoutSetContextPointer(uiLayout *layout, blender::StringRef name, PointerRNA *ptr)
@ UI_ITEM_R_EVENT
@ UI_ITEM_R_TOGGLE
@ UI_ITEM_O_DEPRESS
@ UI_ITEM_R_SPLIT_EMPTY_NAME
@ UI_ITEM_R_ICON_NEVER
@ UI_ITEM_R_TEXT_BUT_FORCE_SEMI_MODAL_ACTIVE
@ UI_ITEM_R_IMMEDIATE
@ UI_ITEM_R_FORCE_BLANK_DECORATE
@ UI_ITEM_R_COMPACT
@ UI_ITEM_R_EXPAND
@ UI_ITEM_R_NO_BG
@ UI_ITEM_R_CHECKBOX_INVERT
@ UI_ITEM_R_ICON_ONLY
@ UI_ITEM_R_FULL_EVENT
@ UI_ITEM_R_SLIDER
void uiItemFullR_with_menu(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRefNull > name, int icon, const char *menu_type)
bool uiLayoutGetActivateInit(uiLayout *layout)
Panel * uiLayoutGetRootPanel(uiLayout *layout)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiItemMenuEnumFullO_ptr(uiLayout *layout, const bContext *C, wmOperatorType *ot, blender::StringRefNull propname, std::optional< blender::StringRefNull > name, int icon, PointerRNA *r_opptr)
bool uiLayoutGetPropDecorate(uiLayout *layout)
int uiLayoutGetAlignment(uiLayout *layout)
blender::ui::EmbossType uiLayoutGetEmboss(uiLayout *layout)
void uiLayoutSetUnitsY(uiLayout *layout, float unit)
void uiLayoutSetEnabled(uiLayout *layout, bool enabled)
void uiItemPointerR(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname, PointerRNA *searchptr, blender::StringRefNull searchpropname, std::optional< blender::StringRefNull > name, int icon)
void uiLayoutSetSearchWeight(uiLayout *layout, float weight)
bool UI_block_apply_search_filter(uiBlock *block, const char *search_filter)
uiLayout * uiItemsAlertBox(uiBlock *block, const uiStyle *style, const int dialog_width, const eAlertIcon icon, const int icon_size)
void uiItemDecoratorR(uiLayout *layout, PointerRNA *ptr, std::optional< blender::StringRefNull > propname, int index)
void uiItemEnumO_string(uiLayout *layout, blender::StringRef name, int icon, blender::StringRefNull opname, blender::StringRefNull propname, const char *value_str)
void uiLayoutSetFixedSize(uiLayout *layout, bool fixed_size)
uiLayout * uiItemL_respect_property_split(uiLayout *layout, blender::StringRef text, int icon)
float uiLayoutGetUnitsY(uiLayout *layout)
uiPropertySplitWrapper uiItemPropertySplitWrapperCreate(uiLayout *parent_layout)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
void uiItemMenuEnumR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, std::optional< blender::StringRefNull >, int icon)
@ UI_LAYOUT_ALIGN_LEFT
@ UI_LAYOUT_ALIGN_CENTER
@ UI_LAYOUT_ALIGN_RIGHT
@ UI_LAYOUT_ALIGN_EXPAND
void uiLayoutSetActiveDefault(uiLayout *layout, bool active_default)
void uiItemsFullEnumO_items(uiLayout *layout, wmOperatorType *ot, const PointerRNA &ptr, PropertyRNA *prop, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, const EnumPropertyItem *item_array, int totitem, int active=-1)
void uiLayoutSetRedAlert(uiLayout *layout, bool redalert)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
uiLayout * UI_block_layout(uiBlock *block, int dir, int type, int x, int y, int size, int em, int padding, const uiStyle *style)
void uiLayoutSetScaleX(uiLayout *layout, float scale)
float uiLayoutGetUnitsX(uiLayout *layout)
@ UI_BUT_PROGRESS_TYPE_BAR
@ UI_BUT_PROGRESS_TYPE_RING
@ UI_LAYOUT_VERTICAL
@ UI_LAYOUT_HORIZONTAL
void uiItemsEnumR(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname)
void uiItemEnumO(uiLayout *layout, blender::StringRefNull opname, std::optional< blender::StringRef > name, int icon, blender::StringRefNull propname, int value)
void uiLayoutSetContextString(uiLayout *layout, blender::StringRef name, blender::StringRef value)
void uiLayoutSetAlignment(uiLayout *layout, char alignment)
bool uiLayoutGetEnabled(uiLayout *layout)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
int uiLayoutListItemPaddingWidth()
@ UI_LAYOUT_PIEMENU
@ UI_LAYOUT_MENU
@ UI_LAYOUT_PANEL
@ UI_LAYOUT_VERT_BAR
@ UI_LAYOUT_TOOLBAR
@ UI_LAYOUT_HEADER
float uiLayoutGetScaleY(uiLayout *layout)
wmOperatorCallContext uiLayoutGetOperatorContext(uiLayout *layout)
void uiItemDecoratorR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index)
void uiItemPopoverPanelFromGroup(uiLayout *layout, bContext *C, int space_id, int region_id, const char *context, const char *category)
bool uiLayoutGetActive(uiLayout *layout)
float uiLayoutGetSearchWeight(uiLayout *layout)
bool uiLayoutGetKeepAspect(uiLayout *layout)
bool uiLayoutGetPropSep(uiLayout *layout)
void uiItemEnumR_string(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname, const char *value, std::optional< blender::StringRefNull > name, int icon)
void UI_paneltype_draw(bContext *C, PanelType *pt, uiLayout *layout)
void uiLayoutSetUnitsX(uiLayout *layout, float unit)
void uiItemEnumO_ptr(uiLayout *layout, wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::StringRefNull propname, int value)
LayoutSeparatorType
void uiItemEnumO_value(uiLayout *layout, blender::StringRefNull name, int icon, blender::StringRefNull opname, blender::StringRefNull propname, int value)
void uiLayoutSetTooltipFunc(uiLayout *layout, uiButToolTipFunc func, void *arg, uiCopyArgFunc copy_arg, uiFreeArgFunc free_arg)
int uiLayoutGetLocalDir(const uiLayout *layout)
void uiItemProgressIndicator(uiLayout *layout, const char *text, float factor, eButProgressType progress_type)
void uiItemMenuEnumO(uiLayout *layout, const bContext *C, blender::StringRefNull opname, blender::StringRefNull propname, blender::StringRefNull name, int icon)
void uiItemSpacer(uiLayout *layout)
void UI_menutype_draw(bContext *C, MenuType *mt, uiLayout *layout)
void uiLayoutSetKeepAspect(uiLayout *layout, bool keepaspect)
bool uiLayoutGetFixedSize(uiLayout *layout)
bool uiLayoutGetActiveDefault(uiLayout *layout)
void uiItemPointerR_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop, std::optional< blender::StringRefNull > name, int icon, bool results_are_suggestions)
int uiLayoutGetWidth(uiLayout *layout)
const char * UI_layout_introspect(uiLayout *layout)
void uiItemsEnumO(uiLayout *layout, blender::StringRefNull opname, blender::StringRefNull propname)
float uiLayoutGetScaleX(uiLayout *layout)
bool UI_block_layout_needs_resolving(const uiBlock *block)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
void uiLayoutListItemAddPadding(uiLayout *layout)
void uiLayoutSetContextFromBut(uiLayout *layout, uiBut *but)
void uiItemLDrag(uiLayout *layout, PointerRNA *ptr, blender::StringRef name, int icon)
void UI_block_layout_free(uiBlock *block)
void uiLayoutSetEmboss(uiLayout *layout, blender::ui::EmbossType emboss)
void uiItemFullR_with_popover(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRefNull > name, int icon, const char *panel_type)
void uiItemEnumR_prop(uiLayout *layout, std::optional< blender::StringRefNull > name, int icon, PointerRNA *ptr, PropertyRNA *prop, int value)
void UI_block_layout_resolve(uiBlock *block, int *r_x, int *r_y)
void uiLayoutSetActivateInit(uiLayout *layout, bool activate_init)
void uiItemMenuEnumFullO(uiLayout *layout, const bContext *C, blender::StringRefNull opname, blender::StringRefNull propname, blender::StringRefNull name, int icon, PointerRNA *r_opptr)
void UI_block_layout_set_current(uiBlock *block, uiLayout *layout)
void uiItemMContents(uiLayout *layout, blender::StringRef menuname)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
void uiItemFullOMenuHold_ptr(uiLayout *layout, wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag, const char *menu_id, PointerRNA *r_opptr)
bContextStore * uiLayoutGetContextStore(uiLayout *layout)
void uiItemPopoverPanel_ptr(uiLayout *layout, const bContext *C, PanelType *pt, std::optional< blender::StringRef > name_opt, int icon)
bool uiLayoutGetRedAlert(uiLayout *layout)
void uiItemEnumR_string_prop(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, const char *value, std::optional< blender::StringRefNull > name, int icon)
void uiItemPopoverPanel(uiLayout *layout, const bContext *C, blender::StringRef panel_type, std::optional< blender::StringRef > name_opt, int icon)
uiBut * uiItemL_ex(uiLayout *layout, blender::StringRef name, int icon, bool highlight, bool redalert)
void uiLayoutContextCopy(uiLayout *layout, const bContextStore *context)
void uiItemTabsEnumR_prop(uiLayout *layout, bContext *C, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *ptr_highlight, PropertyRNA *prop_highlight, bool icon_only)
void uiItemsFullEnumO(uiLayout *layout, blender::StringRefNull opname, blender::StringRefNull propname, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, const int active=-1)
void uiLayoutSetContextInt(uiLayout *layout, blender::StringRef name, int64_t value)
void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv)
bool uiLayoutEndsWithPanelHeader(const uiLayout &layout)
void(*)(void *arg) uiFreeArgFunc
void(*)(bContext *C, uiLayout *layout, void *arg1) uiMenuCreateFunc
std::string(*)(bContext *C, void *argN, blender::StringRef tip) uiButToolTipFunc
void(*)(bContext *C, void *arg, int event) uiMenuHandleFunc
#define UI_MAX_NAME_STR
void *(*)(const void *arg) uiCopyArgFunc
wmOperatorCallContext
Definition WM_types.hh:236
long long int int64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
btMatrix3x3 absolute() const
Return the matrix with all values non negative.
Definition btVector3.h:364
#define row_major
#define active
uint padding(uint offset, uint alignment)
bool enabled
virtual ~uiItem()=default
uiItem(const uiItem &)=default
uiItem()=default
blender::ui::ItemType type_
blender::ui::ItemInternalFlag flag_
char heading_[UI_MAX_NAME_STR]
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag)
PanelLayout panel(const bContext *C, blender::StringRef idname, bool default_closed)
PanelLayout panel_prop_with_bool_header(const bContext *C, PointerRNA *open_prop_owner, blender::StringRefNull open_prop_name, PointerRNA *bool_prop_owner, blender::StringRefNull bool_prop_name, std::optional< blender::StringRefNull > label)
void menu_fn_argN_free(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *argN)
bContextStore * context_
uiLayout * child_items_layout_
uiBlock * absolute_block()
uiLayout & column_flow(int number, bool align)
PanelLayout panel_prop(const bContext *C, PointerRNA *open_prop_owner, blender::StringRefNull open_prop_name)
uiLayout * parent_
blender::Vector< uiItem * > items_
blender::ui::EmbossType emboss_
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
uiLayout & grid_flow(bool row_major, int columns_len, bool even_columns, bool even_rows, bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg)
uiLayoutRoot * root_
uiLayout & row(bool align)
uiLayout & split(float percentage, bool align)
uiLayout & box()
uiLayout & list_box(uiList *ui_list, PointerRNA *actptr, PropertyRNA *actprop)
uiLayout & menu_pie()
void menu(MenuType *mt, std::optional< blender::StringRef > name, int icon)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)
uiLayout & overlap()
PointerRNA * ptr
Definition wm_files.cc:4226
wmOperatorType * ot
Definition wm_files.cc:4225
uint8_t flag
Definition wm_window.cc:139