44 #include "RNA_prototypes.h"
66 # include <AUD_Sequence.h>
82 #define SEQPROP_STARTFRAME (1 << 0)
83 #define SEQPROP_ENDFRAME (1 << 1)
84 #define SEQPROP_NOPATHS (1 << 2)
85 #define SEQPROP_NOCHAN (1 << 3)
86 #define SEQPROP_FIT_METHOD (1 << 4)
87 #define SEQPROP_VIEW_TRANSFORM (1 << 5)
88 #define SEQPROP_PLAYBACK_RATE (1 << 6)
91 {
SEQ_SCALE_TO_FIT,
"FIT", 0,
"Scale to Fit",
"Scale image to fit within the canvas"},
92 {
SEQ_SCALE_TO_FILL,
"FILL", 0,
"Scale to Fill",
"Scale image to completely fill the canvas"},
109 "Start frame of the sequence strip",
122 "End frame for the color strip",
128 ot->
srna,
"channel", 1, 1,
MAXSEQ,
"Channel",
"Channel to place this strip into", 1,
MAXSEQ);
131 ot->
srna,
"replace_sel",
true,
"Replace Selection",
"Replace the current selection");
135 ot->
srna,
"overlap",
false,
"Allow Overlap",
"Don't correct overlap on new sequence strips");
140 "overlap_shuffle_override",
142 "Override Overlap Shuffle Behavior",
143 "Use the overlap_mode tool settings to determine how to shuffle overlapping strips");
157 "set_view_transform",
159 "Set View Transform",
160 "Set appropriate view transform based on media color space");
165 "adjust_playback_rate",
167 "Adjust Playback Rate",
168 "Play at normal speed regardless of scene FPS");
174 const char *identifier)
196 int proximity = INT_MAX;
204 if ((
ELEM(
type, -1, seq->
type)) && (strip_end < timeline_frame) &&
205 (timeline_frame - strip_end < proximity)) {
207 proximity = timeline_frame - strip_end;
398 if (
STR_ELEM(prop_id,
"frame_start",
"frame_end")) {
416 if (sce_seq ==
NULL) {
427 load_data.
scene = sce_seq;
469 ot->
name =
"Add Scene Strip";
470 ot->
idname =
"SEQUENCER_OT_scene_strip_add";
471 ot->
description =
"Add a strip to the sequencer using a blender scene as a source";
489 {
SCE_COPY_NEW,
"NEW", 0,
"New",
"Add new Strip with a new empty Scene with default settings"},
494 "Add a new Strip, with an empty scene, and copy settings from the current scene"},
499 "Add a Strip and link in the collections from the current scene (shallow copy)"},
504 "Add a Strip and make a full copy of the current scene"},
523 if (scene_new ==
NULL) {
526 load_data.
scene = scene_new;
559 bool has_scene_or_no_context =
false;
562 has_scene_or_no_context =
true;
568 has_scene_or_no_context =
true;
572 if (has_scene_or_no_context) {
574 for (
int i = 0; i <
ARRAY_SIZE(values); i++) {
588 ot->
name =
"Add Strip with a new Scene";
589 ot->
idname =
"SEQUENCER_OT_scene_strip_add_new";
590 ot->
description =
"Create a new Strip and add a assign a new Scene as source";
625 load_data.
clip = clip;
651 ot->
name =
"Add MovieClip Strip";
652 ot->
idname =
"SEQUENCER_OT_movieclip_strip_add";
715 ot->
name =
"Add Mask Strip";
716 ot->
idname =
"SEQUENCER_OT_mask_strip_add";
750 return !(
STR_ELEM(prop_id,
"filepath",
"directory",
"filename"));
762 switch (sl->spacetype) {
805 if (
ELEM(
NULL, seq_movie, seq_sound)) {
825 bool has_seq_overlap =
false;
828 if (overlap_shuffle_override) {
844 if (seq_movie ==
NULL) {
861 if (overlap_shuffle_override) {
863 C, op, seq_sound, strip_col);
865 C, op, seq_movie, strip_col);
876 if (overlap_shuffle_override) {
877 if (has_seq_overlap) {
879 const bool use_sync_markers = (((
SpaceSeq *)
area->spacedata.first)->flag &
902 if (seq_movie ==
NULL) {
918 if (overlap_shuffle_override) {
920 bool has_seq_overlap =
false;
923 C, op, seq_sound, strip_col);
925 C, op, seq_movie, strip_col);
927 if (has_seq_overlap) {
929 const bool use_sync_markers = (((
SpaceSeq *)
area->spacedata.first)->flag &
1039 ot->
name =
"Add Movie Strip";
1040 ot->
idname =
"SEQUENCER_OT_movie_strip_add";
1068 "Use Movie Framerate",
1069 "Use framerate from the movie to keep sound and video in sync");
1129 if (tot_files > 1) {
1171 ot->
name =
"Add Sound Strip";
1172 ot->
idname =
"SEQUENCER_OT_sound_strip_add";
1211 minframe =
min_ii(minframe, frame);
1212 maxframe =
max_ii(maxframe, frame);
1222 maxframe = minframe + 1;
1225 *r_minframe = minframe;
1226 *r_numdigits = numdigits;
1228 return maxframe - minframe + 1;
1234 char *filename =
NULL;
1247 for (
int i = 0; i <
len; i++, se++) {
1248 BLI_strncpy(filename_stripped, filename,
sizeof(filename_stripped));
1258 const int start_frame,
1264 if (use_placeholders) {
1275 const int numdigits)
1279 char directory[768];
1283 if (use_placeholders) {
1288 size_t strip_frame = 0;
1307 int minframe, numdigits;
1309 op, load_data.
start_frame, &minframe, &numdigits);
1372 ot->
name =
"Add Image Strip";
1373 ot->
idname =
"SEQUENCER_OT_image_strip_add";
1374 ot->
description =
"Add an image or image sequence to the sequencer";
1401 "Use placeholders for missing frames of the strip");
1408 const char *error_msg;
1485 return BLI_strdup(
TIP_(
"Add a crossfade transition to the sequencer"));
1487 return BLI_strdup(
TIP_(
"Add an add effect strip to the sequencer"));
1489 return BLI_strdup(
TIP_(
"Add a subtract effect strip to the sequencer"));
1491 return BLI_strdup(
TIP_(
"Add an alpha over effect strip to the sequencer"));
1493 return BLI_strdup(
TIP_(
"Add an alpha under effect strip to the sequencer"));
1495 return BLI_strdup(
TIP_(
"Add a gamma cross transition to the sequencer"));
1497 return BLI_strdup(
TIP_(
"Add a multiply effect strip to the sequencer"));
1499 return BLI_strdup(
TIP_(
"Add an alpha over drop effect strip to the sequencer"));
1501 return BLI_strdup(
TIP_(
"Add a wipe transition to the sequencer"));
1503 return BLI_strdup(
TIP_(
"Add a glow effect strip to the sequencer"));
1505 return BLI_strdup(
TIP_(
"Add a transform effect strip to the sequencer"));
1509 return BLI_strdup(
TIP_(
"Add a speed effect strip to the sequencer"));
1511 return BLI_strdup(
TIP_(
"Add a multicam selector effect strip to the sequencer"));
1513 return BLI_strdup(
TIP_(
"Add an adjustment layer effect strip to the sequencer"));
1515 return BLI_strdup(
TIP_(
"Add a gaussian blur effect strip to the sequencer"));
1519 return BLI_strdup(
TIP_(
"Add a color mix effect strip to the sequencer"));
1533 ot->
name =
"Add Effect Strip";
1534 ot->
idname =
"SEQUENCER_OT_effect_strip_add";
1535 ot->
description =
"Add an effect to the sequencer, most are applied on top of existing strips";
1552 "Sequencer effect type");
1562 "Initialize the strip with this color",
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
@ SCE_COPY_LINK_COLLECTION
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE int max_iii(int a, int b, int c)
void BLI_split_dir_part(const char *string, char *dir, size_t dirlen)
const char * BLI_path_basename(const char *path) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_frame(char *path, int frame, int digits) ATTR_NONNULL()
bool BLI_path_frame_get(char *path, int *r_frame, int *r_digits_len) ATTR_NONNULL()
void BLI_path_rel(char *file, const char *relfile) ATTR_NONNULL()
void BLI_path_frame_strip(char *path, char *r_ext, size_t ext_maxlen) ATTR_NONNULL()
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define BLT_I18NCONTEXT_ID_MOVIECLIP
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_SEQUENCER_STRIPS
#define SEQ_HAS_PATH(_seq)
@ SEQ_PROXY_SKIP_EXISTING
@ SEQ_VIEW_SEQUENCE_PREVIEW
@ USER_SEQ_PROXY_SETUP_AUTOMATIC
struct Scene * ED_scene_sequencer_add(struct Main *bmain, struct bContext *C, enum eSceneCopyMethod method, const bool assign_strip)
void ED_area_tag_redraw(ScrArea *area)
bool ED_operator_sequencer_active_editable(struct bContext *C)
void ED_sequencer_deselect_all(struct Scene *scene)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
#define RNA_BEGIN(sptr, itemptr, propname)
#define RNA_PROP_BEGIN(sptr, itemptr, prop)
const EnumPropertyItem * RNA_scene_without_active_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
const EnumPropertyItem * RNA_movieclip_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
const EnumPropertyItem * RNA_mask_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
@ SEQ_LOAD_SET_VIEW_TRANSFORM
@ SEQ_LOAD_MOVIE_SYNC_FPS
#define SEQ_ITERATOR_FOREACH(var, collection)
@ UI_BUT_LABEL_ALIGN_NONE
eAutoPropButsReturn uiDefAutoButsRNA(uiLayout *layout, struct PointerRNA *ptr, bool(*check_prop)(struct PointerRNA *ptr, struct PropertyRNA *prop, void *user_data), void *user_data, struct PropertyRNA *prop_activate_init, eButLabelAlign label_align, bool compact)
void uiTemplateImageFormatViews(uiLayout *layout, struct PointerRNA *imfptr, struct PointerRNA *ptr)
int SEQ_effect_get_num_inputs(int seq_type)
static const int proxy_sizes[]
uint SEQ_collection_len(const SeqCollection *collection)
SeqCollection * SEQ_collection_create(const char *name)
bool SEQ_collection_append_strip(Sequence *seq, SeqCollection *collection)
void SEQ_collection_free(SeqCollection *collection)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static void area(int d1, int d2, int e1, int e2, float weights[2])
void SEQ_proxy_set(struct Sequence *seq, bool value)
int SEQ_rendersize_to_proxysize(int render_size)
bool SEQ_proxy_rebuild_context(Main *bmain, Depsgraph *depsgraph, Scene *scene, Sequence *seq, struct GSet *file_list, ListBase *queue, bool build_only_on_bad_performance)
ProxyJob * ED_seq_proxy_job_get(const bContext *C, wmJob *wm_job)
struct wmJob * ED_seq_proxy_wm_job_get(const bContext *C)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
const char * RNA_property_identifier(const PropertyRNA *prop)
bool RNA_collection_is_empty(PointerRNA *ptr, const char *name)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool 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_float_color(StructOrFunctionRNA *cont_, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
Editing * SEQ_editing_ensure(Scene *scene)
Editing * SEQ_editing_get(const Scene *scene)
eSeqImageFitMethod SEQ_tool_settings_fit_method_get(Scene *scene)
void SEQ_tool_settings_fit_method_set(Scene *scene, eSeqImageFitMethod fit_method)
static void seq_build_proxy(bContext *C, SeqCollection *movie_strips)
static void sequencer_add_sound_multiple_strips(bContext *C, wmOperator *op, SeqLoadData *load_data)
static void load_data_init_from_operator(SeqLoadData *load_data, bContext *C, wmOperator *op)
static void sequencer_add_init(bContext *UNUSED(C), wmOperator *op)
static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
static int sequencer_add_mask_strip_exec(bContext *C, wmOperator *op)
static IMB_Proxy_Size seq_get_proxy_size_flags(bContext *C)
static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier)
static int sequencer_add_mask_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int sequencer_add_scene_strip_new_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static EnumPropertyItem strip_new_scene_items[]
static int sequencer_add_image_strip_calculate_length(wmOperator *op, const int start_frame, int *minframe, int *numdigits)
void SEQUENCER_OT_mask_strip_add(struct wmOperatorType *ot)
static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
#define SEQPROP_VIEW_TRANSFORM
static bool seq_effect_add_properties_poll(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
static const EnumPropertyItem scale_fit_methods[]
static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, int flag, int type)
static bool sequencer_add_sound_single_strip(bContext *C, wmOperator *op, SeqLoadData *load_data)
struct SequencerAddData SequencerAddData
static int sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op)
static int sequencer_add_scene_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
static int sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void SEQUENCER_OT_scene_strip_add_new(struct wmOperatorType *ot)
static const EnumPropertyItem * strip_new_sequencer_enum_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
static void sequencer_generic_props__internal(wmOperatorType *ot, int flag)
static void sequencer_add_image_strip_load_files(wmOperator *op, Scene *scene, Sequence *seq, SeqLoadData *load_data, const int minframe, const int numdigits)
static int sequencer_add_movieclip_strip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void seq_load_apply_generic_options(bContext *C, wmOperator *op, Sequence *seq)
static void sequencer_add_movie_multiple_strips(bContext *C, wmOperator *op, SeqLoadData *load_data, SeqCollection *r_movie_strips)
static int sequencer_add_scene_strip_new_exec(bContext *C, wmOperator *op)
static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot)
static bool sequencer_add_draw_check_fn(PointerRNA *UNUSED(ptr), PropertyRNA *prop, void *UNUSED(user_data))
static void sequencer_add_draw(bContext *UNUSED(C), wmOperator *op)
#define SEQPROP_STARTFRAME
void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot)
void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot)
static void sequencer_add_cancel(bContext *UNUSED(C), wmOperator *op)
static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op)
void sequencer_image_seq_reserve_frames(wmOperator *op, StripElem *se, int len, int minframe, int numdigits)
static bool sequencer_add_movie_single_strip(bContext *C, wmOperator *op, SeqLoadData *load_data, SeqCollection *r_movie_strips)
static void sequencer_add_movie_clamp_sound_strip_length(Scene *scene, Sequence *seq_movie, Sequence *seq_sound)
#define SEQPROP_PLAYBACK_RATE
void SEQUENCER_OT_movieclip_strip_add(struct wmOperatorType *ot)
static int sequencer_generic_invoke_xy_guess_channel(bContext *C, int type)
static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
static char * sequencer_add_effect_strip_desc(bContext *UNUSED(C), wmOperatorType *UNUSED(op), PointerRNA *ptr)
#define SEQPROP_FIT_METHOD
int sequencer_image_seq_get_minmax_frame(wmOperator *op, int sfra, int *r_minframe, int *r_numdigits)
static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op)
void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot)
static void sequencer_disable_one_time_properties(bContext *C, wmOperator *op)
static bool seq_load_apply_generic_options_only_test_overlap(bContext *C, wmOperator *op, Sequence *seq, SeqCollection *strip_col)
void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot)
int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **r_selseq1, Sequence **r_selseq2, Sequence **r_selseq3, const char **r_error_str)
EnumPropertyItem sequencer_prop_effect_types[]
#define DEFAULT_IMG_STRIP_LENGTH
void SEQ_add_image_load_file(Scene *scene, Sequence *seq, size_t strip_frame, char *filename)
Sequence * SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_sound_strip(Main *UNUSED(bmain), Scene *UNUSED(scene), ListBase *UNUSED(seqbase), SeqLoadData *UNUSED(load_data))
Sequence * SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data)
Sequence * SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data)
Sequence * SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data)
void SEQ_add_image_set_directory(Sequence *seq, char *path)
void SEQ_add_image_init_alpha_mode(Sequence *seq)
Sequence * SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data)
Sequence * SEQ_select_active_get(Scene *scene)
void SEQ_select_active_set(Scene *scene, Sequence *seq)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int val)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int val)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
struct Depsgraph * depsgraph
eSeqImageFitMethod fit_method
bool adjust_playback_rate
struct Stereo3dFormat * stereo3d_format
struct SeqLoadData::@1176 effect
struct SeqLoadData::@1175 image
ImageFormatData im_format
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
char *(* get_description)(struct bContext *C, struct wmOperatorType *, struct PointerRNA *)
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
bool(* poll_property)(const struct bContext *C, struct wmOperator *op, const PropertyRNA *prop) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
void(* ui)(struct bContext *, struct wmOperator *)
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
bool WM_jobs_is_running(const wmJob *wm_job)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_operator_properties_filesel(wmOperatorType *ot, const int filter, const short type, const eFileSel_Action action, const eFileSel_Flag flag, const short display, const short sort)
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))