41#include "RNA_prototypes.hh"
65 ListBase anim_data = {
nullptr,
nullptr};
106 ListBase anim_data = {
nullptr,
nullptr};
109 const bool use_upper_stack_evaluation =
RNA_boolean_get(op->
ptr,
"use_upper_stack_evaluation");
136 if (use_upper_stack_evaluation) {
164 if (ac.
scene && ok) {
185 ot->name =
"Enter Tweak Mode";
186 ot->idname =
"NLA_OT_tweakmode_enter";
188 "Enter tweaking mode for the action referenced by the active strip to edit its keyframes";
202 "Enable 'solo' on the NLA Track containing the active strip, "
203 "to edit it without seeing the effects of the NLA stack");
207 "use_upper_stack_evaluation",
209 "Evaluate Upper Stack",
210 "In tweak mode, display the effects of the tracks above the tweak strip");
222 ListBase anim_data = {
nullptr,
nullptr};
295 ot->name =
"Exit Tweak Mode";
296 ot->idname =
"NLA_OT_tweakmode_exit";
297 ot->description =
"Exit tweaking mode for the action referenced by the active strip";
311 "Disable 'solo' on any of the NLA Tracks after exiting tweak mode "
312 "to get things back to normal");
327 ListBase anim_data = {
nullptr,
nullptr};
328 bool found_bounds =
false;
337 *
max = -999999999.0f;
340 if (anim_data.
first) {
349 *
min = std::min(*
min, strip->start);
350 *
max = std::max(*
max, strip->end);
362 if (found_bounds ==
false) {
391 if (ac.
scene ==
nullptr) {
413 ot->name =
"Set Preview Range to Selected";
414 ot->idname =
"NLA_OT_previewrange_set";
415 ot->description =
"Set Preview Range based on extends of selected strips";
440 ListBase anim_data = {
nullptr,
nullptr};
505 if (only_sel ==
false) {
518 float ymid = (ymax - ymin) / 2.0f + ymin;
552 ot->name =
"Frame All";
553 ot->idname =
"NLA_OT_view_all";
554 ot->description =
"Reset viewable area to show full strips range";
567 ot->name =
"Frame Selected";
568 ot->idname =
"NLA_OT_view_selected";
569 ot->description =
"Reset viewable area to show selected strips range";
595 ot->name =
"Go to Current Frame";
596 ot->idname =
"NLA_OT_view_frame";
597 ot->description =
"Move the view to the current frame";
636 ListBase anim_data = {
nullptr,
nullptr};
642 "No active track(s) to add strip to, select an existing track or add one before "
656 ListBase anim_data = {
nullptr,
nullptr};
670 if (act ==
nullptr) {
680 "Action '%s' does not specify what data-blocks it can be used on "
681 "(try setting the 'ID Root Type' setting from the data-blocks editor "
682 "for this action to avoid future problems)",
710 "Could not add action '%s' as it cannot be used relative to ID-blocks of type '%s'",
719 "Expecting the owner of an ALE to be the animated ID, not the Action");
720 ID &animated_id = *ale->id;
723 strip->
end += (cfra - strip->
start);
760 ot->name =
"Add Action Strip";
761 ot->idname =
"NLA_OT_actionclip_add";
763 "Add an Action-Clip strip (i.e. an NLA Strip referencing an Action) to the active track";
793 ListBase anim_data = {
nullptr,
nullptr};
821 for (; s1 && s2; s1 = s2, s2 = s2->
next) {
891 "Needs at least a pair of adjacent selected strips with a gap between them");
898 ot->name =
"Add Transition";
899 ot->idname =
"NLA_OT_transition_add";
900 ot->description =
"Add a transition strip between two adjacent selected strips";
921 ListBase anim_data = {
nullptr,
nullptr};
929 int cfra = scene->
r.
cfra;
955 strip->
start += cfra;
988 ot->name =
"Add Sound Clip";
989 ot->idname =
"NLA_OT_soundclip_add";
990 ot->description =
"Add a strip for controlling when speaker plays its sound clip";
1013 ListBase anim_data = {
nullptr,
nullptr};
1063 ot->name =
"Add Meta-Strips";
1064 ot->idname =
"NLA_OT_meta_add";
1065 ot->description =
"Add new meta-strips incorporating the selected strips";
1087 ListBase anim_data = {
nullptr,
nullptr};
1128 ot->name =
"Remove Meta-Strips";
1129 ot->idname =
"NLA_OT_meta_remove";
1130 ot->description =
"Separate out the strips held by the selected meta-strips";
1153 ListBase anim_data = {
nullptr,
nullptr};
1242 ot->name =
"Duplicate Strips";
1243 ot->idname =
"NLA_OT_duplicate";
1244 ot->description =
"Duplicate selected NLA-Strips, adding the new strips to new track(s)";
1259 "When duplicating strips, assign new copies of the actions they use");
1274 ListBase anim_data = {
nullptr,
nullptr};
1297 nstrip = strip->
next;
1303 if (ale->adt && ale->adt->actstrip == strip) {
1312 nstrip = nstrip->
next;
1340 ot->name =
"Delete Strips";
1341 ot->idname =
"NLA_OT_delete";
1342 ot->description =
"Delete selected strips";
1369 float splitframe, splitaframe;
1374 if ((cfra > strip->
start) && (cfra < strip->end)) {
1389 splitframe = strip->
start + (
len / 2.0f);
1394 splitaframe = strip->
actend;
1410 strip->
end = splitframe;
1411 nstrip->
start = splitframe;
1413 if ((splitaframe > strip->
actstart) && (splitaframe < strip->actend)) {
1415 strip->
actend = splitaframe;
1442 ListBase anim_data = {
nullptr,
nullptr};
1471 switch (strip->
type) {
1503 ot->name =
"Split Strips";
1504 ot->idname =
"NLA_OT_split";
1505 ot->description =
"Split selected strips at their midpoints";
1529 ListBase anim_data = {
nullptr,
nullptr};
1572 ot->name =
"Toggle Muting";
1573 ot->idname =
"NLA_OT_mute_toggle";
1574 ot->description =
"Mute or un-mute selected strips";
1596 ListBase anim_data = {
nullptr,
nullptr};
1612 NlaStrip *strip, *stripN =
nullptr;
1613 NlaStrip *area =
nullptr, *sb =
nullptr;
1643 stripN = strip->
next;
1647 if (area ==
nullptr) {
1651 else if (sb ==
nullptr) {
1667 "Too many clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1670 else if (area ==
nullptr) {
1674 else if (sb ==
nullptr) {
1679 "Too few clusters of strips selected in NLA Track (%s): needs exactly 2 to be selected",
1683 float nsa[2], nsb[2];
1693 nsa[1] = sb->start + (area->
end - area->
start);
1695 nsb[0] = area->
start;
1696 nsb[1] = area->
start + (sb->end - sb->start);
1703 area->
start = nsa[0];
1713 if (nsb[1] > nsa[0]) {
1716 "Cannot swap selected strips because they will overlap each other in their "
1723 "Cannot swap selected strips as they will not be able to fit in their new places");
1728 "Cannot swap '%s' and '%s' as one or both will not be able to fit in their "
1761 ot->name =
"Swap Strips";
1762 ot->idname =
"NLA_OT_swap";
1763 ot->description =
"Swap order of selected strips within tracks";
1785 ListBase anim_data = {
nullptr,
nullptr};
1808 if (nltn ==
nullptr) {
1821 stripn = strip->
next;
1852 ot->name =
"Move Strips Up";
1853 ot->idname =
"NLA_OT_move_up";
1854 ot->description =
"Move selected strips up a track if there's room";
1876 ListBase anim_data = {
nullptr,
nullptr};
1899 if (nltp ==
nullptr) {
1912 stripn = strip->
next;
1943 ot->name =
"Move Strips Down";
1944 ot->idname =
"NLA_OT_move_down";
1945 ot->description =
"Move selected strips down a track if there's room";
1967 ListBase anim_data = {
nullptr,
nullptr};
2002 if (strip->act ==
nullptr) {
2027 ot->name =
"Sync Action Length";
2028 ot->idname =
"NLA_OT_action_sync_length";
2030 "Synchronize the length of the referenced Action with the length used in the strip";
2043 "Active Strip Only",
2044 "Only sync the active length for the active strip");
2060 ListBase anim_data = {
nullptr,
nullptr};
2061 bool copied =
false;
2083 if (strip->act ==
nullptr) {
2096 strip->act = new_action;
2128 IFACE_(
"Make Selected Strips Single-User"),
2129 IFACE_(
"Linked actions will be duplicated for each selected strip."),
2140 ot->name =
"Make Single User";
2141 ot->idname =
"NLA_OT_make_single_user";
2142 ot->description =
"Make linked action local to each strip";
2182 ListBase anim_data = {
nullptr,
nullptr};
2183 bool copied =
false;
2212 if (strip->act->id.us > 1) {
2228 action, strip->action_slot_handle);
2230 for (
FCurve *fcurve : fcurves) {
2249 strip->scale = 1.0f;
2250 strip->actstart = start;
2251 strip->actend = end;
2281 ot->name =
"Apply Scale";
2282 ot->idname =
"NLA_OT_apply_scale";
2283 ot->description =
"Apply scaling of selected strips to their referenced Actions";
2305 ListBase anim_data = {
nullptr,
nullptr};
2347 ot->name =
"Clear Scale";
2348 ot->idname =
"NLA_OT_clear_scale";
2349 ot->description =
"Reset scaling of selected strips";
2375 {0,
nullptr, 0,
nullptr,
nullptr},
2382 ListBase anim_data = {
nullptr,
nullptr};
2400 secf =
float(scene->frames_per_second());
2402 bool any_added =
false;
2406 ListBase tmp_strips = {
nullptr,
nullptr};
2421 stripn = strip->
next;
2427 start = strip->start;
2436 strip->start =
floorf(start + 0.5f);
2439 strip->start =
floorf(start / secf + 0.5f) * secf;
2445 strip->start = start;
2450 strip->end = strip->start + (end - start);
2463 stripn = strip->
next;
2510 ot->name =
"Snap Strips";
2511 ot->idname =
"NLA_OT_snap";
2512 ot->description =
"Move start of strips to specified time";
2553 if (fmi ==
nullptr) {
2576 ListBase anim_data = {
nullptr,
nullptr};
2631 "Modifier could not be added to (%s : %s) (see console for details)",
2654 ot->name =
"Add F-Modifier";
2655 ot->idname =
"NLA_OT_fmodifier_add";
2656 ot->description =
"Add F-Modifier to the active/selected NLA-Strips";
2675 "Only add a F-Modifier of the specified type to the active strip");
2688 ListBase anim_data = {
nullptr,
nullptr};
2735 ot->name =
"Copy F-Modifiers";
2736 ot->idname =
"NLA_OT_fmodifier_copy";
2737 ot->description =
"Copy the F-Modifier(s) of the active NLA-Strip";
2752 "Copy all the F-Modifiers, instead of just the active one");
2765 ListBase anim_data = {
nullptr,
nullptr};
2828 ot->name =
"Paste F-Modifiers";
2829 ot->idname =
"NLA_OT_fmodifier_paste";
2830 ot->description =
"Add copied F-Modifiers to the selected NLA-Strips";
2841 ot->srna,
"only_active",
true,
"Only Active",
"Only paste F-Modifiers on active strip");
2849 "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)
#define ID_IS_EDITABLE(_id)
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ 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)
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 *)