116 func = &rna_Panel_poll_func;
123 visible = *(
bool *)
ret;
139 func = &rna_Panel_draw_func;
157 func = &rna_Panel_draw_header_func;
166 static void panel_draw_header_preset(
const bContext *
C,
Panel *panel)
168 extern FunctionRNA rna_Panel_draw_header_preset_func;
175 func = &rna_Panel_draw_header_preset_func;
191 panel_type_clear_recursive(child_panel,
type);
229 if (sl->spacetype == space_type) {
233 if (region->type == art) {
235 panel_type_clear_recursive(panel, pt);
254 const char *identifier,
263 int have_function[4];
264 size_t over_alloc = 0;
266 size_t description_size = 0;
269 dummypanel.
type = &dummypt;
270 _panel_descr[0] =
'\0';
278 if (validate(&dummyptr,
data, have_function) != 0) {
282 if (strlen(identifier) >=
sizeof(dummypt.idname)) {
285 "Registering panel class: '%s' is too long, maximum length is %d",
287 (
int)
sizeof(dummypt.idname));
292 if (dummypt.category[0] ==
'\0') {
296 printf(
"Registering panel class: '%s' misses category, please update the script\n",
302 if (dummypt.category[0] !=
'\0') {
306 "Registering panel class: '%s' has category '%s' ",
314 if (!(art = region_type_find(reports, dummypt.space_type, dummypt.region_type))) {
330 if (dummypt.parent_id[0] && (parent ==
NULL)) {
331 for (pt = pt_next; pt; pt = pt->
next) {
342 if (dummypt.parent_id[0] &&
STREQ(pt->
idname, dummypt.parent_id)) {
353 if (dummypt.parent_id[0] && !parent) {
356 "Registering panel class: parent '%s' for '%s' not found",
363 if (_panel_descr[0]) {
364 description_size = strlen(_panel_descr) + 1;
365 over_alloc += description_size;
368 memcpy(pt, &dummypt,
sizeof(dummypt));
370 if (_panel_descr[0]) {
371 char *buf = (
char *)(pt + 1);
372 memcpy(buf, _panel_descr, description_size);
387 pt->
poll = (have_function[0]) ? panel_poll :
NULL;
395 for (; pt_iter; pt_iter = pt_iter->
prev) {
466 static void uilist_draw_item(
uiList *ui_list,
473 const char *active_propname,
484 func = &rna_UIList_draw_item_func;
510 func = &rna_UIList_draw_filter_func;
520 static void uilist_filter_items(
uiList *ui_list,
523 const char *propname)
533 int *filter_flags, *filter_neworder;
539 func = &rna_UIList_filter_items_func;
550 if (ret_len !=
len && ret_len != 0) {
551 printf(
"%s: Error, py func returned %d items in %s, %d or none were expected.\n",
561 filter_flags = (
int *)ret1;
566 if (ret_len !=
len && ret_len != 0) {
567 printf(
"%s: Error, py func returned %d items in %s, %d or none were expected.\n",
573 filter_neworder =
NULL;
577 filter_neworder = (
int *)ret2;
587 if (filter_neworder) {
591 int items_shown, shown_idx;
592 int t_idx, t_ni, prev_ni;
594 for (i = 0, shown_idx = 0; i <
len; i++) {
596 filter_neworder[shown_idx++] = filter_neworder[i];
604 for (shown_idx = 0, prev_ni = -1; shown_idx < items_shown; shown_idx++) {
605 for (i = 0, t_ni =
len, t_idx = -1; i < items_shown; i++) {
606 int ni = filter_neworder[i];
607 if (ni > prev_ni && ni < t_ni) {
621 for (i = 0; i <
len; i++) {
631 if (filter_neworder) {
661 const char *identifier,
669 int have_function[3];
670 size_t over_alloc = 0;
673 dummyuilist.
type = &dummyult;
677 if (validate(&dummyul_ptr,
data, have_function) != 0) {
681 if (strlen(identifier) >=
sizeof(dummyult.
idname)) {
684 "Registering uilist class: '%s' is too long, maximum length is %d",
686 (
int)
sizeof(dummyult.
idname));
704 memcpy(ult, &dummyult,
sizeof(dummyult));
712 ult->
draw_item = (have_function[0]) ? uilist_draw_item :
NULL;
742 func = &rna_Header_draw_func;
775 const char *identifier,
784 int have_function[1];
787 dummyheader.
type = &dummyht;
792 if (validate(&dummyhtr,
data, have_function) != 0) {
796 if (strlen(identifier) >=
sizeof(dummyht.
idname)) {
799 "Registering header class: '%s' is too long, maximum length is %d",
801 (
int)
sizeof(dummyht.
idname));
827 memcpy(ht, &dummyht,
sizeof(dummyht));
835 ht->
draw = (have_function[0]) ? header_draw :
NULL;
864 func = &rna_Menu_poll_func;
871 visible = *(
bool *)
ret;
887 func = &rna_Menu_draw_func;
916 const char *identifier,
924 int have_function[2];
925 size_t over_alloc = 0;
926 size_t description_size = 0;
930 dummymenu.
type = &dummymt;
931 _menu_descr[0] =
'\0';
939 if (validate(&dummymtr,
data, have_function) != 0) {
943 if (strlen(identifier) >=
sizeof(dummymt.
idname)) {
946 "Registering menu class: '%s' is too long, maximum length is %d",
948 (
int)
sizeof(dummymt.
idname));
965 if (_menu_descr[0]) {
966 description_size = strlen(_menu_descr) + 1;
967 over_alloc += description_size;
971 memcpy(mt, &dummymt,
sizeof(dummymt));
973 if (_menu_descr[0]) {
974 char *buf = (
char *)(mt + 1);
975 memcpy(buf, _menu_descr, description_size);
990 mt->
poll = (have_function[0]) ? menu_poll :
NULL;
991 mt->
draw = (have_function[1]) ? menu_draw :
NULL;
1014 static void rna_Panel_bl_description_set(
PointerRNA *
ptr,
const char *value)
1017 char *
str = (
char *)
data->type->description;
1022 BLI_assert(!
"setting the bl_description on a non-builtin panel");
1026 static void rna_Menu_bl_description_set(
PointerRNA *
ptr,
const char *value)
1029 char *
str = (
char *)
data->type->description;
1034 BLI_assert(!
"setting the bl_description on a non-builtin menu");
1045 static void rna_UILayout_active_set(
PointerRNA *
ptr,
bool value)
1050 static bool rna_UILayout_active_default_get(
PointerRNA *
ptr)
1055 static void rna_UILayout_active_default_set(
PointerRNA *
ptr,
bool value)
1065 static void rna_UILayout_activate_init_set(
PointerRNA *
ptr,
bool value)
1075 static void rna_UILayout_alert_set(
PointerRNA *
ptr,
bool value)
1080 static void rna_UILayout_op_context_set(
PointerRNA *
ptr,
int value)
1095 static void rna_UILayout_enabled_set(
PointerRNA *
ptr,
bool value)
1106 static void rna_UILayout_red_alert_set(
PointerRNA *
ptr,
bool value)
1116 static void rna_UILayout_keep_aspect_set(
PointerRNA *
ptr,
int value)
1127 static void rna_UILayout_alignment_set(
PointerRNA *
ptr,
int value)
1142 static void rna_UILayout_scale_x_set(
PointerRNA *
ptr,
float value)
1152 static void rna_UILayout_scale_y_set(
PointerRNA *
ptr,
float value)
1162 static void rna_UILayout_units_x_set(
PointerRNA *
ptr,
float value)
1172 static void rna_UILayout_units_y_set(
PointerRNA *
ptr,
float value)
1182 static void rna_UILayout_emboss_set(
PointerRNA *
ptr,
int value)
1187 static bool rna_UILayout_property_split_get(
PointerRNA *
ptr)
1192 static void rna_UILayout_property_split_set(
PointerRNA *
ptr,
bool value)
1197 static bool rna_UILayout_property_decorate_get(
PointerRNA *
ptr)
1202 static void rna_UILayout_property_decorate_set(
PointerRNA *
ptr,
bool value)
1229 {
UI_EMBOSS,
"NORMAL", 0,
"Regular",
"Draw standard button emboss style"},
1231 {
UI_EMBOSS_PULLDOWN,
"PULLDOWN_MENU", 0,
"Pulldown Menu",
"Draw pulldown menu style"},
1232 {
UI_EMBOSS_RADIAL,
"RADIAL_MENU", 0,
"Radial Menu",
"Draw radial menu style"},
1234 "UI_EMBOSS_NONE_OR_STATUS",
1237 "Draw with no emboss unless the button has a coloring status like an animation state"},
1252 prop,
"rna_UILayout_active_default_get",
"rna_UILayout_active_default_set");
1256 "When true, an operator button defined after this will be activated when pressing return"
1257 "(use with popup dialogs)");
1261 prop,
"rna_UILayout_activate_init_get",
"rna_UILayout_activate_init_set");
1265 "When true, buttons defined in popups will be activated on first display "
1266 "(use so you can type into a field without having to click on it first)");
1271 prop,
"rna_UILayout_op_context_get",
"rna_UILayout_op_context_set",
NULL);
1283 prop,
"rna_UILayout_alignment_get",
"rna_UILayout_alignment_set",
NULL);
1293 prop,
"rna_UILayout_keep_aspect_get",
"rna_UILayout_keep_aspect_set");
1299 prop,
"Scale X",
"Scale factor along the X for items in this (sub)layout");
1304 prop,
"Scale Y",
"Scale factor along the Y for items in this (sub)layout");
1309 prop,
"Units X",
"Fixed size along the X for items in this (sub)layout");
1314 prop,
"Units Y",
"Fixed size along the Y for items in this (sub)layout");
1323 prop,
"rna_UILayout_property_split_get",
"rna_UILayout_property_split_set");
1327 prop,
"rna_UILayout_property_decorate_get",
"rna_UILayout_property_decorate_set");
1342 "Defines if the panel has to be open or collapsed at the time of its creation"},
1347 "If set to False, the panel shows a header, which contains a clickable "
1348 "arrow to collapse the panel and the label (see bl_label)"},
1353 "Multiple panels with this type can be used as part of a list depending on data external "
1354 "to the UI. Used to create panels for the modifiers and other stacks"},
1356 "HEADER_LAYOUT_EXPAND",
1358 "Expand Header Layout",
1359 "Allow buttons in the header to stretch and shrink to fill the entire layout width"},
1360 {
PANEL_TYPE_DRAW_BOX,
"DRAW_BOX", 0,
"Box Style",
"Display panel with the box widget theme"},
1375 func,
"If this method returns a non-null output, then the panel can be drawn");
1412 prop,
"rna_Panel_custom_data_get",
NULL,
"rna_Panel_custom_data_typef",
NULL);
1422 "If this is set, the panel gets a custom ID, otherwise it takes the "
1423 "name of the class used to define the panel. For example, if the "
1424 "class name is \"OBJECT_PT_hello\", and bl_idname is not set by the "
1425 "script, then bl_idname = \"OBJECT_PT_hello\"");
1432 "The panel label, shows up in the panel header at the right of the "
1433 "triangle used to collapse the panel");
1468 prop,
"Region Type",
"The region where the panel is going to be used in");
1476 "The context in which the panel belongs to. (TODO: explain the "
1477 "possible combinations bl_context/bl_region_type/bl_space_type)");
1489 prop,
"Parent ID Name",
"If this is set, the panel becomes a sub-panel");
1502 "Panels with lower numbers are default ordered before panels with higher numbers");
1537 "If this is set, the uilist gets a custom ID, otherwise it takes the "
1538 "name of the class used to define the uilist (for example, if the "
1539 "class name is \"OBJECT_UL_vgroups\", and bl_idname is not set by the "
1540 "script, then bl_idname = \"OBJECT_UL_vgroups\")");
1556 prop,
"Filter by Name",
"Only show items matching this name (use '*' as wildcard)");
1580 prop,
"Lock Order",
"Lock the order of shown items (user cannot change it)");
1586 "Draw an item in the list (NOTE: when you define your own draw_item "
1587 "function, you may want to check given 'item' is of the right type...)");
1591 parm =
RNA_def_pointer(func,
"layout",
"UILayout",
"",
"Layout to draw the item");
1594 func,
"data",
"AnyType",
"",
"Data from which to take Collection property");
1596 parm =
RNA_def_pointer(func,
"item",
"AnyType",
"",
"Item of the collection property");
1599 func,
"icon", 0, 0, INT_MAX,
"",
"Icon of the item in the collection", 0, INT_MAX);
1605 "Data from which to take property for the active element");
1612 "Identifier of property in active_data, for the active element");
1614 RNA_def_int(func,
"index", 0, 0, INT_MAX,
"",
"Index of the item in the collection", 0, INT_MAX);
1626 parm =
RNA_def_pointer(func,
"layout",
"UILayout",
"",
"Layout to draw the item");
1633 "Filter and/or re-order items of the collection (output filter results in "
1634 "filter_flags, and reorder results in filter_neworder arrays)");
1639 func,
"data",
"AnyType",
"",
"Data from which to take Collection property");
1642 func,
"property",
NULL, 0,
"",
"Identifier of property in data, for the collection");
1650 "An array of filter flags, one for each item in the collection (NOTE: "
1651 "FILTER_ITEM bit is reserved, it defines whether the item is shown or not)");
1659 "An array of indices, one for each item in the collection, mapping the org "
1660 "index to the new one");
1670 "The value of the reserved bitflag 'FILTER_ITEM' (in filter_flags values)");
1709 "If this is set, the header gets a custom ID, otherwise it takes the "
1710 "name of the class used to define the panel; for example, if the "
1711 "class name is \"OBJECT_HT_hello\", and bl_idname is not set by the "
1712 "script, then bl_idname = \"OBJECT_HT_hello\"");
1719 prop,
"Space Type",
"The space where the header is going to be used in");
1728 "The region where the header is going to be used in "
1729 "(defaults to header region)");
1752 func,
"If this method returns a non-null output, then the menu can be drawn");
1778 "If this is set, the menu gets a custom ID, otherwise it takes the "
1779 "name of the class used to define the menu (for example, if the "
1780 "class name is \"OBJECT_MT_hello\", and bl_idname is not set by the "
1781 "script, then bl_idname = \"OBJECT_MT_hello\")");
struct bScreen * CTX_wm_screen(const bContext *C)
struct IDProperty * IDP_New(const char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
struct SpaceType * BKE_spacetype_from_id(int spaceid)
@ PANEL_TYPE_DEFAULT_CLOSED
@ PANEL_TYPE_HEADER_EXPAND
A dynamically sized string ADT.
void BLI_kdtree_nd_() free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
struct LinkData * BLI_genericNodeN(void *data)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findptr(const struct ListBase *listbase, const void *ptr, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
#define RGN_TYPE_HAS_CATEGORY_MASK
#define PNL_CATEGORY_FALLBACK
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
static void panel_draw(const bContext *UNUSED(C), Panel *panel)
#define RNA_DYN_DESCR_MAX
void(* StructFreeFunc)(void *data)
int(* StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function)
@ STRUCT_NO_DATABLOCK_IDPROPERTIES
@ STRUCT_PUBLIC_NAMESPACE_INHERIT
int(* StructCallbackFunc)(struct bContext *C, struct PointerRNA *ptr, struct FunctionRNA *func, ParameterList *list)
bool uiLayoutGetActivateInit(uiLayout *layout)
void uiLayoutSetActive(uiLayout *layout, bool active)
bool uiLayoutGetPropDecorate(uiLayout *layout)
int uiLayoutGetAlignment(uiLayout *layout)
void uiLayoutSetUnitsY(uiLayout *layout, float unit)
@ UI_EMBOSS_NONE_OR_STATUS
void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext)
void uiLayoutSetEnabled(uiLayout *layout, bool enabled)
float uiLayoutGetUnitsY(uiLayout *layout)
void uiLayoutSetScaleY(uiLayout *layout, float scale)
void uiLayoutSetActiveDefault(uiLayout *layout, bool active_default)
void uiLayoutSetRedAlert(uiLayout *layout, bool redalert)
struct PointerRNA * UI_panel_custom_data_get(const struct Panel *panel)
void uiLayoutSetScaleX(uiLayout *layout, float scale)
float uiLayoutGetUnitsX(uiLayout *layout)
void uiLayoutSetAlignment(uiLayout *layout, char alignment)
bool uiLayoutGetEnabled(uiLayout *layout)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
float uiLayoutGetScaleY(uiLayout *layout)
bool uiLayoutGetActive(uiLayout *layout)
void UI_panels_free_instanced(const struct bContext *C, struct ARegion *region)
bool uiLayoutGetKeepAspect(uiLayout *layout)
bool uiLayoutGetPropSep(uiLayout *layout)
void uiLayoutSetUnitsX(uiLayout *layout, float unit)
eUIEmbossType uiLayoutGetEmboss(uiLayout *layout)
int uiLayoutGetLocalDir(const uiLayout *layout)
void uiLayoutSetKeepAspect(uiLayout *layout, bool keepaspect)
bool uiLayoutGetActiveDefault(uiLayout *layout)
int uiLayoutGetOperatorContext(uiLayout *layout)
void uiLayoutSetEmboss(uiLayout *layout, eUIEmbossType emboss)
float uiLayoutGetScaleX(uiLayout *layout)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
void uiLayoutSetActivateInit(uiLayout *layout, bool activate_init)
bool uiLayoutGetRedAlert(uiLayout *layout)
@ WM_OP_INVOKE_REGION_WIN
@ WM_OP_EXEC_REGION_PREVIEW
@ WM_OP_INVOKE_REGION_PREVIEW
@ WM_OP_EXEC_REGION_CHANNELS
@ WM_OP_INVOKE_REGION_CHANNELS
return(oflags[bm->toolflag_index].f &oflag) !=0
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
int RNA_collection_length(PointerRNA *ptr, const char *name)
void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value)
bool RNA_struct_available_or_report(ReportList *reports, const char *identifier)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *UNUSED(ptr), FunctionRNA *func)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
int RNA_parameter_dynamic_length_get(ParameterList *parms, PropertyRNA *parm)
PropertyRNA * RNA_function_find_parameter(PointerRNA *UNUSED(ptr), FunctionRNA *func, const char *identifier)
bool RNA_struct_bl_idname_ok_or_report(ReportList *reports, const char *identifier, const char *sep)
const char * RNA_struct_state_owner_get(void)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_struct_flag(StructRNA *srna, int flag)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_define_verify_sdna(bool verify)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_function_output(FunctionRNA *UNUSED(func), PropertyRNA *ret)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_string_maxlength(PropertyRNA *prop, int maxlength)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_string_default(PropertyRNA *prop, const char *value)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_idprops_func(StructRNA *srna, const char *idproperties)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_translation_context(StructRNA *srna, const char *context)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_api_ui_layout(struct StructRNA *srna)
const EnumPropertyItem rna_enum_region_type_items[]
const EnumPropertyItem rna_enum_space_type_items[]
const EnumPropertyItem rna_enum_operator_context_items[]
static void rna_def_header(BlenderRNA *brna)
const EnumPropertyItem rna_enum_uilist_layout_type_items[]
static void rna_def_uilist(BlenderRNA *brna)
static void rna_def_ui_layout(BlenderRNA *brna)
static void rna_def_menu(BlenderRNA *brna)
static void rna_def_panel(BlenderRNA *brna)
void RNA_def_ui(BlenderRNA *brna)
struct ARegionType * next
char owner_id[BKE_ST_MAXNAME]
void(* draw)(const struct bContext *C, struct Panel *panel)
void(* draw_header_preset)(const struct bContext *C, struct Panel *panel)
bool(* poll)(const struct bContext *C, struct PanelType *pt)
void(* draw_header)(const struct bContext *C, struct Panel *panel)
char idname[BKE_ST_MAXNAME]
char translation_context[BKE_ST_MAXNAME]
struct PanelType * parent
int * items_filter_neworder
char idname[BKE_ST_MAXNAME]
uiListFilterItemsFunc filter_items
uiListDrawFilterFunc draw_filter
uiListDrawItemFunc draw_item
void WM_main_add_notifier(unsigned int type, void *reference)
bool WM_paneltype_add(PanelType *pt)
void WM_paneltype_remove(PanelType *pt)
bool WM_uilisttype_add(uiListType *ult)
void WM_uilisttype_freelink(uiListType *ult)
uiListType * WM_uilisttype_find(const char *idname, bool quiet)