Blender V5.0
wm_operator_type.cc File Reference
#include "MEM_guardedalloc.h"
#include "CLG_log.h"
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
#include "BLT_translation.hh"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_vector_set.hh"
#include "BKE_context.hh"
#include "BKE_idprop.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_enum_types.hh"
#include "RNA_prototypes.hh"
#include "WM_api.hh"
#include "WM_keymap.hh"
#include "WM_types.hh"
#include "wm.hh"
#include "wm_event_system.hh"

Go to the source code of this file.

Classes

struct  MacroData

Macros

#define UNDOCUMENTED_OPERATOR_TIP   N_("(undocumented operator)")

Functions

void WM_operatortype_remove_ptr (wmOperatorType *ot)
bool WM_operatortype_remove (const char *idname)
static void operatortype_ghash_free_cb (wmOperatorType *ot)
void wm_operatortype_free ()
void WM_operatortype_props_advanced_begin (wmOperatorType *ot)
void WM_operatortype_props_advanced_end (wmOperatorType *ot)
void WM_operatortype_last_properties_clear_all ()
void WM_operatortype_idname_visit_for_search (const bContext *, PointerRNA *, PropertyRNA *, const char *, blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn)
Operator Macro Type
static void wm_operatortype_free_macro (wmOperatorType *ot)
static void wm_macro_start (wmOperator *op)
static wmOperatorStatus wm_macro_end (wmOperator *op, wmOperatorStatus retval)
static wmOperatorStatus wm_macro_exec (bContext *C, wmOperator *op)
static wmOperatorStatus wm_macro_invoke_internal (bContext *C, wmOperator *op, const wmEvent *event, wmOperator *opm)
static wmOperatorStatus wm_macro_invoke (bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus wm_macro_modal (bContext *C, wmOperator *op, const wmEvent *event)
static void wm_macro_cancel (bContext *C, wmOperator *op)
wmOperatorTypeWM_operatortype_append_macro (const char *idname, const char *name, const char *description, int flag)
void WM_operatortype_append_macro_ptr (void(*opfunc)(wmOperatorType *ot, void *userdata), void *userdata)
wmOperatorTypeMacroWM_operatortype_macro_define (wmOperatorType *ot, const char *idname)
std::string WM_operatortype_name (wmOperatorType *ot, PointerRNA *properties)
std::string WM_operatortype_description (bContext *C, wmOperatorType *ot, PointerRNA *properties)
std::string WM_operatortype_description_or_name (bContext *C, wmOperatorType *ot, PointerRNA *properties)
bool WM_operator_depends_on_cursor (bContext &C, wmOperatorType &ot, PointerRNA *properties)
Operator Type Append
static wmOperatorTypewm_operatortype_append__begin ()
static void wm_operatortype_append__end (wmOperatorType *ot)
void WM_operatortype_append (void(*opfunc)(wmOperatorType *))
void WM_operatortype_append_ptr (void(*opfunc)(wmOperatorType *, void *), void *userdata)

Operator Type Registry

static int ot_prop_basic_count = -1
static auto & get_operators_map ()
blender::Span< wmOperatorType * > WM_operatortypes_registered_get ()
wmOperatorTypeWM_operatortype_find (const char *idname, bool quiet)

Detailed Description

Operator Registry.

Definition in file wm_operator_type.cc.

Macro Definition Documentation

◆ UNDOCUMENTED_OPERATOR_TIP

#define UNDOCUMENTED_OPERATOR_TIP   N_("(undocumented operator)")

Function Documentation

◆ get_operators_map()

◆ operatortype_ghash_free_cb()

void operatortype_ghash_free_cb ( wmOperatorType * ot)
static

Definition at line 207 of file wm_operator_type.cc.

References IDP_FreeProperty(), MEM_freeN(), ot, and wm_operatortype_free_macro().

Referenced by wm_operatortype_free().

◆ wm_macro_cancel()

◆ wm_macro_end()

◆ wm_macro_exec()

◆ wm_macro_invoke()

wmOperatorStatus wm_macro_invoke ( bContext * C,
wmOperator * op,
const wmEvent * event )
static

◆ wm_macro_invoke_internal()

◆ wm_macro_modal()

◆ wm_macro_start()

void wm_macro_start ( wmOperator * op)
static

Definition at line 302 of file wm_operator_type.cc.

References wmOperator::customdata, and MEM_callocN().

Referenced by wm_macro_exec(), and wm_macro_invoke().

◆ WM_operator_depends_on_cursor()

bool WM_operator_depends_on_cursor ( bContext & C,
wmOperatorType & ot,
PointerRNA * properties )

Check the OPTYPE_DEPENDS_ON_CURSOR flag and the callback.

Definition at line 633 of file wm_operator_type.cc.

References C, OPTYPE_DEPENDS_ON_CURSOR, and ot.

Referenced by WM_operator_name_call_ptr_with_depends_on_cursor().

◆ WM_operatortype_append()

void WM_operatortype_append ( void(* opfunc )(wmOperatorType *))

Definition at line 149 of file wm_operator_type.cc.

References ot, wm_operatortype_append__begin(), and wm_operatortype_append__end().

Referenced by action_operatortypes(), buttons_operatortypes(), clip_operatortypes(), blender::ed::object::collection_exporter_register(), console_operatortypes(), ED_operatortypes_anim(), ED_operatortypes_animchannels(), ED_operatortypes_armature(), ED_operatortypes_curve(), blender::ed::curves::ED_operatortypes_curves_pen(), ED_operatortypes_edutils(), ED_operatortypes_gpencil_legacy(), ED_operatortypes_grease_pencil_bake_animation(), ED_operatortypes_grease_pencil_draw(), ED_operatortypes_grease_pencil_edit(), ED_operatortypes_grease_pencil_frames(), ED_operatortypes_grease_pencil_interpolate(), ED_operatortypes_grease_pencil_join(), ED_operatortypes_grease_pencil_layers(), ED_operatortypes_grease_pencil_lineart(), ED_operatortypes_grease_pencil_material(), ED_operatortypes_grease_pencil_modes(), ED_operatortypes_grease_pencil_pen(), ED_operatortypes_grease_pencil_primitives(), ED_operatortypes_grease_pencil_select(), ED_operatortypes_grease_pencil_trace(), ED_operatortypes_grease_pencil_vertex_paint(), ED_operatortypes_grease_pencil_weight_paint(), ED_operatortypes_io(), ED_operatortypes_lattice(), ED_operatortypes_marker(), ED_operatortypes_mask(), ED_operatortypes_mesh(), ED_operatortypes_metaball(), ED_operatortypes_paint(), ED_operatortypes_render(), ED_operatortypes_scene(), ED_operatortypes_screen(), ED_operatortypes_sculpt_curves(), ED_operatortypes_sound(), ED_operatortypes_ui(), ED_operatortypes_userpref(), ED_operatortypes_uvedit(), ED_operatortypes_view2d(), ED_operatortypes_workspace(), file_operatortypes(), graphedit_operatortypes(), image_operatortypes(), info_operatortypes(), blender::nodes::socket_items::ops::make_common_operators(), nla_operatortypes(), blender::nodes::node_geo_index_switch_cc::node_operators(), blender::ed::space_node::node_operatortypes(), blender::ed::object::object_modifier_add_asset_register(), blender::ed::asset::operatortypes_asset(), operatortypes_boids(), blender::ed::curves::operatortypes_curves(), operatortypes_dynamicpaint(), operatortypes_fluid(), blender::ed::geometry::operatortypes_geometry(), blender::ed::object::operatortypes_object(), operatortypes_particle(), operatortypes_pointcache(), blender::ed::pointcloud::operatortypes_pointcloud(), blender::ed::sculpt_paint::operatortypes_sculpt(), blender::ed::outliner::outliner_operatortypes(), script_operatortypes(), blender::ed::vse::sequencer_operatortypes(), blender::ed::spreadsheet::spreadsheet_operatortypes(), text_operatortypes(), blender::ed::transform::transform_operatortypes(), view3d_operatortypes(), wm_operatortypes_register(), and wm_xr_operatortypes_register().

◆ wm_operatortype_append__begin()

◆ wm_operatortype_append__end()

◆ WM_operatortype_append_macro()

◆ WM_operatortype_append_macro_ptr()

◆ WM_operatortype_append_ptr()

void WM_operatortype_append_ptr ( void(* opfunc )(wmOperatorType *, void *),
void * userdata )

◆ WM_operatortype_description()

std::string WM_operatortype_description ( bContext * C,
wmOperatorType * ot,
PointerRNA * properties )

◆ WM_operatortype_description_or_name()

std::string WM_operatortype_description_or_name ( bContext * C,
wmOperatorType * ot,
PointerRNA * properties )

Use when we want a label, preferring the description.

Definition at line 619 of file wm_operator_type.cc.

References C, ot, WM_operatortype_description(), and WM_operatortype_name().

Referenced by ui_tooltip_data_from_gizmo().

◆ WM_operatortype_find()

wmOperatorType * WM_operatortype_find ( const char * idname,
bool quiet )

Definition at line 78 of file wm_operator_type.cc.

References CLOG_INFO, get_operators_map(), OP_MAX_TYPENAME, ot, WM_LOG_OPERATORS, and WM_operator_bl_idname().

Referenced by add_driver_button_menu_exec(), bone_mouse_select_menu(), blender::ed::geometry::catalog_assets_draw(), blender::ed::object::catalog_assets_draw(), blender::ed::geometry::catalog_assets_draw_unassigned(), blender::ed::object::collection_exporter_add_exec(), blender::ed::object::collection_exporter_export(), blender::ed::object::collection_exporter_menu_draw(), constraint_reorder(), blender::ed::asset::shelf::create_asset_operator_params(), doc_view_manual_ui_context_exec(), drop_import_file_poll_file_handlers(), drop_import_file_tooltip(), file_browse_invoke(), file_directory_enter_handle(), file_draw_invalid_asset_library_hint(), file_external_operation_exec(), file_os_operations_menu_draw(), ghost_event_proc(), blender::ed::transform::gizmo2d_resize_setup(), blender::ed::transform::gizmo2d_rotate_setup(), blender::ed::transform::gizmo2d_xform_setup(), blender::ed::transform::gizmo_mesh_extrude_setup(), gizmo_mesh_spin_init_setup(), gizmo_mesh_spin_redo_setup(), blender::ed::transform::gizmogroup_init_properties_from_twtype(), blender::ed::outliner::id_remap_fn(), image_file_browse_invoke(), is_brush_related_tool(), keymap_handler_log_kmi_op_str(), blender::ed::outliner::lib_reload_fn(), blender::ed::outliner::lib_relocate_fn(), blender::ed::space_node::link_drag_search_exec_fn(), menu_item_enum_opname_menu_active(), blender::ed::object::mode_compat_set(), blender::ed::object::mode_set_ex(), blender::seq::modifier_reorder(), modifier_reorder(), blender::ed::vse::move_strips(), blender::ed::object::move_to_collection_menu_draw(), blender::ed::space_node::node_add_group_asset_invoke(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_swap_group_asset_invoke(), object_mouse_select_menu(), uiLayout::op(), uiLayout::op_enum(), uiLayout::op_menu_enum(), ot_lookup_from_py_string(), blender::ed::outliner::outliner_id_relocate_invoke(), blender::ed::outliner::outliner_item_drag_drop_invoke(), blender::ed::outliner::outliner_lib_relocate_invoke_do(), blender::ed::outliner::outliner_operator_menu(), panel_activate_state(), preferences_extension_url_drop_invoke(), pyop_as_string(), pyop_call(), pyop_poll(), PYOP_wrap_macro_define(), screen_user_menu_draw(), shaderfx_reorder(), blender::ed::transform::special_aftertrans_update__node(), template_operator_property_buts_draw_single(), toolsystem_ref_set_by_brush_type(), blender::ed::transform::transform_from_gizmo_invoke(), blender::ed::transform::transform_modal(), blender::ed::space_node::tree_path_handle_func(), ui_but_anim_decorate_cb(), UI_but_extra_operator_icon_add(), UI_but_is_tool(), ui_but_menu_add_path_operators(), UI_but_operatortype_get_from_enum_menu(), ui_but_predefined_extra_operator_icons_add(), ui_handle_menu_letter_press_search(), ui_popup_context_menu_for_button(), uiDefButO(), uiDefIconButO(), uiDefIconTextButO(), uiTemplateCollectionExporters(), uiTemplateEditModeSelection(), blender::ed::object::unassigned_assets_draw(), unpack_menu(), view3d_interactive_add_modal(), view3d_navigate_modal_fn(), view3d_panel_vgroup(), weight_sample_group_invoke(), WIDGETGROUP_light_target_setup(), WIDGETGROUP_navigate_setup(), WIDGETGROUP_navigate_setup(), WIDGETGROUP_ruler_setup(), blender::ed::transform::WIDGETGROUP_xform_cage_setup(), blender::ed::transform::WIDGETGROUP_xform_shear_setup(), wm_drop_import_file_exec(), wm_drop_import_file_invoke(), WM_dropbox_add(), wm_dropbox_item_update_ot(), WM_event_match_keymap_item(), wm_handler_operator_call(), wm_handlers_do_gizmo_handler(), wm_keymap_item_find(), wm_keymap_item_find_in_keymap(), wm_keymap_item_properties_update_ot(), WM_menu_name_call(), WM_modalkeymap_assign(), wm_operator_create(), WM_operator_name_call(), WM_operator_name_call_ptr(), WM_operator_name_call_ptr_with_depends_on_cursor(), WM_operator_name_call_with_properties(), WM_operator_name_poll(), WM_operator_poll(), WM_operator_properties_create(), WM_operator_repeat_check(), WM_operator_ui_poll(), WM_operatortype_append_macro(), WM_operatortype_macro_define(), WM_operatortype_remove(), WM_operatortype_remove_ptr(), wm_test_autorun_revert_action_exec(), WM_toolsystem_ref_set_by_id_ex(), WM_window_cursor_keymap_status_refresh(), WM_xr_actionmap_item_properties_update_ot(), and workspace_add_menu().

◆ wm_operatortype_free()

void wm_operatortype_free ( )

Definition at line 225 of file wm_operator_type.cc.

References get_operators_map(), operatortype_ghash_free_cb(), and ot.

Referenced by WM_exit_ex().

◆ wm_operatortype_free_macro()

void wm_operatortype_free_macro ( wmOperatorType * ot)
static

◆ WM_operatortype_idname_visit_for_search()

void WM_operatortype_idname_visit_for_search ( const bContext * C,
PointerRNA * ptr,
PropertyRNA * prop,
const char * edit_text,
blender::FunctionRef< void(StringPropertySearchVisitParams)> visit_fn )

◆ WM_operatortype_last_properties_clear_all()

void WM_operatortype_last_properties_clear_all ( )

Remove memory of all previously executed tools.

Definition at line 264 of file wm_operator_type.cc.

References get_operators_map(), IDP_FreeProperty(), and ot.

Referenced by wm_file_read_post().

◆ WM_operatortype_macro_define()

◆ WM_operatortype_name()

◆ WM_operatortype_props_advanced_begin()

void WM_operatortype_props_advanced_begin ( wmOperatorType * ot)

Tag all operator-properties of ot defined after calling this, until the next WM_operatortype_props_advanced_end call (if available), with OP_PROP_TAG_ADVANCED. Previously defined ones properties not touched.

Calling this multiple times without a call to WM_operatortype_props_advanced_end, all calls after the first one are ignored. Meaning all proprieties defined after the first call are tagged as advanced.

This doesn't do the actual tagging, WM_operatortype_props_advanced_end does which is called for all operators during registration (see wm_operatortype_append__end).

Definition at line 233 of file wm_operator_type.cc.

References ot, ot_prop_basic_count, and RNA_struct_count_properties().

Referenced by MESH_OT_loopcut(), MESH_OT_mark_seam(), MESH_OT_merge(), MESH_OT_subdivide(), MESH_OT_vertices_smooth(), MESH_OT_vertices_smooth_laplacian(), blender::ed::transform::TRANSFORM_OT_bbone_resize(), blender::ed::transform::TRANSFORM_OT_bend(), blender::ed::transform::TRANSFORM_OT_create_orientation(), blender::ed::transform::TRANSFORM_OT_edge_bevelweight(), blender::ed::transform::TRANSFORM_OT_edge_crease(), blender::ed::transform::TRANSFORM_OT_edge_slide(), blender::ed::transform::TRANSFORM_OT_push_pull(), blender::ed::transform::TRANSFORM_OT_resize(), blender::ed::transform::TRANSFORM_OT_rotate(), blender::ed::transform::TRANSFORM_OT_seq_slide(), blender::ed::transform::TRANSFORM_OT_shear(), blender::ed::transform::TRANSFORM_OT_shrink_fatten(), blender::ed::transform::TRANSFORM_OT_skin_resize(), blender::ed::transform::TRANSFORM_OT_tilt(), blender::ed::transform::TRANSFORM_OT_tosphere(), blender::ed::transform::TRANSFORM_OT_trackball(), blender::ed::transform::TRANSFORM_OT_transform(), blender::ed::transform::TRANSFORM_OT_translate(), blender::ed::transform::TRANSFORM_OT_vert_crease(), and blender::ed::transform::TRANSFORM_OT_vert_slide().

◆ WM_operatortype_props_advanced_end()

void WM_operatortype_props_advanced_end ( wmOperatorType * ot)

Tags all operator-properties of ot defined since the first WM_operatortype_props_advanced_begin call, or the last WM_operatortype_props_advanced_end call, with OP_PROP_TAG_ADVANCED.

Note
This is called for all operators during registration (see wm_operatortype_append__end). So it does not need to be explicitly called in operator-type definition.

Definition at line 241 of file wm_operator_type.cc.

References OP_PROP_TAG_ADVANCED, ot, ot_prop_basic_count, RNA_STRUCT_BEGIN, RNA_STRUCT_END, WM_operator_properties_create_ptr(), and WM_operatortype_prop_tag.

Referenced by wm_operatortype_append__end().

◆ WM_operatortype_remove()

bool WM_operatortype_remove ( const char * idname)

Definition at line 194 of file wm_operator_type.cc.

References ot, WM_operatortype_find(), and WM_operatortype_remove_ptr().

◆ WM_operatortype_remove_ptr()

◆ WM_operatortypes_registered_get()

blender::Span< wmOperatorType * > WM_operatortypes_registered_get ( )

Variable Documentation

◆ ot_prop_basic_count

int ot_prop_basic_count = -1
static

Counter for operator-properties that should not be tagged with OP_PROP_TAG_ADVANCED.

Definition at line 76 of file wm_operator_type.cc.

Referenced by wm_operatortype_append__begin(), WM_operatortype_props_advanced_begin(), and WM_operatortype_props_advanced_end().