62 {0,
nullptr, 0,
nullptr,
nullptr},
78static void rna_KeyMapItem_to_string(
wmKeyMapItem *kmi,
bool compact,
char *result)
100static void rna_Operator_report(
wmOperator *op,
int type,
const char *msg)
119 if (win ==
nullptr) {
143 if (gzgt ==
nullptr) {
154static void rna_gizmo_group_type_ensure(
ReportList *reports,
const char *idname)
156 wmGizmoGroupType *gzgt = wm_gizmogrouptype_find_for_add_remove(reports, idname);
157 if (gzgt !=
nullptr) {
162static void rna_gizmo_group_type_unlink_delayed(
ReportList *reports,
const char *idname)
164 wmGizmoGroupType *gzgt = wm_gizmogrouptype_find_for_add_remove(reports, idname);
165 if (gzgt !=
nullptr) {
171static struct wmStaticProgress {
175} wm_progress_state = {0, 0,
false};
179 float range = max -
min;
181 wm_progress_state.min =
min;
182 wm_progress_state.max =
max;
183 wm_progress_state.is_valid =
true;
186 wm_progress_state.is_valid =
false;
192 if (wm_progress_state.is_valid) {
196 int val =
int(10000 * (value - wm_progress_state.min) /
197 (wm_progress_state.max - wm_progress_state.min));
205 if (wm_progress_state.is_valid) {
209 wm_progress_state.is_valid =
false;
215static int rna_Operator_confirm(
bContext *C,
220 const char *confirm_text,
222 const char *text_ctxt,
223 const bool translate)
236static int rna_Operator_props_dialog_popup(
bContext *C,
240 const char *confirm_text,
241 const bool cancel_default,
242 const char *text_ctxt,
243 const bool translate)
251 title ? std::make_optional<std::string>(title) : std::nullopt,
252 confirm_text ? std::make_optional<std::string>(confirm_text) : std::nullopt,
256static int keymap_item_modifier_flag_from_args(
bool any,
int shift,
int ctrl,
int alt,
int oskey)
266 else if (shift ==
KM_ANY) {
273 else if (ctrl ==
KM_ANY) {
287 else if (oskey ==
KM_ANY) {
318 const int modifier = keymap_item_modifier_flag_from_args(any, shift, ctrl, alt, oskey);
323 keymap_item_params.
type = type;
324 keymap_item_params.value = value;
325 keymap_item_params.modifier = modifier;
326 keymap_item_params.keymodifier = keymodifier;
327 keymap_item_params.direction = direction;
370 const char *propvalue_str,
389 const int modifier = keymap_item_modifier_flag_from_args(any, shift, ctrl, alt, oskey);
395 params.modifier = modifier;
396 params.keymodifier = keymodifier;
397 params.direction = direction;
434static PointerRNA rna_KeyMap_item_find_from_operator(
ID *
id,
445 km, idname_bl,
static_cast<IDProperty *
>(properties->
data), include_mask, exclude_mask);
487 if (keymap && tool) {
521 "KeyMap '%s' not found in KeyConfig '%s'",
531static void rna_KeyMaps_clear(
wmKeyConfig *keyconfig)
577static void rna_KeyConfig_update(
wmWindowManager *wm,
bool keep_properties)
598 if (!rna_popup_context_ok_or_report(C, reports)) {
615 const int ui_units_x,
616 const bool from_active_button)
618 if (!rna_popup_context_ok_or_report(C, reports)) {
622 void *data = (
void *)
UI_popover_begin(C,
U.widget_unit * ui_units_x, from_active_button);
636 if (!rna_popup_context_ok_or_report(C, reports)) {
641 C, title, icon,
static_cast<const wmEvent *
>(event->
data));
657static void rna_WindowManager_tag_script_reload()
663static PointerRNA rna_WindoManager_operator_properties_last(
const char *idname)
708 if (unicode !=
nullptr) {
716 if (unicode !=
nullptr) {
718 if (
len == -1 || unicode[
len] !=
'\0') {
745 e.utf8_buf[0] =
'\0';
746 if (unicode !=
nullptr) {
758# define WM_GEN_INVOKE_EVENT (1 << 0)
759# define WM_GEN_INVOKE_SIZE (1 << 1)
760# define WM_GEN_INVOKE_RETURN (1 << 2)
767 parm =
RNA_def_pointer(func,
"operator",
"Operator",
"",
"Operator to call");
776 RNA_def_int(func,
"width", 300, 0, INT_MAX,
"",
"Width of the popup", 0, INT_MAX);
792 parm =
RNA_def_int(func,
"x", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
794 parm =
RNA_def_int(func,
"y", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
812 func,
"Restore the previous cursor after calling ``cursor_modal_set``");
815 func =
RNA_def_function(srna,
"event_simulate",
"rna_Window_event_add_simulate");
824 RNA_def_int(func,
"x", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
825 RNA_def_int(func,
"y", 0, INT_MIN, INT_MAX,
"",
"", INT_MIN, INT_MAX);
831 parm =
RNA_def_pointer(func,
"event",
"Event",
"Item",
"Added key map item");
841 {0,
nullptr, 0,
nullptr,
nullptr},
852 "Opens a file selector with an operator. "
853 "The string properties 'filepath', 'filename', 'directory' and a 'files' "
854 "collection are assigned when present in the operator.");
857 func =
RNA_def_function(srna,
"modal_handler_add",
"rna_event_modal_handler_add");
860 "Add a modal handler to the window manager, for the given modal operator "
861 "(called by invoke() with self, just before returning {'RUNNING_MODAL'})");
863 parm =
RNA_def_pointer(func,
"operator",
"Operator",
"",
"Operator to call");
867 RNA_def_boolean(func,
"handle",
true,
"",
"Whether adding the handler was successful"));
871 func,
"Add a timer to the given window, to generate periodic 'TIMER' events");
876 RNA_def_pointer(func,
"window",
"Window",
"",
"Window to attach the timer to, or None");
880 func =
RNA_def_function(srna,
"event_timer_remove",
"rna_event_timer_remove");
884 func =
RNA_def_function(srna,
"gizmo_group_type_ensure",
"rna_gizmo_group_type_ensure");
886 func,
"Activate an existing widget group (when the persistent option isn't set)");
888 parm =
RNA_def_string(func,
"identifier",
nullptr, 0,
"",
"Gizmo group type name");
892 srna,
"gizmo_group_type_unlink_delayed",
"rna_gizmo_group_type_unlink_delayed");
894 "Unlink a widget group (when the persistent option is set)");
896 parm =
RNA_def_string(func,
"identifier",
nullptr, 0,
"",
"Gizmo group type name");
914 parm,
"value",
"Any value between min and max as set in progress_begin()");
920 func =
RNA_def_function(srna,
"invoke_props_popup",
"rna_Operator_props_popup");
923 "Operator popup invoke "
924 "(show operator properties and execute it automatically on changes)");
928 func =
RNA_def_function(srna,
"invoke_props_dialog",
"rna_Operator_props_dialog_popup");
931 "Operator dialog (non-autoexec popup) invoke "
932 "(show operator properties and only execute it on click on OK button)");
941 "Optional text to show instead to the default \"OK\" confirmation button text");
946 func =
RNA_def_function(srna,
"invoke_search_popup",
"rna_Operator_enum_search_invoke");
949 "Operator search popup invoke which "
950 "searches values of the operator's :class:`bpy.types.Operator.bl_property` "
951 "(which must be an EnumProperty), executing it on confirmation");
957 "Operator popup invoke "
958 "(only shows operator's properties, without executing it)");
964 "Operator confirmation popup "
965 "(only to let user confirm the execution, no operator properties shown)");
978 "Optional text to show instead to the default \"OK\" confirmation button text");
988 func =
RNA_def_function(srna,
"popmenu_begin__internal",
"rna_PopMenuBegin");
1006 func =
RNA_def_function(srna,
"popover_begin__internal",
"rna_PopoverBegin");
1014 func,
"from_active_button",
false,
"Use Button",
"Use the active button for positioning");
1021 RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Active key map");
1024 func =
RNA_def_function(srna,
"piemenu_begin__internal",
"rna_PieMenuBegin");
1045 srna,
"operator_properties_last",
"rna_WindoManager_operator_properties_last");
1054 RNA_def_function(srna,
"print_undo_steps",
"rna_WindowManager_print_undo_steps");
1057 func =
RNA_def_function(srna,
"tag_script_reload",
"rna_WindowManager_tag_script_reload");
1059 func,
"Tag for refreshing the interface after scripts have been reloaded");
1066 "Is Interface Locked",
1067 "If true, the interface is currently locked by a running job and data shouldn't be modified "
1068 "from application timers. Otherwise, the running job might conflict with the handler "
1069 "causing unexpected results or even crashes.");
1082 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
1117 func,
"Check the operator settings, return True to signal a change to redraw");
1170 parm =
RNA_def_string(func,
"result",
nullptr, 4096,
"result",
"");
1176 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1189 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
1223 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Active key map");
1226 func =
RNA_def_function(srna,
"restore_to_default",
"rna_keymap_restore_to_default");
1229 func =
RNA_def_function(srna,
"restore_item_to_default",
"rna_keymap_restore_item_to_default");
1243 parm =
RNA_def_boolean(func,
"result",
false,
"Comparison result",
"");
1260 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1273 RNA_def_boolean(func,
"repeat",
false,
"Repeat",
"When set, accept key-repeat events");
1278 "Force item to be added at start (not end) of key map so that "
1279 "it doesn't get blocked by an existing key map item");
1280 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Added key map item");
1285 parm =
RNA_def_string(func,
"propvalue",
nullptr, 0,
"Property Value",
"");
1298 RNA_def_boolean(func,
"repeat",
false,
"Repeat",
"When set, accept key-repeat events");
1299 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Added key map item");
1302 func =
RNA_def_function(srna,
"new_from_item",
"rna_KeyMap_item_new_from_item");
1304 parm =
RNA_def_pointer(func,
"item",
"KeyMapItem",
"Item",
"Item to use as a reference");
1307 parm =
RNA_def_pointer(func,
"result",
"KeyMapItem",
"Item",
"Added key map item");
1325 func =
RNA_def_function(srna,
"find_from_operator",
"rna_KeyMap_item_find_from_operator");
1327 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1329 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1338 func =
RNA_def_function(srna,
"match_event",
"rna_KeyMap_item_match_event");
1356 "Ensure the keymap exists. This will return the one with the given name/space type/region "
1357 "type, or create a new one if it does not exist yet.");
1364 RNA_def_boolean(func,
"modal",
false,
"Modal",
"Keymap for modal operators");
1365 RNA_def_boolean(func,
"tool",
false,
"Tool",
"Keymap for active tools");
1366 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Added key map");
1371 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Removed key map");
1384 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Corresponding key map");
1388 parm =
RNA_def_string(func,
"name",
nullptr, 0,
"Operator Name",
"");
1390 parm =
RNA_def_pointer(func,
"keymap",
"KeyMap",
"Key Map",
"Corresponding key map");
1403 func,
"keyconfig",
"KeyConfig",
"Key Configuration",
"Added key configuration");
1409 func,
"keyconfig",
"KeyConfig",
"Key Configuration",
"Removed key configuration");
1417 srna,
"find_item_from_operator",
"rna_KeyConfig_find_item_from_operator");
1419 parm =
RNA_def_string(func,
"idname",
nullptr, 0,
"Operator Identifier",
"");
1423 parm =
RNA_def_pointer(func,
"properties",
"OperatorProperties",
"",
"");
1440 "Operator properties are kept to allow the operators to be registered again in the future");
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_undosys_print(UndoStack *ustack)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
int BLI_str_utf8_size_or_error(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define RNA_POINTER_INVALIDATE(ptr)
constexpr PointerRNA PointerRNA_NULL
void UI_popover_end(bContext *C, uiPopover *pup, wmKeyMap *keymap)
uiPopover * UI_popover_begin(bContext *C, int ui_menu_width, bool from_active_button) ATTR_NONNULL(1)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
uiPieMenu * UI_pie_menu_begin(bContext *C, const char *title, int icon, const wmEvent *event) ATTR_NONNULL()
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
void UI_pie_menu_end(bContext *C, uiPieMenu *pie)
#define UI_MAX_SHORTCUT_STR
@ WM_GIZMOGROUPTYPE_PERSISTENT
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
const char * RNA_translate_ui_text(const char *text, const char *text_ctxt, StructRNA *type, PropertyRNA *prop, int translate)
bool RNA_enum_value_from_id(const EnumPropertyItem *item, const char *identifier, int *r_value)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
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_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void api_ui_item_common_translation(FunctionRNA *func)
const EnumPropertyItem rna_enum_region_type_items[]
const EnumPropertyItem rna_enum_space_type_items[]
const EnumPropertyItem rna_enum_operator_context_items[]
const EnumPropertyItem rna_enum_icon_items[]
const EnumPropertyItem rna_enum_event_direction_items[]
const EnumPropertyItem rna_enum_event_value_items[]
const EnumPropertyItem rna_enum_event_type_mask_items[]
const EnumPropertyItem rna_enum_event_type_items[]
const EnumPropertyItem rna_enum_wm_report_items[]
const EnumPropertyItem rna_enum_operator_return_items[]
void RNA_api_keymapitem(StructRNA *srna)
#define WM_GEN_INVOKE_EVENT
void RNA_api_window(StructRNA *srna)
void RNA_api_wm(StructRNA *srna)
#define WM_GEN_INVOKE_SIZE
void RNA_api_keyconfigs(StructRNA *srna)
const EnumPropertyItem rna_operator_popup_icon_items[]
void RNA_api_macro(StructRNA *srna)
void RNA_api_keymap(StructRNA *srna)
void RNA_api_keymapitems(StructRNA *srna)
#define WM_GEN_INVOKE_RETURN
void RNA_api_keyconfig(StructRNA *)
void RNA_api_keymaps(StructRNA *srna)
const EnumPropertyItem rna_enum_window_cursor_items[]
static void rna_generic_op_invoke(FunctionRNA *func, int flag)
void RNA_api_operator(StructRNA *srna)
eWM_GizmoFlagGroupTypeFlag flag
struct ReportList * reports
struct UndoStack * undo_stack
struct wmWindow * winactive
struct wmKeyConfig * addonconf
struct wmEvent * eventstate
void WM_cursor_modal_restore(wmWindow *win)
void WM_cursor_time(wmWindow *win, int nr)
wmEvent * WM_event_add_simulate(wmWindow *win, const wmEvent *event_to_add)
void WM_main_add_notifier(uint type, void *reference)
void WM_event_tablet_data_default_set(wmTabletData *tablet_data)
wmEventHandler_Op * WM_event_add_modal_handler_ex(wmWindow *win, ScrArea *area, ARegion *region, wmOperator *op)
bool WM_operator_is_repeat(const bContext *C, const wmOperator *op)
wmKeyMapItem * WM_event_match_keymap_item(bContext *C, wmKeyMap *keymap, const wmEvent *event)
#define ISMOUSE_BUTTON(event_type)
#define ISMOUSE_MOTION(event_type)
#define ISKEYBOARD(event_type)
#define EVT_TYPE_MASK_ALL
bool WM_gizmo_group_type_ensure_ptr(wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_unlink_delayed_ptr(wmGizmoGroupType *gzgt)
wmGizmoGroupType * WM_gizmogrouptype_find(const char *idname, bool quiet)
void WM_script_tag_reload()
void WM_keyconfig_clear(wmKeyConfig *keyconf)
void WM_keymap_item_restore_to_default(wmWindowManager *wm, wmKeyMap *keymap, wmKeyMapItem *kmi)
wmKeyMapItem * WM_key_event_operator(const bContext *C, const char *opname, wmOperatorCallContext opcontext, IDProperty *properties, const short include_mask, const short exclude_mask, wmKeyMap **r_keymap)
void WM_keymap_restore_to_default(wmKeyMap *keymap, wmWindowManager *wm)
wmKeyMapItem * WM_keymap_add_item_copy(wmKeyMap *keymap, wmKeyMapItem *kmi_src)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
wmKeyMapItem * WM_key_event_operator_from_keymap(wmKeyMap *keymap, const char *opname, IDProperty *properties, const short include_mask, const short exclude_mask)
wmKeyMapItem * WM_modalkeymap_add_item(wmKeyMap *km, const KeyMapItem_Params *params, int value)
void WM_keyconfig_update_ex(wmWindowManager *wm, bool keep_properties)
wmKeyConfig * WM_keyconfig_ensure(wmWindowManager *wm, const char *idname, bool user_defined)
wmKeyMap * WM_keymap_active(const wmWindowManager *wm, wmKeyMap *keymap)
wmKeyMapItem * WM_keymap_add_item(wmKeyMap *keymap, const char *idname, const KeyMapItem_Params *params)
std::optional< std::string > WM_keymap_item_to_string(const wmKeyMapItem *kmi, const bool compact)
void WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
wmKeyMap * WM_keymap_list_find(ListBase *lb, const char *idname, int spaceid, int regionid)
wmKeyMapItem * WM_modalkeymap_add_item_str(wmKeyMap *km, const KeyMapItem_Params *params, const char *value)
void WM_keyconfig_remove(wmWindowManager *wm, wmKeyConfig *keyconf)
void WM_keymap_remove_item(wmKeyMap *keymap, wmKeyMapItem *kmi)
bool WM_keymap_item_compare(const wmKeyMapItem *k1, const wmKeyMapItem *k2)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
int WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
void WM_operator_last_properties_ensure(wmOperatorType *ot, PointerRNA *ptr)
size_t WM_operator_bl_idname(char *dst, const char *src)
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)
int WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
int WM_operator_props_popup(bContext *C, wmOperator *op, const wmEvent *)
void WM_event_timer_remove(wmWindowManager *wm, wmWindow *, wmTimer *timer)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const int event_type, const double time_step)