26#include "RNA_prototypes.hh"
55 layout->
op(
"CONSTRAINT_OT_apply",
60 layout->
op(
"CONSTRAINT_OT_copy",
64 layout->
op(
"CONSTRAINT_OT_copy_to_selected",
71 row = &layout->
column(
false);
72 op_ptr = row->
op(
"CONSTRAINT_OT_move_to_index",
83 row = &layout->
column(
false);
84 op_ptr = row->
op(
"CONSTRAINT_OT_move_to_index",
135 sub = &row->
row(
false);
138 sub->
op(
"CONSTRAINT_OT_delete",
"", ICON_X);
177#define CONSTRAINT_TYPE_PANEL_PREFIX "OBJECT_PT_"
178#define CONSTRAINT_BONE_TYPE_PANEL_PREFIX "BONE_PT_"
205 RNA_enum_set(&props_ptr,
"owner", constraint_from_bone ? 1 : 0);
243 if (cti ==
nullptr) {
255 if (cti ==
nullptr) {
267 if (use_bone_constraints) {
270 else if (ob !=
nullptr) {
300 panel_id_func(con, panel_idname);
303 PointerRNA *con_ptr = MEM_new<PointerRNA>(__func__);
338 PointerRNA *con_ptr = MEM_new<PointerRNA>(__func__);
347#undef CONSTRAINT_TYPE_PANEL_PREFIX
348#undef CONSTRAINT_BONE_TYPE_PANEL_PREFIX
const bConstraintTypeInfo * BKE_constraint_typeinfo_from_type(int type)
ARegion * CTX_wm_region(const bContext *C)
#define LISTBASE_FOREACH(type, var, list)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define BLI_string_join(...)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define ID_IS_EDITABLE(_id)
@ CONSTRAINT_TYPE_KINEMATIC
void(*)(void *data_link, char *r_idname) uiListPanelIDFromDataFunc
#define RNA_warning(format,...)
void UI_block_emboss_set(uiBlock *block, blender::ui::EmbossType emboss)
void UI_block_lock_clear(uiBlock *block)
void UI_panels_free_instanced(const bContext *C, ARegion *region)
void UI_panel_custom_data_set(Panel *panel, PointerRNA *custom_data)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
bool UI_panel_list_matches_data(ARegion *region, ListBase *data, uiListPanelIDFromDataFunc panel_idname_func)
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
void UI_panel_context_pointer_set(Panel *panel, const char *name, PointerRNA *ptr)
Panel * UI_panel_add_instanced(const bContext *C, ARegion *region, ListBase *panels, const char *panel_idname, PointerRNA *custom_data)
void UI_block_lock_set(uiBlock *block, bool val, const char *lockstr)
BMesh const char void * data
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
static void draw_constraint_header(uiLayout *layout, Object *ob, bConstraint *con)
static void constraint_active_func(bContext *, void *ob_v, void *con_v)
void uiTemplateConstraintHeader(uiLayout *layout, PointerRNA *ptr)
static void bone_constraint_panel_id(void *md_link, char *r_idname)
static bool constraint_panel_is_bone(Panel *panel)
void uiTemplateConstraints(uiLayout *, bContext *C, bool use_bone_constraints)
static void object_constraint_panel_id(void *md_link, char *r_idname)
static short get_constraint_expand_flag(const bContext *, Panel *panel)
#define CONSTRAINT_BONE_TYPE_PANEL_PREFIX
static void constraint_reorder(bContext *C, Panel *panel, int new_index)
static void set_constraint_expand_flag(const bContext *, Panel *panel, short expand_flag)
#define CONSTRAINT_TYPE_PANEL_PREFIX
static void constraint_ops_extra_draw(bContext *C, uiLayout *layout, void *con_v)
#define ERROR_LIBDATA_MESSAGE
void constraint_active_set(Object *ob, bConstraint *con)
ListBase * pose_constraint_list(const bContext *C)
Object * context_active_object(const bContext *C)
ListBase * constraint_list_from_constraint(Object *ob, bConstraint *con, bPoseChannel **r_pchan)
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_int_set(PointerRNA *ptr, const char *name, int value)
int RNA_struct_ui_icon(const StructRNA *type)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
void(* reorder)(bContext *C, Panel *pa, int new_index)
void(* set_list_data_expand_flag)(const bContext *C, Panel *pa, short expand_flag)
short(* get_list_data_expand_flag)(const bContext *C, Panel *pa)
struct bConstraint * prev
struct bConstraint * next
void operator_context_set(blender::wm::OpCallContext opcontext)
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
void red_alert_set(bool red_alert)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void enabled_set(bool enabled)
void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg)
void context_ptr_set(blender::StringRef name, const PointerRNA *ptr)
void ui_units_x_set(float width)
uiLayout & row(bool align)
void emboss_set(blender::ui::EmbossType emboss)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
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, blender::wm::OpCallContext 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)