40#include "RNA_prototypes.hh"
64 ListBase anim_data = {
nullptr,
nullptr};
105 ListBase anim_data = {
nullptr,
nullptr};
108 const bool use_upper_stack_evaluation =
RNA_boolean_get(op->
ptr,
"use_upper_stack_evaluation");
135 if (use_upper_stack_evaluation) {
163 if (ac.
scene && ok) {
184 ot->name =
"Enter Tweak Mode";
185 ot->idname =
"NLA_OT_tweakmode_enter";
187 "Enter tweaking mode for the action referenced by the active strip to edit its keyframes";
201 "Enable 'solo' on the NLA Track containing the active strip, "
202 "to edit it without seeing the effects of the NLA stack");
206 "use_upper_stack_evaluation",
208 "Evaluate Upper Stack",
209 "In tweak mode, display the effects of the tracks above the tweak strip");
221 ListBase anim_data = {
nullptr,
nullptr};
294 ot->name =
"Exit Tweak Mode";
295 ot->idname =
"NLA_OT_tweakmode_exit";
296 ot->description =
"Exit tweaking mode for the action referenced by the active strip";
310 "Disable 'solo' on any of the NLA Tracks after exiting tweak mode "
311 "to get things back to normal");
326 ListBase anim_data = {
nullptr,
nullptr};
327 bool found_bounds =
false;
336 *
max = -999999999.0f;
339 if (anim_data.
first) {
348 *
min = std::min(*
min, strip->start);
349 *
max = std::max(*
max, strip->end);
361 if (found_bounds ==
false) {
390 if (ac.
scene ==
nullptr) {
412 ot->name =
"Set Preview Range to Selected";
413 ot->idname =
"NLA_OT_previewrange_set";
414 ot->description =
"Set Preview Range based on extends of selected strips";
439 ListBase anim_data = {
nullptr,
nullptr};
504 if (only_sel ==
false) {
517 float ymid = (ymax - ymin) / 2.0f + ymin;
551 ot->name =
"Frame All";
552 ot->idname =
"NLA_OT_view_all";
553 ot->description =
"Reset viewable area to show full strips range";
566 ot->name =
"Frame Selected";
567 ot->idname =
"NLA_OT_view_selected";
568 ot->description =
"Reset viewable area to show selected strips range";
594 ot->name =
"Go to Current Frame";
595 ot->idname =
"NLA_OT_view_frame";
596 ot->description =
"Move the view to the current frame";
635 ListBase anim_data = {
nullptr,
nullptr};
641 "No active track(s) to add strip to, select an existing track or add one before "
655 ListBase anim_data = {
nullptr,
nullptr};
663 float cfra = float(scene->
r.
cfra);
669 if (act ==
nullptr) {
679 "Action '%s' does not specify what data-blocks it can be used on "
680 "(try setting the 'ID Root Type' setting from the data-blocks editor "
681 "for this action to avoid future problems)",
709 "Could not add action '%s' as it cannot be used relative to ID-blocks of type '%s'",
718 "Expecting the owner of an ALE to be the animated ID, not the Action");
719 ID &animated_id = *ale->id;
722 strip->
end += (cfra - strip->
start);
759 ot->name =
"Add Action Strip";
760 ot->idname =
"NLA_OT_actionclip_add";
762 "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track";
792 ListBase anim_data = {
nullptr,
nullptr};
820 for (; s1 && s2; s1 = s2, s2 = s2->
next) {
890 "Needs at least a pair of adjacent selected strips with a gap between them");
897 ot->name =
"Add Transition";
898 ot->idname =
"NLA_OT_transition_add";
899 ot->description =
"Add a transition strip between two adjacent selected strips";
920 ListBase anim_data = {
nullptr,
nullptr};
928 int cfra = scene->
r.
cfra;
954 strip->
start += cfra;
987 ot->name =
"Add Sound Clip";
988 ot->idname =
"NLA_OT_soundclip_add";
989 ot->description =
"Add a strip for controlling when speaker plays its sound clip";
1012 ListBase anim_data = {
nullptr,
nullptr};
1062 ot->name =
"Add Meta-Strips";
1063 ot->idname =
"NLA_OT_meta_add";
1064 ot->description =
"Add new meta-strips incorporating the selected strips";
1086 ListBase anim_data = {
nullptr,
nullptr};
1127 ot->name =
"Remove Meta-Strips";
1128 ot->idname =
"NLA_OT_meta_remove";
1129 ot->description =
"Separate out the strips held by the selected meta-strips";
1152 ListBase anim_data = {
nullptr,
nullptr};
1241 ot->name =
"Duplicate Strips";
1242 ot->idname =
"NLA_OT_duplicate";
1243 ot->description =
"Duplicate selected NLA-Strips, adding the new strips to new track(s)";
1258 "When duplicating strips, assign new copies of the actions they use");
1273 ListBase anim_data = {
nullptr,
nullptr};
1296 nstrip = strip->
next;
1302 if (ale->adt && ale->adt->actstrip == strip) {
1311 nstrip = nstrip->
next;
1339 ot->name =
"Delete Strips";
1340 ot->idname =
"NLA_OT_delete";
1341 ot->description =
"Delete selected strips";
1368 float splitframe, splitaframe;
1373 if ((cfra > strip->
start) && (cfra < strip->end)) {
1388 splitframe = strip->
start + (
len / 2.0f);
1393 splitaframe = strip->
actend;
1409 strip->
end = splitframe;
1410 nstrip->
start = splitframe;
1412 if ((splitaframe > strip->
actstart) && (splitaframe < strip->actend)) {
1414 strip->
actend = splitaframe;
1441 ListBase anim_data = {
nullptr,
nullptr};
1470 switch (strip->
type) {
1502 ot->name =
"Split Strips";
1503 ot->idname =
"NLA_OT_split";
1504 ot->description =
"Split selected strips at their midpoints";
1528 ListBase anim_data = {
nullptr,
nullptr};
1571 ot->name =
"Toggle Muting";
1572 ot->idname =
"NLA_OT_mute_toggle";
1573 ot->description =
"Mute or un-mute selected strips";
1595 ListBase anim_data = {
nullptr,
nullptr};
1611 NlaStrip *strip, *stripN =
nullptr;
1612 NlaStrip *area =
nullptr, *sb =
nullptr;
1642 stripN = strip->
next;
1646 if (area ==
nullptr) {
1650 else if (sb ==
nullptr) {
1666 "Too many clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1669 else if (area ==
nullptr) {
1673 else if (sb ==
nullptr) {
1678 "Too few clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1682 float nsa[2], nsb[2];
1692 nsa[1] = sb->start + (area->
end - area->
start);
1694 nsb[0] = area->
start;
1695 nsb[1] = area->
start + (sb->end - sb->start);
1702 area->
start = nsa[0];
1712 if (nsb[1] > nsa[0]) {
1715 "Cannot swap selected strips because they will overlap each other in their "
1722 "Cannot swap selected strips as they will not be able to fit in their new places");
1727 "Cannot swap '%s' and '%s' as one or both will not be able to fit in their "
1760 ot->name =
"Swap Strips";
1761 ot->idname =
"NLA_OT_swap";
1762 ot->description =
"Swap order of selected strips within tracks";
1784 ListBase anim_data = {
nullptr,
nullptr};
1807 if (nltn ==
nullptr) {
1820 stripn = strip->
next;
1851 ot->name =
"Move Strips Up";
1852 ot->idname =
"NLA_OT_move_up";
1853 ot->description =
"Move selected strips up a track if there's room";
1875 ListBase anim_data = {
nullptr,
nullptr};
1898 if (nltp ==
nullptr) {
1911 stripn = strip->
next;
1942 ot->name =
"Move Strips Down";
1943 ot->idname =
"NLA_OT_move_down";
1944 ot->description =
"Move selected strips down a track if there's room";
1966 ListBase anim_data = {
nullptr,
nullptr};
2001 if (strip->act ==
nullptr) {
2026 ot->name =
"Sync Action Length";
2027 ot->idname =
"NLA_OT_action_sync_length";
2029 "Synchronize the length of the referenced Action with the length used in the strip";
2042 "Active Strip Only",
2043 "Only sync the active length for the active strip");
2059 ListBase anim_data = {
nullptr,
nullptr};
2060 bool copied =
false;
2082 if (strip->act ==
nullptr) {
2095 strip->act = new_action;
2127 IFACE_(
"Make Selected Strips Single-User"),
2128 IFACE_(
"Linked actions will be duplicated for each selected strip."),
2139 ot->name =
"Make Single User";
2140 ot->idname =
"NLA_OT_make_single_user";
2141 ot->description =
"Make linked action local to each strip";
2181 ListBase anim_data = {
nullptr,
nullptr};
2182 bool copied =
false;
2211 if (strip->act->id.us > 1) {
2227 action, strip->action_slot_handle);
2229 for (
FCurve *fcurve : fcurves) {
2248 strip->scale = 1.0f;
2249 strip->actstart = start;
2250 strip->actend = end;
2280 ot->name =
"Apply Scale";
2281 ot->idname =
"NLA_OT_apply_scale";
2282 ot->description =
"Apply scaling of selected strips to their referenced Actions";
2304 ListBase anim_data = {
nullptr,
nullptr};
2346 ot->name =
"Clear Scale";
2347 ot->idname =
"NLA_OT_clear_scale";
2348 ot->description =
"Reset scaling of selected strips";
2374 {0,
nullptr, 0,
nullptr,
nullptr},
2381 ListBase anim_data = {
nullptr,
nullptr};
2401 bool any_added =
false;
2405 ListBase tmp_strips = {
nullptr,
nullptr};
2420 stripn = strip->
next;
2426 start = strip->start;
2432 strip->start = float(scene->
r.
cfra);
2435 strip->start =
floorf(start + 0.5f);
2438 strip->start =
floorf(start / secf + 0.5f) * secf;
2444 strip->start = start;
2449 strip->end = strip->start + (end - start);
2462 stripn = strip->
next;
2509 ot->name =
"Snap Strips";
2510 ot->idname =
"NLA_OT_snap";
2511 ot->description =
"Move start of strips to specified time";
2552 if (fmi ==
nullptr) {
2575 ListBase anim_data = {
nullptr,
nullptr};
2630 "Modifier could not be added to (%s : %s) (see console for details)",
2653 ot->name =
"Add F-Modifier";
2654 ot->idname =
"NLA_OT_fmodifier_add";
2655 ot->description =
"Add F-Modifier to the active/selected NLA-Strips";
2674 "Only add a F-Modifier of the specified type to the active strip");
2687 ListBase anim_data = {
nullptr,
nullptr};
2734 ot->name =
"Copy F-Modifiers";
2735 ot->idname =
"NLA_OT_fmodifier_copy";
2736 ot->description =
"Copy the F-Modifier(s) of the active NLA-Strip";
2751 "Copy all the F-Modifiers, instead of just the active one");
2764 ListBase anim_data = {
nullptr,
nullptr};
2827 ot->name =
"Paste F-Modifiers";
2828 ot->idname =
"NLA_OT_fmodifier_paste";
2829 ot->description =
"Add copied F-Modifiers to the selected NLA-Strips";
2840 ot->srna,
"only_active",
true,
"Only Active",
"Only paste F-Modifiers on active strip");
2848 "Replace existing F-Modifiers, instead of just appending to the end of the existing list");
Functions and classes to work with Actions.
Functions for backward compatibility with the legacy Action API.
bScreen * CTX_wm_screen(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
Main * CTX_data_main(const bContext *C)
const FModifierTypeInfo * get_fmodifier_typeinfo(int type)
void BKE_fcurve_handles_recalc(FCurve *fcu)
FModifier * add_fmodifier(ListBase *modifiers, int type, FCurve *owner_fcu)
void set_active_fmodifier(ListBase *modifiers, FModifier *fcm)
ID * BKE_id_copy(Main *bmain, const ID *id)
void BKE_nlameta_flush_transforms(NlaStrip *mstrip)
void BKE_nlastrip_remove_and_free(ListBase *strips, NlaStrip *strip, const bool do_id_user)
bool BKE_nlatrack_add_strip(NlaTrack *nlt, NlaStrip *strip, bool is_liboverride)
void BKE_nlastrips_clear_metastrip(ListBase *strips, NlaStrip *strip)
void BKE_nlastrip_recalculate_bounds_sync_action(NlaStrip *strip)
void BKE_nlastrips_clear_metas(ListBase *strips, bool only_sel, bool only_temp)
void BKE_nla_tweakmode_exit(OwnedAnimData owned_adt)
NlaStrip * BKE_nlastrip_copy(Main *bmain, NlaStrip *strip, bool use_same_action, int flag)
void BKE_nla_validate_state(AnimData *adt)
void BKE_nlatrack_solo_toggle(AnimData *adt, NlaTrack *nlt)
void BKE_nlatrack_set_active(ListBase *tracks, NlaTrack *nlt)
NlaStrip * BKE_nlastrip_new(bAction *act, ID &animated_id)
void BKE_nlatrack_remove_strip(NlaTrack *track, NlaStrip *strip)
NlaTrack * BKE_nlatrack_new_after(ListBase *nla_tracks, NlaTrack *prev, bool is_liboverride)
bool BKE_nlastrips_has_space(ListBase *strips, float start, float end)
NlaTrack * BKE_nlatrack_new_tail(ListBase *nla_tracks, const bool is_liboverride)
NlaTrack * BKE_nlatrack_find_tweaked(AnimData *adt)
bool BKE_nla_tweakmode_enter(OwnedAnimData owned_adt)
bool BKE_nlatrack_has_space(NlaTrack *nlt, float start, float end)
NlaStrip * BKE_nla_add_soundstrip(Main *bmain, Scene *scene, Speaker *speaker)
bool BKE_nlatrack_is_nonlocal_in_liboverride(const ID *id, const NlaTrack *nlt)
void BKE_nlastrip_validate_name(AnimData *adt, NlaStrip *strip)
void BKE_nlastrips_make_metas(ListBase *strips, bool is_temp)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
#define BLI_assert_msg(a, msg)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_count_is_equal_to(const ListBase *listbase, const int count_cmp)
MINLINE int round_fl_to_int(float a)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
#define BLT_I18NCONTEXT_ID_ACTION
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ NLASTRIP_FLAG_TEMP_META
@ NLASTRIP_FLAG_AUTO_BLENDS
@ NLASTRIP_FLAG_SYNC_LENGTH
@ ADT_NLA_EVAL_UPPER_TRACKS
@ NLASTRIP_TYPE_TRANSITION
Object is a sort of wrapper for general info.
#define NLATRACK_FIRST_TOP(ac)
#define NLATRACK_STEP(snla)
@ ACHANNEL_SETTING_SELECT
@ ANIMFILTER_DATA_VISIBLE
@ ANIMFILTER_LIST_VISIBLE
@ ANIMFILTER_LIST_CHANNELS
#define NLATRACK_HEIGHT(snla)
void ED_area_tag_redraw(ScrArea *area)
bool ED_operator_nla_active(bContext *C)
Read Guarded memory(de)allocation.
const EnumPropertyItem * RNA_action_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
void UI_view2d_sync(bScreen *screen, ScrArea *area, View2D *v2dcur, int flag)
void UI_view2d_center_get(const View2D *v2d, float *r_x, float *r_y)
void UI_view2d_center_set(View2D *v2d, float x, float y)
short ANIM_channel_setting_get(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
const bAnimChannelType * ANIM_channel_get_typeinfo(const bAnimListElem *ale)
void ANIM_animdata_freelist(ListBase *anim_data)
void ANIM_animdata_update(bAnimContext *ac, ListBase *anim_data)
void ANIM_center_frame(bContext *C, int smooth_viewtx)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
size_t ANIM_animdata_filter(bAnimContext *ac, ListBase *anim_data, const eAnimFilter_Flags filter_mode, void *data, const eAnimCont_Types datatype)
int ED_markers_find_nearest_marker_time(ListBase *markers, float x)
float nlastrip_get_frame(NlaStrip *strip, float cframe, short mode)
bool ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, bool replace, FCurve *curve)
void ANIM_fmodifiers_copybuf_free()
bool ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, bool active)
#define ID_IS_EDITABLE(_id)
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb)
void * MEM_callocN(size_t len, const char *str)
bool action_treat_as_legacy(const bAction &action)
Span< FCurve * > fcurves_for_action_slot(Action &action, slot_handle_t slot_handle)
static wmOperatorStatus nlaedit_previewrange_exec(bContext *C, wmOperator *)
static wmOperatorStatus nlaedit_apply_scale_exec(bContext *C, wmOperator *)
void NLA_OT_view_frame(wmOperatorType *ot)
static wmOperatorStatus nlaedit_add_actionclip_exec(bContext *C, wmOperator *op)
void NLA_OT_view_all(wmOperatorType *ot)
void NLA_OT_fmodifier_add(wmOperatorType *ot)
void NLA_OT_split(wmOperatorType *ot)
void NLA_OT_tweakmode_exit(wmOperatorType *ot)
static wmOperatorStatus nlaedit_move_up_exec(bContext *C, wmOperator *)
static wmOperatorStatus nlaedit_snap_exec(bContext *C, wmOperator *op)
static wmOperatorStatus nlaedit_clear_scale_exec(bContext *C, wmOperator *)
static wmOperatorStatus nlaedit_split_exec(bContext *C, wmOperator *)
static bool nla_tracks_get_selected_extents(bAnimContext *ac, float *r_min, float *r_max)
void ED_nla_postop_refresh(bAnimContext *ac)
void NLA_OT_soundclip_add(wmOperatorType *ot)
void NLA_OT_tweakmode_enter(wmOperatorType *ot)
void NLA_OT_clear_scale(wmOperatorType *ot)
void NLA_OT_make_single_user(wmOperatorType *ot)
static wmOperatorStatus nlaedit_viewsel_exec(bContext *C, wmOperator *)
void NLA_OT_meta_add(wmOperatorType *ot)
static void get_nlastrip_extents(bAnimContext *ac, float *min, float *max, const bool only_sel)
void NLA_OT_meta_remove(wmOperatorType *ot)
static int nlaedit_get_editable_tracks(bAnimContext *ac, ListBase *anim_data)
static wmOperatorStatus nlaedit_add_transition_exec(bContext *C, wmOperator *op)
void NLA_OT_snap(wmOperatorType *ot)
static wmOperatorStatus nlaedit_disable_tweakmode_exec(bContext *C, wmOperator *op)
void NLA_OT_swap(wmOperatorType *ot)
static wmOperatorStatus nlaedit_make_single_user_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus nlaedit_duplicate_exec(bContext *C, wmOperator *op)
static wmOperatorStatus nlaedit_sync_actlen_exec(bContext *C, wmOperator *op)
static wmOperatorStatus nlaedit_toggle_mute_exec(bContext *C, wmOperator *)
void NLA_OT_mute_toggle(wmOperatorType *ot)
void NLA_OT_move_up(wmOperatorType *ot)
static void nlaedit_split_strip_meta(NlaTrack *nlt, NlaStrip *strip)
static wmOperatorStatus nlaedit_delete_exec(bContext *C, wmOperator *)
static wmOperatorStatus nlaedit_make_single_user_exec(bContext *C, wmOperator *)
void NLA_OT_delete(wmOperatorType *ot)
static wmOperatorStatus nlaedit_add_actionclip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus nlaedit_enable_tweakmode_exec(bContext *C, wmOperator *op)
void NLA_OT_previewrange_set(wmOperatorType *ot)
void NLA_OT_fmodifier_copy(wmOperatorType *ot)
void NLA_OT_move_down(wmOperatorType *ot)
void NLA_OT_transition_add(wmOperatorType *ot)
static wmOperatorStatus nlaedit_viewall(bContext *C, const bool only_sel)
static const EnumPropertyItem * nla_fmodifier_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
void NLA_OT_view_selected(wmOperatorType *ot)
static wmOperatorStatus nlaedit_remove_meta_exec(bContext *C, wmOperator *)
static wmOperatorStatus nla_fmodifier_add_exec(bContext *C, wmOperator *op)
static wmOperatorStatus nlaedit_duplicate_invoke(bContext *C, wmOperator *op, const wmEvent *)
void NLA_OT_duplicate(wmOperatorType *ot)
static void nlaedit_split_strip_actclip(Main *bmain, AnimData *adt, NlaTrack *nlt, NlaStrip *strip, float cfra)
static wmOperatorStatus nla_fmodifier_copy_exec(bContext *C, wmOperator *op)
bool nlaedit_disable_tweakmode(bAnimContext *ac, bool do_solo)
static wmOperatorStatus nla_fmodifier_paste_exec(bContext *C, wmOperator *op)
void NLA_OT_actionclip_add(wmOperatorType *ot)
void NLA_OT_fmodifier_paste(wmOperatorType *ot)
static wmOperatorStatus nlaedit_move_down_exec(bContext *C, wmOperator *)
static wmOperatorStatus nlaedit_add_meta_exec(bContext *C, wmOperator *)
void NLA_OT_action_sync_length(wmOperatorType *ot)
void NLA_OT_apply_scale(wmOperatorType *ot)
static wmOperatorStatus nlaedit_add_sound_exec(bContext *C, wmOperator *)
static const EnumPropertyItem prop_nlaedit_snap_types[]
static wmOperatorStatus nlaedit_swap_exec(bContext *C, wmOperator *op)
static wmOperatorStatus nlaedit_viewframe_exec(bContext *C, wmOperator *op)
static short bezt_apply_nlamapping(KeyframeEditData *ked, BezTriple *bezt)
static wmOperatorStatus nlaedit_viewall_exec(bContext *C, wmOperator *)
bool nlaop_poll_tweakmode_on(bContext *C)
bool nlaop_poll_tweakmode_off(bContext *C)
@ NLAEDIT_SNAP_NEAREST_MARKER
@ NLAEDIT_SNAP_NEAREST_SECOND
@ NLAEDIT_SNAP_NEAREST_FRAME
bool nlaedit_add_tracks_empty(bAnimContext *ac)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
const EnumPropertyItem rna_enum_fmodifier_type_items[]
const EnumPropertyItem rna_enum_dummy_NULL_items[]
bool(* has_setting)(bAnimContext *ac, bAnimListElem *ale, eAnimChannel_Settings setting)
eAnimChannel_Role channel_role
struct ReportList * reports
void WM_main_add_notifier(uint type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
wmOperatorStatus WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *)
int WM_operator_smooth_viewtx_get(const wmOperator *op)
wmOperatorStatus WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
wmOperatorStatus WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)