Blender  V3.3
Functions
wm_operator_props.c File Reference
#include "DNA_ID_enums.h"
#include "DNA_space_types.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BLI_math_base.h"
#include "BLI_rect.h"
#include "UI_resources.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
#include "RNA_prototypes.h"
#include "ED_select_utils.h"
#include "WM_api.h"
#include "WM_types.h"

Go to the source code of this file.

Functions

void WM_operator_properties_confirm_or_exec (wmOperatorType *ot)
 
static const EnumPropertyItemwm_operator_properties_filesel_sort_items_itemf (struct bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
 
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)
 
void WM_operator_properties_id_lookup_set_from_id (PointerRNA *ptr, const ID *id)
 
IDWM_operator_properties_id_lookup_from_name_or_session_uuid (Main *bmain, PointerRNA *ptr, const ID_Type type)
 
bool WM_operator_properties_id_lookup_is_set (PointerRNA *ptr)
 
void WM_operator_properties_id_lookup (wmOperatorType *ot, const bool add_name_prop)
 
static void wm_operator_properties_select_action_ex (wmOperatorType *ot, int default_action, const EnumPropertyItem *select_actions, bool hide_gui)
 
void WM_operator_properties_select_action (wmOperatorType *ot, int default_action, bool hide_gui)
 
void WM_operator_properties_select_action_simple (wmOperatorType *ot, int default_action, bool hide_gui)
 
void WM_operator_properties_select_random (wmOperatorType *ot)
 
int WM_operator_properties_select_random_seed_increment_get (wmOperator *op)
 
void WM_operator_properties_select_all (wmOperatorType *ot)
 
void WM_operator_properties_border (wmOperatorType *ot)
 
void WM_operator_properties_border_to_rcti (struct wmOperator *op, rcti *rect)
 
void WM_operator_properties_border_to_rctf (struct wmOperator *op, rctf *rect)
 
void WM_operator_properties_gesture_box_ex (wmOperatorType *ot, bool deselect, bool extend)
 
void WM_operator_properties_use_cursor_init (wmOperatorType *ot)
 
void WM_operator_properties_gesture_box_select (wmOperatorType *ot)
 
void WM_operator_properties_gesture_box (wmOperatorType *ot)
 
void WM_operator_properties_select_operation (wmOperatorType *ot)
 
void WM_operator_properties_select_operation_simple (wmOperatorType *ot)
 
void WM_operator_properties_select_walk_direction (wmOperatorType *ot)
 
void WM_operator_properties_generic_select (wmOperatorType *ot)
 
void WM_operator_properties_gesture_box_zoom (wmOperatorType *ot)
 
void WM_operator_properties_gesture_lasso (wmOperatorType *ot)
 
void WM_operator_properties_gesture_straightline (wmOperatorType *ot, int cursor)
 
void WM_operator_properties_gesture_circle (wmOperatorType *ot)
 
void WM_operator_properties_mouse_select (wmOperatorType *ot)
 
void WM_operator_properties_checker_interval (wmOperatorType *ot, bool nth_can_disable)
 
void WM_operator_properties_checker_interval_from_op (struct wmOperator *op, struct CheckerIntervalParams *op_params)
 
bool WM_operator_properties_checker_interval_test (const struct CheckerIntervalParams *op_params, int depth)
 

Detailed Description

Generic re-usable property definitions and accessors for operators to share. (WM_operator_properties_* functions).

Definition in file wm_operator_props.c.

Function Documentation

◆ WM_operator_properties_border()

void WM_operator_properties_border ( wmOperatorType ot)

◆ WM_operator_properties_border_to_rctf()

void WM_operator_properties_border_to_rctf ( struct wmOperator op,
rctf rect 
)

◆ WM_operator_properties_border_to_rcti()

void WM_operator_properties_border_to_rcti ( struct wmOperator op,
rcti rect 
)

◆ WM_operator_properties_checker_interval()

void WM_operator_properties_checker_interval ( struct wmOperatorType ot,
bool  nth_can_disable 
)
Parameters
nth_can_disableEnable if we want to be able to select no interval at all.

Definition at line 603 of file wm_operator_props.c.

References min_ii(), ot, RNA_def_int(), and wmOperatorType::srna.

Referenced by CURVE_OT_select_nth(), MESH_OT_select_nth(), and path_select_properties().

◆ WM_operator_properties_checker_interval_from_op()

void WM_operator_properties_checker_interval_from_op ( struct wmOperator op,
struct CheckerIntervalParams op_params 
)

◆ WM_operator_properties_checker_interval_test()

bool WM_operator_properties_checker_interval_test ( const struct CheckerIntervalParams op_params,
int  depth 
)

◆ WM_operator_properties_confirm_or_exec()

void WM_operator_properties_confirm_or_exec ( wmOperatorType ot)

◆ WM_operator_properties_filesel()

void WM_operator_properties_filesel ( struct wmOperatorType ot,
int  filter,
short  type,
eFileSel_Action  action,
eFileSel_Flag  flag,
short  display,
short  sort 
)

Default properties for file-select.

Definition at line 64 of file wm_operator_props.c.

References DummyRNA_NULL_items, FILE_DEFAULTDISPLAY, FILE_HORIZONTALDISPLAY, FILE_IMGDISPLAY, FILE_LOADLIB, FILE_MAX, FILE_SAVE, FILE_SPECIAL, FILE_TYPE_ALEMBIC, FILE_TYPE_ARCHIVE, FILE_TYPE_BLENDER, FILE_TYPE_BLENDER_BACKUP, FILE_TYPE_BLENDERLIB, FILE_TYPE_BTX, FILE_TYPE_COLLADA, FILE_TYPE_FOLDER, FILE_TYPE_FTFONT, FILE_TYPE_IMAGE, FILE_TYPE_MOVIE, FILE_TYPE_OBJECT_IO, FILE_TYPE_PYSCRIPT, FILE_TYPE_SOUND, FILE_TYPE_TEXT, FILE_TYPE_USD, FILE_TYPE_VOLUME, FILE_VERTICALDISPLAY, filter(), NULL, ot, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_collection_runtime(), RNA_def_enum(), RNA_def_enum_funcs(), RNA_def_int(), RNA_def_property_flag(), RNA_def_string_dir_path(), RNA_def_string_file_name(), RNA_def_string_file_path(), sort(), wmOperatorType::srna, type, WM_FILESEL_DIRECTORY, WM_FILESEL_FILENAME, WM_FILESEL_FILEPATH, WM_FILESEL_FILES, WM_FILESEL_RELPATH, WM_FILESEL_SHOW_PROPS, and wm_operator_properties_filesel_sort_items_itemf().

Referenced by ASSET_OT_bundle_install(), BUTTONS_OT_directory_browse(), BUTTONS_OT_file_browse(), CACHEFILE_OT_layer_add(), CACHEFILE_OT_open(), CLIP_OT_open(), ED_OT_lib_id_load_custom_preview(), FILE_OT_find_missing_files(), FONT_OT_open(), FONT_OT_text_paste_from_file(), GRAPH_OT_sound_bake(), IMAGE_OT_file_browse(), IMAGE_OT_open(), IMAGE_OT_replace(), IMAGE_OT_save_as(), blender::ed::space_node::NODE_OT_add_file(), OBJECT_OT_multires_external_save(), OBJECT_OT_volume_import(), PREFERENCES_OT_asset_library_add(), RIGIDBODY_OT_world_export(), screen_screenshot_impl(), SEQUENCER_OT_change_path(), SEQUENCER_OT_export_subtitles(), SEQUENCER_OT_image_strip_add(), SEQUENCER_OT_movie_strip_add(), SEQUENCER_OT_sound_strip_add(), SOUND_OT_mixdown(), SOUND_OT_open(), SOUND_OT_open_mono(), TEXT_OT_open(), TEXT_OT_save_as(), VIEW3D_OT_background_image_add(), WM_OT_append(), WM_OT_lib_reload(), WM_OT_lib_relocate(), WM_OT_link(), WM_OT_open_mainfile(), WM_OT_recover_auto_save(), WM_OT_save_as_mainfile(), and WM_OT_save_mainfile().

◆ wm_operator_properties_filesel_sort_items_itemf()

static const EnumPropertyItem* wm_operator_properties_filesel_sort_items_itemf ( struct bContext UNUSEDC,
PointerRNA UNUSEDptr,
PropertyRNA UNUSEDprop,
bool r_free 
)
static

Extends rna_enum_fileselect_params_sort_items with a default item for operators to use.

Definition at line 43 of file wm_operator_props.c.

References FILE_SORT_DEFAULT, rna_enum_fileselect_params_sort_items, RNA_enum_item_add(), RNA_enum_item_end(), and RNA_enum_items_add().

Referenced by WM_operator_properties_filesel().

◆ WM_operator_properties_generic_select()

void WM_operator_properties_generic_select ( struct wmOperatorType ot)

Selecting and tweaking items are overlapping operations. Getting both to work without conflicts requires special care. See https://wiki.blender.org/wiki/Human_Interface_Guidelines/Selection#Select-tweaking for the desired behavior.

For default click selection (with no modifier keys held), the select operators can do the following:

  • On a mouse press on an unselected item, change selection and finish immediately after. This sends an undo push and allows transform to take over should a click-drag event be caught.
  • On a mouse press on a selected item, don't change selection state, but start modal execution of the operator. Idea is that we wait with deselecting other items until we know that the intention wasn't to tweak (mouse press+drag) all selected items.
  • If a click-drag is recognized before the release event happens, cancel the operator, so that transform can take over and no undo-push is sent.
  • If the release event occurs rather than a click-drag one, deselect all items but the one under the cursor, and finish the modal operator.

This utility, together with WM_generic_select_invoke() and WM_generic_select_modal() should help getting the wanted behavior to work. Most generic logic should be handled in these, so that the select operators only have to care for the case dependent handling.

Every select operator has slightly different requirements, e.g. sequencer strip selection also needs to account for handle selection. This should be the baseline behavior though.

Definition at line 497 of file wm_operator_props.c.

References ot, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_int(), RNA_def_property_flag(), and wmOperatorType::srna.

Referenced by ACTION_OT_clickselect(), FILE_OT_select(), GRAPH_OT_clickselect(), MARKER_OT_select(), NLA_OT_click_select(), and SEQUENCER_OT_select().

◆ WM_operator_properties_gesture_box()

void WM_operator_properties_gesture_box ( wmOperatorType ot)

◆ WM_operator_properties_gesture_box_ex()

void WM_operator_properties_gesture_box_ex ( struct wmOperatorType ot,
bool  deselect,
bool  extend 
)

◆ WM_operator_properties_gesture_box_select()

void WM_operator_properties_gesture_box_select ( wmOperatorType ot)

◆ WM_operator_properties_gesture_box_zoom()

void WM_operator_properties_gesture_box_zoom ( wmOperatorType ot)

◆ WM_operator_properties_gesture_circle()

void WM_operator_properties_gesture_circle ( struct wmOperatorType ot)

◆ WM_operator_properties_gesture_lasso()

void WM_operator_properties_gesture_lasso ( struct wmOperatorType ot)

◆ WM_operator_properties_gesture_straightline()

void WM_operator_properties_gesture_straightline ( struct wmOperatorType ot,
int  cursor 
)

◆ WM_operator_properties_id_lookup()

void WM_operator_properties_id_lookup ( wmOperatorType ot,
const bool  add_name_prop 
)

Adds "name" and "session_uuid" properties so the caller can tell the operator which ID to act on. See WM_operator_properties_id_lookup_from_name_or_session_uuid(). Both properties will be hidden in the UI and not be saved over consecutive operator calls.

Note
New operators should probably use "session_uuid" only (set add_name_prop to #false), since this works properly with linked data and/or library overrides (in both cases, multiple IDs with the same name and type may be present). The "name" property is only kept to not break compatibility with old scripts using some previously existing operators.

Definition at line 271 of file wm_operator_props.c.

References INT32_MAX, INT32_MIN, MAX_ID_NAME, NULL, ot, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_int(), RNA_def_property_flag(), RNA_def_string(), and wmOperatorType::srna.

Referenced by blender::ed::space_node::NODE_OT_add_collection(), blender::ed::space_node::NODE_OT_add_file(), blender::ed::space_node::NODE_OT_add_group(), blender::ed::space_node::NODE_OT_add_mask(), blender::ed::space_node::NODE_OT_add_object(), OBJECT_OT_add_named(), OBJECT_OT_collection_external_asset_drop(), OBJECT_OT_collection_instance_add(), OBJECT_OT_data_instance_add(), OBJECT_OT_drop_named_image(), OBJECT_OT_drop_named_material(), UI_OT_drop_material(), VIEW3D_OT_background_image_add(), and VIEW3D_OT_drop_world().

◆ WM_operator_properties_id_lookup_from_name_or_session_uuid()

ID* WM_operator_properties_id_lookup_from_name_or_session_uuid ( struct Main bmain,
PointerRNA ptr,
enum ID_Type  type 
)

◆ WM_operator_properties_id_lookup_is_set()

bool WM_operator_properties_id_lookup_is_set ( PointerRNA ptr)

Check if either the "session_uuid" or "name" property is set inside ptr. If this is the case the ID can be looked up by WM_operator_properties_id_lookup_from_name_or_session_uuid().

Definition at line 265 of file wm_operator_props.c.

References ptr, and RNA_struct_property_is_set().

Referenced by blender::ed::space_node::node_add_file_invoke(), object_instance_add_invoke(), and WM_operator_drop_load_path().

◆ WM_operator_properties_id_lookup_set_from_id()

void WM_operator_properties_id_lookup_set_from_id ( PointerRNA ptr,
const ID id 
)

Tries to pass id to an operator via either a "session_uuid" or a "name" property defined in the properties of ptr. The former is preferred, since it works properly with linking and library overrides (which may both result in multiple IDs with the same name and type).

Also see WM_operator_properties_id_lookup() and WM_operator_properties_id_lookup_from_name_or_session_uuid()

Definition at line 229 of file wm_operator_props.c.

References BLI_assert_unreachable, id, ID::name, ptr, RNA_int_set(), RNA_string_set(), RNA_struct_find_property(), and ID::session_uuid.

Referenced by view3d_id_drop_copy(), view3d_id_drop_copy_with_type(), and view3d_id_path_drop_copy().

◆ WM_operator_properties_mouse_select()

void WM_operator_properties_mouse_select ( struct wmOperatorType ot)

◆ WM_operator_properties_select_action()

void WM_operator_properties_select_action ( wmOperatorType ot,
int  default_action,
bool  hide_gui 
)

◆ wm_operator_properties_select_action_ex()

static void wm_operator_properties_select_action_ex ( wmOperatorType ot,
int  default_action,
const EnumPropertyItem select_actions,
bool  hide_gui 
)
static

◆ WM_operator_properties_select_action_simple()

void WM_operator_properties_select_action_simple ( struct wmOperatorType ot,
int  default_action,
bool  hide_gui 
)

◆ WM_operator_properties_select_all()

void WM_operator_properties_select_all ( wmOperatorType ot)

◆ WM_operator_properties_select_operation()

void WM_operator_properties_select_operation ( wmOperatorType ot)

◆ WM_operator_properties_select_operation_simple()

void WM_operator_properties_select_operation_simple ( struct wmOperatorType ot)

◆ WM_operator_properties_select_random()

void WM_operator_properties_select_random ( struct wmOperatorType ot)

◆ WM_operator_properties_select_random_seed_increment_get()

int WM_operator_properties_select_random_seed_increment_get ( wmOperator op)

◆ WM_operator_properties_select_walk_direction()

void WM_operator_properties_select_walk_direction ( wmOperatorType ot)

◆ WM_operator_properties_use_cursor_init()

void WM_operator_properties_use_cursor_init ( struct wmOperatorType ot)

Disable using cursor position, use when view operators are initialized from buttons.

Definition at line 433 of file wm_operator_props.c.

References ot, PROP_HIDDEN, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_property_flag(), and wmOperatorType::srna.

Referenced by CLIP_OT_view_zoom(), IMAGE_OT_view_zoom(), VIEW2D_OT_zoom(), and view3d_operator_properties_common().