40#include "RNA_prototypes.hh"
63 ListBase anim_data = {
nullptr,
nullptr};
104 ListBase anim_data = {
nullptr,
nullptr};
107 const bool use_upper_stack_evaluation =
RNA_boolean_get(op->
ptr,
"use_upper_stack_evaluation");
134 if (use_upper_stack_evaluation) {
162 if (ac.
scene && ok) {
183 ot->name =
"Enter Tweak Mode";
184 ot->idname =
"NLA_OT_tweakmode_enter";
186 "Enter tweaking mode for the action referenced by the active strip to edit its keyframes";
200 "Enable 'solo' on the NLA Track containing the active strip, "
201 "to edit it without seeing the effects of the NLA stack");
205 "use_upper_stack_evaluation",
207 "Evaluate Upper Stack",
208 "In tweak mode, display the effects of the tracks above the tweak strip");
220 ListBase anim_data = {
nullptr,
nullptr};
293 ot->name =
"Exit Tweak Mode";
294 ot->idname =
"NLA_OT_tweakmode_exit";
295 ot->description =
"Exit tweaking mode for the action referenced by the active strip";
309 "Disable 'solo' on any of the NLA Tracks after exiting tweak mode "
310 "to get things back to normal");
325 ListBase anim_data = {
nullptr,
nullptr};
326 bool found_bounds =
false;
335 *
max = -999999999.0f;
338 if (anim_data.
first) {
347 *
min = std::min(*
min, strip->start);
348 *
max = std::max(*
max, strip->end);
360 if (found_bounds ==
false) {
389 if (ac.
scene ==
nullptr) {
411 ot->name =
"Set Preview Range to Selected";
412 ot->idname =
"NLA_OT_previewrange_set";
413 ot->description =
"Set Preview Range based on extends of selected strips";
438 ListBase anim_data = {
nullptr,
nullptr};
503 if (only_sel ==
false) {
516 float ymid = (ymax - ymin) / 2.0f + ymin;
550 ot->name =
"Frame All";
551 ot->idname =
"NLA_OT_view_all";
552 ot->description =
"Reset viewable area to show full strips range";
565 ot->name =
"Frame Selected";
566 ot->idname =
"NLA_OT_view_selected";
567 ot->description =
"Reset viewable area to show selected strips range";
593 ot->name =
"Go to Current Frame";
594 ot->idname =
"NLA_OT_view_frame";
595 ot->description =
"Move the view to the current frame";
634 ListBase anim_data = {
nullptr,
nullptr};
640 "No active track(s) to add strip to, select an existing track or add one before "
654 ListBase anim_data = {
nullptr,
nullptr};
662 float cfra = float(scene->
r.
cfra);
668 if (act ==
nullptr) {
678 "Action '%s' does not specify what data-blocks it can be used on "
679 "(try setting the 'ID Root Type' setting from the data-blocks editor "
680 "for this action to avoid future problems)",
708 "Could not add action '%s' as it cannot be used relative to ID-blocks of type '%s'",
717 "Expecting the owner of an ALE to be the animated ID, not the Action");
718 ID &animated_id = *ale->id;
721 strip->
end += (cfra - strip->
start);
758 ot->name =
"Add Action Strip";
759 ot->idname =
"NLA_OT_actionclip_add";
761 "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track";
791 ListBase anim_data = {
nullptr,
nullptr};
819 for (; s1 && s2; s1 = s2, s2 = s2->
next) {
889 "Needs at least a pair of adjacent selected strips with a gap between them");
896 ot->name =
"Add Transition";
897 ot->idname =
"NLA_OT_transition_add";
898 ot->description =
"Add a transition strip between two adjacent selected strips";
919 ListBase anim_data = {
nullptr,
nullptr};
927 int cfra = scene->
r.
cfra;
953 strip->
start += cfra;
986 ot->name =
"Add Sound Clip";
987 ot->idname =
"NLA_OT_soundclip_add";
988 ot->description =
"Add a strip for controlling when speaker plays its sound clip";
1011 ListBase anim_data = {
nullptr,
nullptr};
1061 ot->name =
"Add Meta-Strips";
1062 ot->idname =
"NLA_OT_meta_add";
1063 ot->description =
"Add new meta-strips incorporating the selected strips";
1085 ListBase anim_data = {
nullptr,
nullptr};
1126 ot->name =
"Remove Meta-Strips";
1127 ot->idname =
"NLA_OT_meta_remove";
1128 ot->description =
"Separate out the strips held by the selected meta-strips";
1151 ListBase anim_data = {
nullptr,
nullptr};
1240 ot->name =
"Duplicate Strips";
1241 ot->idname =
"NLA_OT_duplicate";
1242 ot->description =
"Duplicate selected NLA-Strips, adding the new strips to new track(s)";
1257 "When duplicating strips, assign new copies of the actions they use");
1272 ListBase anim_data = {
nullptr,
nullptr};
1295 nstrip = strip->
next;
1301 if (ale->adt && ale->adt->actstrip == strip) {
1310 nstrip = nstrip->
next;
1338 ot->name =
"Delete Strips";
1339 ot->idname =
"NLA_OT_delete";
1340 ot->description =
"Delete selected strips";
1367 float splitframe, splitaframe;
1372 if ((cfra > strip->
start) && (cfra < strip->end)) {
1387 splitframe = strip->
start + (
len / 2.0f);
1392 splitaframe = strip->
actend;
1408 strip->
end = splitframe;
1409 nstrip->
start = splitframe;
1411 if ((splitaframe > strip->
actstart) && (splitaframe < strip->actend)) {
1413 strip->
actend = splitaframe;
1440 ListBase anim_data = {
nullptr,
nullptr};
1469 switch (strip->
type) {
1501 ot->name =
"Split Strips";
1502 ot->idname =
"NLA_OT_split";
1503 ot->description =
"Split selected strips at their midpoints";
1527 ListBase anim_data = {
nullptr,
nullptr};
1570 ot->name =
"Toggle Muting";
1571 ot->idname =
"NLA_OT_mute_toggle";
1572 ot->description =
"Mute or un-mute selected strips";
1594 ListBase anim_data = {
nullptr,
nullptr};
1610 NlaStrip *strip, *stripN =
nullptr;
1611 NlaStrip *area =
nullptr, *sb =
nullptr;
1641 stripN = strip->
next;
1645 if (area ==
nullptr) {
1649 else if (sb ==
nullptr) {
1665 "Too many clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1668 else if (area ==
nullptr) {
1672 else if (sb ==
nullptr) {
1677 "Too few clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1681 float nsa[2], nsb[2];
1691 nsa[1] = sb->start + (area->
end - area->
start);
1693 nsb[0] = area->
start;
1694 nsb[1] = area->
start + (sb->end - sb->start);
1701 area->
start = nsa[0];
1711 if (nsb[1] > nsa[0]) {
1714 "Cannot swap selected strips because they will overlap each other in their "
1721 "Cannot swap selected strips as they will not be able to fit in their new places");
1726 "Cannot swap '%s' and '%s' as one or both will not be able to fit in their "
1759 ot->name =
"Swap Strips";
1760 ot->idname =
"NLA_OT_swap";
1761 ot->description =
"Swap order of selected strips within tracks";
1783 ListBase anim_data = {
nullptr,
nullptr};
1806 if (nltn ==
nullptr) {
1819 stripn = strip->
next;
1850 ot->name =
"Move Strips Up";
1851 ot->idname =
"NLA_OT_move_up";
1852 ot->description =
"Move selected strips up a track if there's room";
1874 ListBase anim_data = {
nullptr,
nullptr};
1897 if (nltp ==
nullptr) {
1910 stripn = strip->
next;
1941 ot->name =
"Move Strips Down";
1942 ot->idname =
"NLA_OT_move_down";
1943 ot->description =
"Move selected strips down a track if there's room";
1965 ListBase anim_data = {
nullptr,
nullptr};
2000 if (strip->act ==
nullptr) {
2025 ot->name =
"Sync Action Length";
2026 ot->idname =
"NLA_OT_action_sync_length";
2028 "Synchronize the length of the referenced Action with the length used in the strip";
2041 "Active Strip Only",
2042 "Only sync the active length for the active strip");
2058 ListBase anim_data = {
nullptr,
nullptr};
2059 bool copied =
false;
2081 if (strip->act ==
nullptr) {
2094 strip->act = new_action;
2126 IFACE_(
"Make Selected Strips Single-User"),
2127 IFACE_(
"Linked actions will be duplicated for each selected strip."),
2138 ot->name =
"Make Single User";
2139 ot->idname =
"NLA_OT_make_single_user";
2140 ot->description =
"Make linked action local to each strip";
2180 ListBase anim_data = {
nullptr,
nullptr};
2181 bool copied =
false;
2210 if (strip->act->id.us > 1) {
2247 strip->scale = 1.0f;
2248 strip->actstart = start;
2249 strip->actend = end;
2274 ot->name =
"Apply Scale";
2275 ot->idname =
"NLA_OT_apply_scale";
2276 ot->description =
"Apply scaling of selected strips to their referenced Actions";
2298 ListBase anim_data = {
nullptr,
nullptr};
2340 ot->name =
"Clear Scale";
2341 ot->idname =
"NLA_OT_clear_scale";
2342 ot->description =
"Reset scaling of selected strips";
2368 {0,
nullptr, 0,
nullptr,
nullptr},
2375 ListBase anim_data = {
nullptr,
nullptr};
2395 bool any_added =
false;
2399 ListBase tmp_strips = {
nullptr,
nullptr};
2414 stripn = strip->
next;
2420 start = strip->start;
2426 strip->start = float(scene->
r.
cfra);
2429 strip->start =
floorf(start + 0.5f);
2432 strip->start =
floorf(start / secf + 0.5f) * secf;
2438 strip->start = start;
2443 strip->end = strip->start + (end - start);
2456 stripn = strip->
next;
2503 ot->name =
"Snap Strips";
2504 ot->idname =
"NLA_OT_snap";
2505 ot->description =
"Move start of strips to specified time";
2546 if (fmi ==
nullptr) {
2569 ListBase anim_data = {
nullptr,
nullptr};
2624 "Modifier could not be added to (%s : %s) (see console for details)",
2647 ot->name =
"Add F-Modifier";
2648 ot->idname =
"NLA_OT_fmodifier_add";
2649 ot->description =
"Add F-Modifier to the active/selected NLA-Strips";
2668 "Only add a F-Modifier of the specified type to the active strip");
2681 ListBase anim_data = {
nullptr,
nullptr};
2728 ot->name =
"Copy F-Modifiers";
2729 ot->idname =
"NLA_OT_fmodifier_copy";
2730 ot->description =
"Copy the F-Modifier(s) of the active NLA-Strip";
2745 "Copy all the F-Modifiers, instead of just the active one");
2758 ListBase anim_data = {
nullptr,
nullptr};
2821 ot->name =
"Paste F-Modifiers";
2822 ot->idname =
"NLA_OT_fmodifier_paste";
2823 ot->description =
"Add copied F-Modifiers to the selected NLA-Strips";
2834 ot->srna,
"only_active",
true,
"Only Active",
"Only paste F-Modifiers on active strip");
2842 "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_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_animchanneldata_keyframes_loop(KeyframeEditData *ked, bDopeSheet *ads, void *data, int keytype, 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)
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 *)