31#include "RNA_prototypes.hh"
106#define ERROR_LIBDATA_MESSAGE N_("External library data")
113 if (r_ob_ptr !=
nullptr) {
129 const std::optional<StringRefNull> invert_vgroup_prop,
130 const std::optional<StringRefNull> text)
135 uiItemPointerR(row,
ptr, vgroup_prop, ob_ptr,
"vertex_groups", text, ICON_GROUP_VERTEX);
136 if (invert_vgroup_prop) {
193 if (
ELEM(particle_type,
225 layout->
op(
"OBJECT_OT_modifier_apply",
229 op_ptr = layout->
op(
"OBJECT_OT_modifier_apply",
230 IFACE_(
"Apply (All Keyframes)"),
237 layout->
op(
"OBJECT_OT_modifier_apply",
245 "OBJECT_OT_modifier_apply_as_shapekey",
250 op_ptr = layout->
op(
"OBJECT_OT_modifier_apply_as_shapekey",
265 layout->
op(
"OBJECT_OT_modifier_copy",
270 layout->
op(
"OBJECT_OT_modifier_copy_to_selected",
277 op_ptr = layout->
op(
"OBJECT_OT_modifier_move_to_index",
285 op_ptr = layout->
op(
"OBJECT_OT_modifier_move_to_index",
298 op_ptr = layout->
op(
"OBJECT_OT_geometry_nodes_move_to_nodes",
324 sub = &layout->
row(
true);
332 row = &layout->
row(
true);
336 int buttons_number = 0;
337 name_row = &row->
row(
true);
344 sub = &row->
row(
true);
356 sub = &row->
row(
true);
358 static int apply_on_spline_always_off_hack = 0;
368 &apply_on_spline_always_off_hack,
371 RPT_(
"Apply on Spline"));
373 "This modifier can only deform filled curve/surface, not the control points");
380 sub = &row->
row(
true);
392 &apply_on_spline_always_on_hack,
395 RPT_(
"Apply on Spline"));
397 "This modifier can only deform control points, not the filled curve/surface");
409 sub = &row->
row(
true);
424 sub = &row->
row(
false);
426 sub->
op(
"OBJECT_OT_modifier_remove",
"", ICON_X);
432 PointerRNA op_ptr = row->
op(
"WM_OT_properties_context_change",
"", ICON_PROPERTIES);
439 PointerRNA op_ptr = row->
op(
"WM_OT_properties_context_change",
"", ICON_PROPERTIES);
446 bool display_name = (panel->
sizex /
UI_UNIT_X - buttons_number > 5) || (panel->
sizex == 0);
476 panel_type->
draw = draw;
508 panel_type->
draw = draw;
513 panel_type->
parent = parent;
Scene * CTX_data_scene(const bContext *C)
bool BKE_modifier_is_non_geometrical(ModifierData *md)
int BKE_modifiers_get_cage_index(const Scene *scene, Object *ob, int *r_lastPossibleCageIndex, bool is_virtual)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
@ eModifierTypeFlag_SupportsEditmode
bool BKE_modifier_supports_cage(Scene *scene, ModifierData *md)
bool BKE_modifier_is_same_topology(ModifierData *md)
void BKE_modifier_type_panel_id(ModifierType type, char *r_idname)
bool BKE_modifier_couldbe_cage(Scene *scene, ModifierData *md)
@ PANEL_TYPE_DEFAULT_CLOSED
@ PANEL_TYPE_HEADER_EXPAND
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
LinkData * BLI_genericNodeN(void *data)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define SNPRINTF(dst, format,...)
char * STRNCPY(char(&dst)[N], const char *src)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
@ eModifierMode_ApplyOnSpline
@ eModifierType_ParticleSystem
@ eModifierType_MeshDeform
@ eModifierType_Collision
@ eModifierType_DynamicPaint
Object is a sort of wrapper for general info.
@ PART_FLUID_SPRAYFOAMBUBBLE
Read Guarded memory(de)allocation.
void modifier_vgroup_ui(uiLayout *layout, PointerRNA *ptr, PointerRNA *ob_ptr, const StringRefNull vgroup_prop, const std::optional< StringRefNull > invert_vgroup_prop, const std::optional< StringRefNull > text)
static void modifier_reorder(bContext *C, Panel *panel, int new_index)
PanelType * modifier_subpanel_register(ARegionType *region_type, const char *name, const char *label, PanelDrawFn draw_header, PanelDrawFn draw, PanelType *parent)
static void modifier_panel_header(const bContext *C, Panel *panel)
static int modifier_is_simulation(const ModifierData *md)
void modifier_grease_pencil_curve_header_draw(const bContext *, Panel *panel)
static bool modifier_ui_poll(const bContext *C, PanelType *)
void modifier_grease_pencil_curve_panel_draw(const bContext *, Panel *panel)
PanelType * modifier_panel_register(ARegionType *region_type, ModifierType type, PanelDrawFn draw)
static bool modifier_can_delete(ModifierData *md)
static void set_modifier_expand_flag(const bContext *, Panel *panel, short expand_flag)
static short get_modifier_expand_flag(const bContext *, Panel *panel)
PointerRNA * modifier_panel_get_property_pointers(Panel *panel, PointerRNA *r_ob_ptr)
void modifier_error_message_draw(uiLayout *layout, PointerRNA *ptr)
static void modifier_ops_extra_draw(bContext *C, uiLayout *layout, void *md_v)
void UI_but_disable(uiBut *but, const char *disabled_hint)
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
void UI_panel_context_pointer_set(Panel *panel, const char *name, PointerRNA *ptr)
void UI_block_lock_set(uiBlock *block, bool val, const char *lockstr)
uiBut * uiDefIconButBitI(uiBlock *block, int type, int bit, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, std::optional< blender::StringRef > tip)
void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname, int type, bool levels, bool brush, bool neg_slope, bool tone)
void uiLayoutSetContextPointer(uiLayout *layout, blender::StringRef name, PointerRNA *ptr)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiItemPointerR(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname, PointerRNA *searchptr, blender::StringRefNull searchpropname, std::optional< blender::StringRefNull > name, int icon)
void uiLayoutSetRedAlert(uiLayout *layout, bool redalert)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
void uiLayoutSetAlignment(uiLayout *layout, char alignment)
void uiLayoutSetUnitsX(uiLayout *layout, float unit)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
void uiLayoutSetEmboss(uiLayout *layout, blender::ui::EmbossType emboss)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
constexpr const char * c_str() const
void(*)(const bContext *, Panel *) PanelDrawFn
#define ID_IS_EDITABLE(_id)
#define ERROR_LIBDATA_MESSAGE
void * MEM_callocN(size_t len, const char *str)
Object * context_active_object(const bContext *C)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
int RNA_struct_ui_icon(const StructRNA *type)
int RNA_string_length(PointerRNA *ptr, const char *name)
bool RNA_pointer_is_null(const PointerRNA *ptr)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
bool(* is_disabled)(const Scene *scene, ModifierData *md, bool use_render_params)
void(* reorder)(bContext *C, Panel *pa, int new_index)
void(* set_list_data_expand_flag)(const bContext *C, Panel *pa, short expand_flag)
void(* draw)(const bContext *C, Panel *panel)
char idname[BKE_ST_MAXNAME]
bool(* poll)(const bContext *C, PanelType *pt)
char pin_to_last_property[BKE_ST_MAXNAME]
char context[BKE_ST_MAXNAME]
char translation_context[BKE_ST_MAXNAME]
char active_property[BKE_ST_MAXNAME]
char label[BKE_ST_MAXNAME]
short(* get_list_data_expand_flag)(const bContext *C, Panel *pa)
char parent_id[BKE_ST_MAXNAME]
void(* draw_header)(const bContext *C, Panel *panel)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag)
void label(blender::StringRef name, int icon)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg)
uiLayout & row(bool align)
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)
wmOperatorStatus WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)