104 TreeElement *te,
int *scenelevel,
int *objectlevel,
int *idlevel,
int *datalevel)
110 if (*datalevel == 0) {
111 *datalevel = tselem->
type;
113 else if (*datalevel != tselem->
type) {
118 const int idcode = (int)
GS(tselem->
id->
name);
119 bool is_standard_id =
false;
164 is_standard_id =
true;
176 is_standard_id =
true;
179 if (is_standard_id) {
183 else if (*idlevel != idcode) {
265 totcol = pointcloud->
totcol;
266 matar = pointcloud->
mat;
278 for (
a = 0;
a < totcol;
a++) {
279 if (
a == te->
index && matar[
a]) {
307 if (
a == te->
index && mtex[
a]) {
360 if (tsep && tsep->
id) {
368 te_parent = te_parent->
parent;
373 if (tsep && tsep->
id) {
452 bool success =
false;
457 if (operation_fn(
C, event, te, tselem)) {
509 ot->
name =
"Outliner Scene Operation";
510 ot->
idname =
"OUTLINER_OT_scene_operation";
572 const bool UNUSED(is_first))
600 static char search[64] =
"";
613 block, search, 0, ICON_VIEWZOOM,
sizeof(search), 10, 10, menu_width,
UI_UNIT_Y, 0, 0,
"");
718 reports,
RPT_WARNING,
"Cannot delete indirectly linked object '%s'", ob->
id.
name + 2);
725 "Cannot delete object '%s' from scene '%s', indirectly used objects need at "
773 ID *id_proxy = tselem->
id;
787 "Could not create a library override from proxy '%s' (might use already local data?)",
814 ID *id_root = tselem->
id;
816 const bool do_hierarchy =
data->do_hierarchy;
817 bool success =
false;
820 bool is_override_instancing_object =
false;
828 id_reference = tsep->
id;
829 is_override_instancing_object =
true;
874 if (success && is_override_instancing_object) {
881 "Could not create library override from data-block '%s'",
895 ID *id_root = tselem->
id;
897 const bool do_hierarchy =
data->do_hierarchy;
913 CLOG_WARN(&
LOG,
"Could not reset library override of data block '%s'", id_root->
name);
926 ID *id_root = tselem->
id;
928 const bool do_hierarchy_enforce =
data->do_resync_hierarchy_enforce;
952 CLOG_WARN(&
LOG,
"Could not resync library override of data block '%s'", id_root->
name);
965 ID *id_root = tselem->
id;
988 CLOG_WARN(&
LOG,
"Could not delete library override of data block '%s'", id_root->
name);
1000 ID *
id = tselem->
id;
1013 ID *
id = tselem->
id;
1026 ID *
id = tselem->
id;
1045 ID *
id = tselem->
id;
1067 ID *
id = tselem->
id;
1093 bool recurse_selected)
1097 bool select_handled =
false;
1102 if (scene_owner && scene_act != scene_owner) {
1109 C, reports, scene_owner ? scene_owner : scene_act, te,
NULL, tselem,
user_data);
1110 select_handled =
true;
1114 if ((select_handled ==
false) || recurse_selected) {
1136 C, reports, scene_act, space_outliner, lb, operation_fn,
NULL,
true);
1351 lb = &ob->constraints;
1404 operation_fn(event, te, tselem, arg);
1416 Base *child_base, *base_next;
1424 for (child_base = view_layer->
object_bases.
first; child_base; child_base = base_next) {
1425 base_next = child_base->
next;
1426 for (parent = child_base->
object->
parent; parent && (parent !=
object);
1427 parent = parent->
parent) {
1435 base_next = base->
next;
1440 "Cannot delete indirectly linked object '%s'",
1448 "Cannot delete object '%s' from scene '%s', indirectly used objects need at least "
1458 if (object->
id.
us == 0) {
1477 for (; obedit && (obedit != base->
object); obedit = obedit->
parent) {
1480 if (obedit == base->
object) {
1504 {
OL_OP_SELECT,
"SELECT", ICON_RESTRICT_SELECT_OFF,
"Select",
""},
1511 "Make all users of selected data-blocks to use instead a new chosen one"},
1514 "OBJECT_PROXY_TO_OVERRIDE",
1516 "Convert Proxy to Override",
1517 "Convert a Proxy object to a full library override, including all its dependencies"},
1529 bool selection_changed =
false;
1532 if (space_outliner ==
NULL) {
1546 str =
"Select Objects";
1547 selection_changed =
true;
1555 &space_outliner->
tree,
1562 str =
"Select Object Hierarchy";
1563 selection_changed =
true;
1568 str =
"Deselect Objects";
1569 selection_changed =
true;
1580 str =
"Rename Object";
1587 &space_outliner->
tree,
1589 str =
"Convert Proxy to Override";
1596 if (selection_changed) {
1612 ot->
name =
"Outliner Object Operation";
1613 ot->
idname =
"OUTLINER_OT_object_operation";
1636 GSet *objects_to_delete,
1640 GSET_ITER (objects_to_delete_iter, objects_to_delete) {
1643 delete_fn(
C, reports,
scene, ob);
1649 GSet *objects_to_delete = (
GSet *)customdata;
1672 const Base *basact_prev =
BASACT(view_layer);
1680 &space_outliner->
tree,
1686 if (delete_hierarchy) {
1712 if (basact_prev !=
BASACT(view_layer)) {
1730 ot->
description =
"Delete selected objects and collections";
1741 ot->
srna,
"hierarchy",
false,
"Hierarchy",
"Delete child objects and collections");
1792 "Make all users of selected data-blocks to use instead current (clicked) one"},
1795 "OVERRIDE_LIBRARY_CREATE",
1797 "Make Library Override",
1798 "Make a local override of this linked data-block"},
1800 "OVERRIDE_LIBRARY_CREATE_HIERARCHY",
1802 "Make Library Override Hierarchy",
1803 "Make a local override of this linked data-block, and its hierarchy of dependencies"},
1805 "OVERRIDE_LIBRARY_PROXY_CONVERT",
1807 "Convert Proxy to Override",
1808 "Convert a Proxy object to a full library override, including all its dependencies"},
1810 "OVERRIDE_LIBRARY_RESET",
1812 "Reset Library Override",
1813 "Reset this local override to its linked values"},
1815 "OVERRIDE_LIBRARY_RESET_HIERARCHY",
1817 "Reset Library Override Hierarchy",
1818 "Reset this local override to its linked values, as well as its hierarchy of dependencies"},
1820 "OVERRIDE_LIBRARY_RESYNC_HIERARCHY",
1822 "Resync Library Override Hierarchy",
1823 "Rebuild this local override from its linked reference, as well as its hierarchy of "
1826 "OVERRIDE_LIBRARY_RESYNC_HIERARCHY_ENFORCE",
1828 "Resync Library Override Hierarchy Enforce",
1829 "Rebuild this local override from its linked reference, as well as its hierarchy of "
1830 "dependencies, enforcing that hierarchy to match the linked data (i.e. ignoring exiting "
1831 "overrides on data-blocks pointer properties)"},
1833 "OVERRIDE_LIBRARY_DELETE_HIERARCHY",
1835 "Delete Library Override Hierarchy",
1836 "Delete this local override (including its hierarchy of override dependencies) and relink "
1837 "its usages to the linked data-blocks"},
1846 "Ensure data-block gets saved even if it isn't in use (e.g. for motion and material "
1857 const int enum_value)
1870 switch (enum_value) {
1873 return U.experimental.use_asset_browser;
1943 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
1946 if (space_outliner ==
NULL) {
1972 &space_outliner->
tree,
1984 &space_outliner->
tree,
1996 &space_outliner->
tree,
2015 &space_outliner->
tree,
2048 &space_outliner->
tree,
2059 &space_outliner->
tree,
2070 &space_outliner->
tree,
2080 &space_outliner->
tree,
2091 &space_outliner->
tree,
2102 &space_outliner->
tree,
2114 &space_outliner->
tree,
2125 &space_outliner->
tree,
2139 &space_outliner->
tree,
2152 &space_outliner->
tree,
2213 &space_outliner->
tree,
2254 ot->
name =
"Outliner ID Data Operation";
2255 ot->
idname =
"OUTLINER_OT_id_operation";
2289 "Delete this library and all its item.\n"
2290 "Warning: No undo"},
2295 "Select a new path for this library, and reload all its data"},
2296 {
OL_LIB_RELOAD,
"RELOAD", ICON_FILE_REFRESH,
"Reload",
"Reload all data from this library"},
2304 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
2307 if (space_outliner ==
NULL) {
2361 ot->
name =
"Outliner Library Operation";
2362 ot->
idname =
"OUTLINER_OT_lib_operation";
2391 operation_fn(te, tselem, tsep, newid);
2425 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
2443 "Action '%s' does not specify what data-blocks it can be used on "
2444 "(try setting the 'ID Root Type' setting from the data-blocks editor "
2445 "for this action to avoid future problems)",
2454 else if (idlevel ==
ID_AC) {
2475 ot->
name =
"Outliner Set Action";
2476 ot->
idname =
"OUTLINER_OT_action_set";
2517 "Clear Animation Data",
2518 "Remove this animation data container"},
2530 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
2571 &space_outliner->
tree,
2600 ot->
name =
"Outliner Animation Data Operation";
2601 ot->
idname =
"OUTLINER_OT_animdata_operation";
2646 ot->
name =
"Outliner Constraint Operation";
2647 ot->
idname =
"OUTLINER_OT_constraint_operation";
2693 ot->
name =
"Outliner Modifier Operation";
2694 ot->
idname =
"OUTLINER_OT_modifier_operation";
2725 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
2730 switch (datalevel) {
2741 space_outliner, datalevel, event, &space_outliner->
tree,
bone_fn,
NULL);
2789 ot->
name =
"Outliner Data Operation";
2790 ot->
idname =
"OUTLINER_OT_data_operation";
2833 int scenelevel = 0, objectlevel = 0, idlevel = 0, datalevel = 0;
2851 if (objectlevel || datalevel || idlevel) {
2862 if (idlevel == -1 || datalevel) {
2880 else if (datalevel) {
2881 if (datalevel == -1) {
2928 ®ion->
v2d, event->
mval[0], event->
mval[1], &view_mval[0], &view_mval[1]);
2931 space_outliner, &space_outliner->
tree, view_mval[1]);
2943 ot->
name =
"Context Menu";
2944 ot->
idname =
"OUTLINER_OT_operation";
bool BKE_animdata_set_action(struct ReportList *reports, struct ID *id, struct bAction *act)
void BKE_animdata_free(struct ID *id, const bool do_id_user)
bool BKE_collection_child_remove(struct Main *bmain, struct Collection *parent, struct Collection *child)
bool BKE_scene_collections_object_remove(struct Main *bmain, struct Scene *scene, struct Object *object, const bool free_us)
bool BKE_collection_object_remove(struct Main *bmain, struct Collection *collection, struct Object *object, const bool free_us)
bool BKE_constraint_remove_ex(ListBase *list, struct Object *ob, struct bConstraint *con, bool clear_dep)
void BKE_constraints_active_set(ListBase *list, struct bConstraint *con)
struct Scene * CTX_data_scene(const bContext *C)
struct Object * CTX_data_edit_object(const bContext *C)
struct SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct ReportList * CTX_wm_reports(const bContext *C)
struct wmMsgBus * CTX_wm_message_bus(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void BKE_fcurves_free(ListBase *list)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
void id_us_min(struct ID *id)
void BKE_main_id_tag_all(struct Main *mainvar, const int tag, const bool value)
void id_fake_user_set(struct ID *id)
void BKE_main_id_clear_newpoins(struct Main *bmain)
bool BKE_lib_id_make_local(struct Main *bmain, struct ID *id, const bool test, const int flags)
bool id_single_user(struct bContext *C, struct ID *id, struct PointerRNA *ptr, struct PropertyRNA *prop)
bool void BKE_lib_id_clear_library_data(struct Main *bmain, struct ID *id)
void BKE_id_delete(struct Main *bmain, void *idv) ATTR_NONNULL()
void id_fake_user_clear(struct ID *id)
size_t BKE_id_multi_tagged_delete(struct Main *bmain) ATTR_NONNULL()
bool BKE_lib_override_library_create(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct ID *id_root, struct ID *id_reference)
struct ID * BKE_lib_override_library_create_from_id(struct Main *bmain, struct ID *reference_id, const bool do_tagged_remap)
void BKE_lib_override_library_id_hierarchy_reset(struct Main *bmain, struct ID *id_root)
void BKE_lib_override_library_make_local(struct ID *id)
void BKE_lib_override_library_id_reset(struct Main *bmain, struct ID *id_root)
bool BKE_lib_override_library_proxy_convert(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct Object *ob_proxy)
void BKE_lib_override_library_delete(struct Main *bmain, struct ID *id_root)
bool BKE_lib_override_library_resync(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct ID *id_root, struct Collection *override_resync_residual_storage, const bool do_hierarchy_enforce, const bool do_post_process)
bool BKE_library_ID_is_indirectly_used(struct Main *bmain, void *idv)
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
General operations, lookup, etc. for blender objects.
bool BKE_object_is_in_editmode(const struct Object *ob)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
GSet * BLI_gset_ptr_new(const char *info)
#define GSET_ITER(gs_iter_, gset_)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
BLI_INLINE void * BLI_gsetIterator_getKey(GSetIterator *gsi)
bool BLI_gset_add(GSet *gs, void *key)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
char * BLI_strcasestr(const char *s, const char *find) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
#define CLOG_WARN(clg_ref,...)
void DEG_id_tag_update_ex(struct Main *bmain, struct ID *id, int flag)
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
#define ID_EXTRA_USERS(id)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_OVERRIDABLE_LIBRARY(_id)
#define ID_IS_LINKED(_id)
#define ID_REAL_USERS(id)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
#define TSE_IS_REAL_ID(_tse)
@ TSE_VIEW_COLLECTION_BASE
@ TSE_SCENE_COLLECTION_BASE
#define BASACT(_view_layer)
@ RPT_ERROR_INVALID_INPUT
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
bool ED_object_editmode_exit_ex(struct Main *bmain, struct Scene *scene, struct Object *obedit, int flag)
void ED_object_constraint_update(struct Main *bmain, struct Object *ob)
bool ED_object_modifier_remove(struct ReportList *reports, struct Main *bmain, struct Scene *scene, struct Object *ob, struct ModifierData *md)
bool ED_object_editmode_exit(struct bContext *C, int flag)
void ED_object_select_linked_by_id(struct bContext *C, struct ID *id)
void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob)
void ED_outliner_select_sync_from_all_tag(struct bContext *C)
void ED_outliner_select_sync_from_object_tag(struct bContext *C)
void ED_outliner_select_sync_from_outliner(struct bContext *C, struct SpaceOutliner *space_outliner)
bool ED_scene_delete(struct bContext *C, struct Main *bmain, struct Scene *scene) ATTR_NONNULL()
void ED_region_tag_redraw_no_rebuild(struct ARegion *region)
bool ED_operator_outliner_active(struct bContext *C)
void ED_sequencer_select_sequence_single(struct Scene *scene, struct Sequence *seq, bool deselect_all)
void ED_undo_push(struct bContext *C, const char *str)
_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.
const EnumPropertyItem * RNA_action_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
void UI_block_theme_style_set(uiBlock *block, char theme_style)
int UI_searchbox_size_y(void)
void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext)
@ UI_BUT_ACTIVATE_ON_INIT
uiBut * uiDefBut(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, void *poin, float min, float max, float a1, float a2, const char *tip)
void UI_block_bounds_set_popup(uiBlock *block, int addval, const int bounds_offset[2])
bool UI_search_item_add(uiSearchItems *items, const char *name, void *poin, int iconid, int state, const uint8_t name_prefix_offset)
uiBut * UI_context_active_but_get(const struct bContext *C)
struct uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
void UI_but_tooltip_timer_remove(struct bContext *C, uiBut *but)
void uiItemS(uiLayout *layout)
void UI_but_func_search_set(uiBut *but, uiButSearchCreateFn search_create_fn, uiButSearchUpdateFn search_update_fn, void *arg, const bool free_arg, uiButSearchArgFreeFn search_arg_free_fn, uiButHandleFunc search_exec_fn, void *active)
void UI_popup_block_invoke(struct bContext *C, uiBlockCreateFunc func, void *arg, void(*arg_free)(void *arg))
void uiItemMContents(uiLayout *layout, const char *menuname)
@ UI_BLOCK_MOVEMOUSE_QUIT
void uiItemsEnumO(uiLayout *layout, const char *opname, const char *propname)
uiBlock * UI_block_begin(const struct bContext *C, struct ARegion *region, const char *name, eUIEmbossType emboss)
void UI_popup_menu_end(struct bContext *C, struct uiPopupMenu *pup)
uiBut * uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, int x, int y, short width, short height, float a1, float a2, const char *tip)
int UI_search_items_find_index(uiSearchItems *items, const char *name)
void UI_block_flag_enable(uiBlock *block, int flag)
@ UI_BLOCK_THEME_STYLE_POPUP
void UI_but_flag_enable(uiBut *but, int flag)
uiPopupMenu * UI_popup_menu_begin(struct bContext *C, const char *title, int icon) ATTR_NONNULL()
void UI_view2d_region_to_view(const struct View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
@ WM_OP_INVOKE_REGION_WIN
#define ND_SPACE_OUTLINER
ATTR_WARN_UNUSED_RESULT const void * element
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
bool active
all scheduled work for the GPU.
void outliner_collection_delete(bContext *C, Main *bmain, Scene *scene, ReportList *reports, bool hierarchy)
bool outliner_is_collection_tree_element(const TreeElement *te)
int tree_element_id_type_to_index(TreeElement *te)
TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
void id_remap_fn(bContext *C, ReportList *UNUSED(reports), Scene *UNUSED(scene), TreeElement *UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
void lib_reload_fn(bContext *C, ReportList *UNUSED(reports), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
void id_delete_fn(bContext *C, ReportList *reports, Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
void item_rename_fn(bContext *C, ReportList *reports, Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
void lib_relocate_fn(bContext *C, ReportList *UNUSED(reports), Scene *UNUSED(scene), TreeElement *te, TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
bool outliner_tree_traverse(const SpaceOutliner *space_outliner, ListBase *tree, int filter_te_flag, int filter_tselem_flag, TreeTraversalFunc func, void *customdata)
TreeElement * outliner_find_element_with_flag(const ListBase *lb, short flag)
void outliner_item_select(struct bContext *C, struct SpaceOutliner *space_outliner, struct TreeElement *te, const short select_flag)
void outliner_cleanup_tree(struct SpaceOutliner *space_outliner)
void(* outliner_operation_fn)(struct bContext *C, struct ReportList *, struct Scene *scene, struct TreeElement *, struct TreeStoreElem *, TreeStoreElem *, void *)
TreeElement * outliner_find_item_at_y(const SpaceOutliner *space_outliner, const ListBase *tree, float view_co_y)
struct ID * outliner_search_back(TreeElement *te, short idcode)
#define TSELEM_OPEN(telm, sv)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
bool RNA_struct_is_ID(const StructRNA *type)
const char * RNA_property_identifier(const PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
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)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
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_get(Scene *scene, bool alloc)
TreeElement * select_element
TreeElement * parent_element
struct Collection * instance_collection
bool do_resync_hierarchy_enforce
struct Collection * master_collection
struct TreeElement * parent
TreeStoreElem * store_elem
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_menu_name_call(bContext *C, const char *menu_name, short context)
int WM_operator_name_call(bContext *C, const char *opstring, short context, PointerRNA *properties)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
#define WM_msg_publish_rna_prop(mbus, id_, data_, type_, prop_)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
const char * WM_operatortype_name(struct wmOperatorType *ot, struct PointerRNA *properties)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void WM_window_set_active_scene(Main *bmain, bContext *C, wmWindow *win, Scene *scene)