Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/interface/interface_intern.h
| Show First 20 Lines • Show All 614 Lines • ▼ Show 20 Lines | extern void ui_block_to_region_rctf(const struct ARegion *region, | ||||
| uiBlock *block, | uiBlock *block, | ||||
| rctf *rct_dst, | rctf *rct_dst, | ||||
| const rctf *rct_src); | const rctf *rct_src); | ||||
| extern void ui_block_to_window_rctf(const struct ARegion *region, | extern void ui_block_to_window_rctf(const struct ARegion *region, | ||||
| uiBlock *block, | uiBlock *block, | ||||
| rctf *rct_dst, | rctf *rct_dst, | ||||
| const rctf *rct_src); | const rctf *rct_src); | ||||
| extern float ui_block_to_window_scale(const struct ARegion *region, uiBlock *block); | extern float ui_block_to_window_scale(const struct ARegion *region, uiBlock *block); | ||||
| /** | |||||
| * For mouse cursor. | |||||
| */ | |||||
| extern void ui_window_to_block_fl(const struct ARegion *region, | extern void ui_window_to_block_fl(const struct ARegion *region, | ||||
| uiBlock *block, | uiBlock *block, | ||||
| float *x, | float *x, | ||||
| float *y); | float *y); | ||||
| extern void ui_window_to_block(const struct ARegion *region, uiBlock *block, int *x, int *y); | extern void ui_window_to_block(const struct ARegion *region, uiBlock *block, int *x, int *y); | ||||
| extern void ui_window_to_block_rctf(const struct ARegion *region, | extern void ui_window_to_block_rctf(const struct ARegion *region, | ||||
| uiBlock *block, | uiBlock *block, | ||||
| rctf *rct_dst, | rctf *rct_dst, | ||||
| const rctf *rct_src); | const rctf *rct_src); | ||||
| extern void ui_window_to_region(const struct ARegion *region, int *x, int *y); | extern void ui_window_to_region(const struct ARegion *region, int *x, int *y); | ||||
| extern void ui_window_to_region_rcti(const struct ARegion *region, | extern void ui_window_to_region_rcti(const struct ARegion *region, | ||||
| rcti *rect_dst, | rcti *rect_dst, | ||||
| const rcti *rct_src); | const rcti *rct_src); | ||||
| extern void ui_window_to_region_rctf(const struct ARegion *region, | extern void ui_window_to_region_rctf(const struct ARegion *region, | ||||
| rctf *rect_dst, | rctf *rect_dst, | ||||
| const rctf *rct_src); | const rctf *rct_src); | ||||
| extern void ui_region_to_window(const struct ARegion *region, int *x, int *y); | extern void ui_region_to_window(const struct ARegion *region, int *x, int *y); | ||||
| /** | |||||
| * Popups will add a margin to #ARegion.winrct for shadow, | |||||
| * for interactivity (point-inside tests for eg), we want the winrct without the margin added. | |||||
| */ | |||||
| extern void ui_region_winrct_get_no_margin(const struct ARegion *region, struct rcti *r_rect); | extern void ui_region_winrct_get_no_margin(const struct ARegion *region, struct rcti *r_rect); | ||||
| /** | |||||
| * Reallocate the button (new address is returned) for a new button type. | |||||
| * This should generally be avoided and instead the correct type be created right away. | |||||
| * | |||||
| * \note Only the #uiBut data can be kept. If the old button used a derived type (e.g. #uiButTab), | |||||
| * the data that is not inside #uiBut will be lost. | |||||
| */ | |||||
| uiBut *ui_but_change_type(uiBut *but, eButType new_type); | uiBut *ui_but_change_type(uiBut *but, eButType new_type); | ||||
| extern double ui_but_value_get(uiBut *but); | extern double ui_but_value_get(uiBut *but); | ||||
| extern void ui_but_value_set(uiBut *but, double value); | extern void ui_but_value_set(uiBut *but, double value); | ||||
| /** | |||||
| * For picker, while editing HSV. | |||||
| */ | |||||
| extern void ui_but_hsv_set(uiBut *but); | extern void ui_but_hsv_set(uiBut *but); | ||||
| /** | |||||
| * For buttons pointing to color for example. | |||||
| */ | |||||
| extern void ui_but_v3_get(uiBut *but, float vec[3]); | extern void ui_but_v3_get(uiBut *but, float vec[3]); | ||||
| /** | |||||
| * For buttons pointing to color for example. | |||||
| */ | |||||
| extern void ui_but_v3_set(uiBut *but, const float vec[3]); | extern void ui_but_v3_set(uiBut *but, const float vec[3]); | ||||
| extern void ui_hsvcircle_vals_from_pos( | extern void ui_hsvcircle_vals_from_pos( | ||||
| const rcti *rect, const float mx, const float my, float *r_val_rad, float *r_val_dist); | const rcti *rect, const float mx, const float my, float *r_val_rad, float *r_val_dist); | ||||
| /** | |||||
| * Cursor in HSV circle, in float units -1 to 1, to map on radius. | |||||
| */ | |||||
| extern void ui_hsvcircle_pos_from_vals( | extern void ui_hsvcircle_pos_from_vals( | ||||
| const ColorPicker *cpicker, const rcti *rect, const float *hsv, float *xpos, float *ypos); | const ColorPicker *cpicker, const rcti *rect, const float *hsv, float *xpos, float *ypos); | ||||
| extern void ui_hsvcube_pos_from_vals( | extern void ui_hsvcube_pos_from_vals( | ||||
| const struct uiButHSVCube *hsv_but, const rcti *rect, const float *hsv, float *xp, float *yp); | const struct uiButHSVCube *hsv_but, const rcti *rect, const float *hsv, float *xp, float *yp); | ||||
| /** | |||||
| * \param float_precision: For number buttons the precision | |||||
| * to use or -1 to fallback to the button default. | |||||
| * \param use_exp_float: Use exponent representation of floats | |||||
| * when out of reasonable range (outside of 1e3/1e-3). | |||||
| */ | |||||
| extern void ui_but_string_get_ex(uiBut *but, | extern void ui_but_string_get_ex(uiBut *but, | ||||
| char *str, | char *str, | ||||
| const size_t maxlen, | const size_t maxlen, | ||||
| const int float_precision, | const int float_precision, | ||||
| const bool use_exp_float, | const bool use_exp_float, | ||||
| bool *r_use_exp_float) ATTR_NONNULL(1, 2); | bool *r_use_exp_float) ATTR_NONNULL(1, 2); | ||||
| extern void ui_but_string_get(uiBut *but, char *str, const size_t maxlen) ATTR_NONNULL(); | extern void ui_but_string_get(uiBut *but, char *str, const size_t maxlen) ATTR_NONNULL(); | ||||
| /** | |||||
| * A version of #ui_but_string_get_ex for dynamic buffer sizes | |||||
| * (where #ui_but_string_get_max_length returns 0). | |||||
| * | |||||
| * \param r_str_size: size of the returned string (including terminator). | |||||
| */ | |||||
| extern char *ui_but_string_get_dynamic(uiBut *but, int *r_str_size); | extern char *ui_but_string_get_dynamic(uiBut *but, int *r_str_size); | ||||
| /** | |||||
| * \param str: will be overwritten. | |||||
| */ | |||||
| extern void ui_but_convert_to_unit_alt_name(uiBut *but, char *str, size_t maxlen) ATTR_NONNULL(); | extern void ui_but_convert_to_unit_alt_name(uiBut *but, char *str, size_t maxlen) ATTR_NONNULL(); | ||||
| extern bool ui_but_string_set(struct bContext *C, uiBut *but, const char *str) ATTR_NONNULL(); | extern bool ui_but_string_set(struct bContext *C, uiBut *but, const char *str) ATTR_NONNULL(); | ||||
| extern bool ui_but_string_eval_number(struct bContext *C, | extern bool ui_but_string_eval_number(struct bContext *C, | ||||
| const uiBut *but, | const uiBut *but, | ||||
| const char *str, | const char *str, | ||||
| double *value) ATTR_NONNULL(); | double *value) ATTR_NONNULL(); | ||||
| extern int ui_but_string_get_max_length(uiBut *but); | extern int ui_but_string_get_max_length(uiBut *but); | ||||
| /* Clear & exit the active button's string. */ | /** | ||||
| * Clear & exit the active button's string.. | |||||
| */ | |||||
| extern void ui_but_active_string_clear_and_exit(struct bContext *C, uiBut *but) ATTR_NONNULL(); | extern void ui_but_active_string_clear_and_exit(struct bContext *C, uiBut *but) ATTR_NONNULL(); | ||||
| /** | |||||
| * Use handling code to set a string for the button. Handles the case where the string is set for a | |||||
| * search button while the search menu is open, so the results are updated accordingly. | |||||
| * This is basically the same as pasting the string into the button. | |||||
| */ | |||||
| extern void ui_but_set_string_interactive(struct bContext *C, uiBut *but, const char *value); | extern void ui_but_set_string_interactive(struct bContext *C, uiBut *but, const char *value); | ||||
| extern uiBut *ui_but_drag_multi_edit_get(uiBut *but); | extern uiBut *ui_but_drag_multi_edit_get(uiBut *but); | ||||
| void ui_def_but_icon(uiBut *but, const int icon, const int flag); | void ui_def_but_icon(uiBut *but, const int icon, const int flag); | ||||
| /** | |||||
| * Avoid using this where possible since it's better not to ask for an icon in the first place. | |||||
| */ | |||||
| void ui_def_but_icon_clear(uiBut *but); | void ui_def_but_icon_clear(uiBut *but); | ||||
| void ui_but_extra_operator_icons_free(uiBut *but); | void ui_but_extra_operator_icons_free(uiBut *but); | ||||
| extern void ui_but_rna_menu_convert_to_panel_type(struct uiBut *but, const char *panel_type); | extern void ui_but_rna_menu_convert_to_panel_type(struct uiBut *but, const char *panel_type); | ||||
| extern void ui_but_rna_menu_convert_to_menu_type(struct uiBut *but, const char *menu_type); | extern void ui_but_rna_menu_convert_to_menu_type(struct uiBut *but, const char *menu_type); | ||||
| extern bool ui_but_menu_draw_as_popover(const uiBut *but); | extern bool ui_but_menu_draw_as_popover(const uiBut *but); | ||||
| void ui_but_range_set_hard(uiBut *but); | void ui_but_range_set_hard(uiBut *but); | ||||
| void ui_but_range_set_soft(uiBut *but); | void ui_but_range_set_soft(uiBut *but); | ||||
| bool ui_but_context_poll_operator(struct bContext *C, struct wmOperatorType *ot, const uiBut *but); | bool ui_but_context_poll_operator(struct bContext *C, struct wmOperatorType *ot, const uiBut *but); | ||||
| /** | |||||
| * Check if the operator \a ot poll is successful with the context given by \a but (optionally). | |||||
| * \param but: The button that might store context. Can be NULL for convenience (e.g. if there is | |||||
| * no button to take context from, but we still want to poll the operator). | |||||
| */ | |||||
| bool ui_but_context_poll_operator_ex(struct bContext *C, | bool ui_but_context_poll_operator_ex(struct bContext *C, | ||||
| const uiBut *but, | const uiBut *but, | ||||
| const struct wmOperatorCallParams *optype_params); | const struct wmOperatorCallParams *optype_params); | ||||
| extern void ui_but_update(uiBut *but); | extern void ui_but_update(uiBut *but); | ||||
| extern void ui_but_update_edited(uiBut *but); | extern void ui_but_update_edited(uiBut *but); | ||||
| extern PropertyScaleType ui_but_scale_type(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern PropertyScaleType ui_but_scale_type(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| extern bool ui_but_is_float(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_is_float(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| extern bool ui_but_is_bool(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_is_bool(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| extern bool ui_but_is_unit(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_is_unit(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| /** | |||||
| * Check if this button is similar enough to be grouped with another. | |||||
| */ | |||||
| extern bool ui_but_is_compatible(const uiBut *but_a, const uiBut *but_b) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_is_compatible(const uiBut *but_a, const uiBut *but_b) ATTR_WARN_UNUSED_RESULT; | ||||
| extern bool ui_but_is_rna_valid(uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_is_rna_valid(uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| /** | |||||
| * Checks if the button supports cycling next/previous menu items (ctrl+mouse-wheel). | |||||
| */ | |||||
| extern bool ui_but_supports_cycling(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern bool ui_but_supports_cycling(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| /** | |||||
| * Check if the button is pushed, this is only meaningful for some button types. | |||||
| * | |||||
| * \return (0 == UNSELECT), (1 == SELECT), (-1 == DO-NOTHING) | |||||
| */ | |||||
| extern int ui_but_is_pushed_ex(uiBut *but, double *value) ATTR_WARN_UNUSED_RESULT; | extern int ui_but_is_pushed_ex(uiBut *but, double *value) ATTR_WARN_UNUSED_RESULT; | ||||
| extern int ui_but_is_pushed(uiBut *but) ATTR_WARN_UNUSED_RESULT; | extern int ui_but_is_pushed(uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| void ui_but_override_flag(struct Main *bmain, uiBut *but); | void ui_but_override_flag(struct Main *bmain, uiBut *but); | ||||
| extern void ui_block_bounds_calc(uiBlock *block); | extern void ui_block_bounds_calc(uiBlock *block); | ||||
| extern struct ColorManagedDisplay *ui_block_cm_display_get(uiBlock *block); | extern struct ColorManagedDisplay *ui_block_cm_display_get(uiBlock *block); | ||||
| ▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | struct uiPopupBlockHandle { | ||||
| int grab_xy_prev[2]; | int grab_xy_prev[2]; | ||||
| /* #endif */ | /* #endif */ | ||||
| }; | }; | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /* interface_region_*.c */ | /* interface_region_*.c */ | ||||
| /* interface_region_tooltip.c */ | /* interface_region_tooltip.c */ | ||||
| /* exposed as public API in UI_interface.h */ | /* exposed as public API in UI_interface.h */ | ||||
| /* interface_region_color_picker.c */ | /* interface_region_color_picker.c */ | ||||
| void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3]); | void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3]); | ||||
| void ui_color_picker_rgb_to_hsv(const float rgb[3], float r_cp[3]); | void ui_color_picker_rgb_to_hsv(const float rgb[3], float r_cp[3]); | ||||
| void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3]); | void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3]); | ||||
| /** | |||||
| * Returns true if the button is for a color with gamma baked in, | |||||
| * or if it's a color picker for such a button. | |||||
| */ | |||||
| bool ui_but_is_color_gamma(uiBut *but); | bool ui_but_is_color_gamma(uiBut *but); | ||||
| void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3]); | void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3]); | ||||
| void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3]); | void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3]); | ||||
| uiBlock *ui_block_func_COLOR(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but); | uiBlock *ui_block_func_COLOR(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but); | ||||
| ColorPicker *ui_block_colorpicker_create(struct uiBlock *block); | ColorPicker *ui_block_colorpicker_create(struct uiBlock *block); | ||||
| /* interface_region_search.c */ | /* interface_region_search.c */ | ||||
| /* Search-box for string button. */ | |||||
| /** | |||||
| * Search-box for string button. | |||||
| */ | |||||
| struct ARegion *ui_searchbox_create_generic(struct bContext *C, | struct ARegion *ui_searchbox_create_generic(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiButSearch *search_but); | uiButSearch *search_but); | ||||
| struct ARegion *ui_searchbox_create_operator(struct bContext *C, | struct ARegion *ui_searchbox_create_operator(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiButSearch *search_but); | uiButSearch *search_but); | ||||
| struct ARegion *ui_searchbox_create_menu(struct bContext *C, | struct ARegion *ui_searchbox_create_menu(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiButSearch *search_but); | uiButSearch *search_but); | ||||
| /** | |||||
| * x and y in screen-coords. | |||||
| */ | |||||
| bool ui_searchbox_inside(struct ARegion *region, const int xy[2]) ATTR_NONNULL(1, 2); | bool ui_searchbox_inside(struct ARegion *region, const int xy[2]) ATTR_NONNULL(1, 2); | ||||
| int ui_searchbox_find_index(struct ARegion *region, const char *name); | int ui_searchbox_find_index(struct ARegion *region, const char *name); | ||||
| /** | |||||
| * Region is the search box itself. | |||||
| */ | |||||
| void ui_searchbox_update(struct bContext *C, struct ARegion *region, uiBut *but, const bool reset); | void ui_searchbox_update(struct bContext *C, struct ARegion *region, uiBut *but, const bool reset); | ||||
| int ui_searchbox_autocomplete(struct bContext *C, struct ARegion *region, uiBut *but, char *str); | int ui_searchbox_autocomplete(struct bContext *C, struct ARegion *region, uiBut *but, char *str); | ||||
| bool ui_searchbox_event(struct bContext *C, | bool ui_searchbox_event(struct bContext *C, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| const struct wmEvent *event); | const struct wmEvent *event); | ||||
| /** | |||||
| * String validated to be of correct length (but->hardmax). | |||||
| */ | |||||
| bool ui_searchbox_apply(uiBut *but, struct ARegion *region); | bool ui_searchbox_apply(uiBut *but, struct ARegion *region); | ||||
| void ui_searchbox_free(struct bContext *C, struct ARegion *region); | void ui_searchbox_free(struct bContext *C, struct ARegion *region); | ||||
| /** | |||||
| * XXX weak: search_func adds all partial matches. | |||||
| */ | |||||
| void ui_but_search_refresh(uiButSearch *but); | void ui_but_search_refresh(uiButSearch *but); | ||||
| /* interface_region_menu_popup.c */ | /* interface_region_menu_popup.c */ | ||||
| int ui_but_menu_step(uiBut *but, int direction); | int ui_but_menu_step(uiBut *but, int direction); | ||||
| bool ui_but_menu_step_poll(const uiBut *but); | bool ui_but_menu_step_poll(const uiBut *but); | ||||
| uiBut *ui_popup_menu_memory_get(struct uiBlock *block); | uiBut *ui_popup_menu_memory_get(struct uiBlock *block); | ||||
| void ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but); | void ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but); | ||||
| /** | |||||
| * Called for creating new popups and refreshing existing ones. | |||||
| */ | |||||
| uiBlock *ui_popup_block_refresh(struct bContext *C, | uiBlock *ui_popup_block_refresh(struct bContext *C, | ||||
| uiPopupBlockHandle *handle, | uiPopupBlockHandle *handle, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiBut *but); | uiBut *but); | ||||
| uiPopupBlockHandle *ui_popup_block_create(struct bContext *C, | uiPopupBlockHandle *ui_popup_block_create(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiBut *but, | uiBut *but, | ||||
| uiBlockCreateFunc create_func, | uiBlockCreateFunc create_func, | ||||
| uiBlockHandleCreateFunc handle_create_func, | uiBlockHandleCreateFunc handle_create_func, | ||||
| void *arg, | void *arg, | ||||
| uiFreeArgFunc arg_free); | uiFreeArgFunc arg_free); | ||||
| uiPopupBlockHandle *ui_popup_menu_create(struct bContext *C, | uiPopupBlockHandle *ui_popup_menu_create(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiBut *but, | uiBut *but, | ||||
| uiMenuCreateFunc menu_func, | uiMenuCreateFunc menu_func, | ||||
| void *arg); | void *arg); | ||||
| /* interface_region_popover.c */ | /* interface_region_popover.c */ | ||||
| uiPopupBlockHandle *ui_popover_panel_create(struct bContext *C, | uiPopupBlockHandle *ui_popover_panel_create(struct bContext *C, | ||||
| struct ARegion *butregion, | struct ARegion *butregion, | ||||
| uiBut *but, | uiBut *but, | ||||
| uiMenuCreateFunc menu_func, | uiMenuCreateFunc menu_func, | ||||
| void *arg); | void *arg); | ||||
| /* interface_region_menu_pie.c */ | /* interface_region_menu_pie.c */ | ||||
| /** | |||||
| * Set up data for defining a new pie menu level and add button that invokes it. | |||||
| */ | |||||
| void ui_pie_menu_level_create(uiBlock *block, | void ui_pie_menu_level_create(uiBlock *block, | ||||
| struct wmOperatorType *ot, | struct wmOperatorType *ot, | ||||
| const char *propname, | const char *propname, | ||||
| struct IDProperty *properties, | struct IDProperty *properties, | ||||
| const EnumPropertyItem *items, | const EnumPropertyItem *items, | ||||
| int totitem, | int totitem, | ||||
| wmOperatorCallContext context, | wmOperatorCallContext context, | ||||
| int flag); | int flag); | ||||
| /* interface_region_popup.c */ | /* interface_region_popup.c */ | ||||
| /** | |||||
| * Translate any popup regions (so we can drag them). | |||||
| */ | |||||
| void ui_popup_translate(struct ARegion *region, const int mdiff[2]); | void ui_popup_translate(struct ARegion *region, const int mdiff[2]); | ||||
| void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle); | void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle); | ||||
| void ui_popup_block_scrolltest(struct uiBlock *block); | void ui_popup_block_scrolltest(struct uiBlock *block); | ||||
| /* end interface_region_*.c */ | /* end interface_region_*.c */ | ||||
| /* interface_panel.c */ | /* interface_panel.c */ | ||||
| /** | |||||
| * Handle region panel events like opening and closing panels, changing categories, etc. | |||||
| * | |||||
| * \note Could become a modal key-map. | |||||
| */ | |||||
| extern int ui_handler_panel_region(struct bContext *C, | extern int ui_handler_panel_region(struct bContext *C, | ||||
| const struct wmEvent *event, | const struct wmEvent *event, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| const uiBut *active_but); | const uiBut *active_but); | ||||
| /** | |||||
| * Draw a panel integrated in buttons-window, tool/property lists etc. | |||||
| */ | |||||
| extern void ui_draw_aligned_panel(const struct uiStyle *style, | extern void ui_draw_aligned_panel(const struct uiStyle *style, | ||||
| const uiBlock *block, | const uiBlock *block, | ||||
| const rcti *rect, | const rcti *rect, | ||||
| const bool show_pin, | const bool show_pin, | ||||
| const bool show_background, | const bool show_background, | ||||
| const bool region_search_filter_active); | const bool region_search_filter_active); | ||||
| void ui_panel_tag_search_filter_match(struct Panel *panel); | void ui_panel_tag_search_filter_match(struct Panel *panel); | ||||
| /* interface_draw.c */ | /* interface_draw.c */ | ||||
| extern void ui_draw_dropshadow( | extern void ui_draw_dropshadow( | ||||
| const rctf *rct, float radius, float aspect, float alpha, int select); | const rctf *rct, float radius, float aspect, float alpha, int select); | ||||
| /** | |||||
| * Draws in resolution of 48x4 colors. | |||||
| */ | |||||
| void ui_draw_gradient(const rcti *rect, | void ui_draw_gradient(const rcti *rect, | ||||
| const float hsv[3], | const float hsv[3], | ||||
| const eButGradientType type, | const eButGradientType type, | ||||
| const float alpha); | const float alpha); | ||||
| /* based on UI_draw_roundbox_gl_mode, | |||||
| * check on making a version which allows us to skip some sides */ | |||||
| void ui_draw_but_TAB_outline(const rcti *rect, | void ui_draw_but_TAB_outline(const rcti *rect, | ||||
| float rad, | float rad, | ||||
| uchar highlight[3], | uchar highlight[3], | ||||
| uchar highlight_fade[3]); | uchar highlight_fade[3]); | ||||
| void ui_draw_but_HISTOGRAM(struct ARegion *region, | void ui_draw_but_HISTOGRAM(struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect); | const rcti *rect); | ||||
| Show All 9 Lines | |||||
| void ui_draw_but_UNITVEC(uiBut *but, | void ui_draw_but_UNITVEC(uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect, | const rcti *rect, | ||||
| const float radius); | const float radius); | ||||
| void ui_draw_but_CURVE(struct ARegion *region, | void ui_draw_but_CURVE(struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect); | const rcti *rect); | ||||
| /** | |||||
| * Draws the curve profile widget. Somewhat similar to ui_draw_but_CURVE. | |||||
| */ | |||||
| void ui_draw_but_CURVEPROFILE(struct ARegion *region, | void ui_draw_but_CURVEPROFILE(struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect); | const rcti *rect); | ||||
| void ui_draw_but_IMAGE(struct ARegion *region, | void ui_draw_but_IMAGE(struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect); | const rcti *rect); | ||||
| void ui_draw_but_TRACKPREVIEW(struct ARegion *region, | void ui_draw_but_TRACKPREVIEW(struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| const struct uiWidgetColors *wcol, | const struct uiWidgetColors *wcol, | ||||
| const rcti *rect); | const rcti *rect); | ||||
| /* interface_undo.c */ | /* interface_undo.c */ | ||||
| /** | |||||
| * Start the undo stack. | |||||
| * | |||||
| * \note The current state should be pushed immediately after calling this. | |||||
| */ | |||||
| struct uiUndoStack_Text *ui_textedit_undo_stack_create(void); | struct uiUndoStack_Text *ui_textedit_undo_stack_create(void); | ||||
| void ui_textedit_undo_stack_destroy(struct uiUndoStack_Text *undo_stack); | void ui_textedit_undo_stack_destroy(struct uiUndoStack_Text *undo_stack); | ||||
| /** | |||||
| * Push the information in the arguments to a new state in the undo stack. | |||||
| * | |||||
| * \note Currently the total length of the undo stack is not limited. | |||||
| */ | |||||
| void ui_textedit_undo_push(struct uiUndoStack_Text *undo_stack, | void ui_textedit_undo_push(struct uiUndoStack_Text *undo_stack, | ||||
| const char *text, | const char *text, | ||||
| int cursor_index); | int cursor_index); | ||||
| const char *ui_textedit_undo(struct uiUndoStack_Text *undo_stack, | const char *ui_textedit_undo(struct uiUndoStack_Text *undo_stack, | ||||
| int direction, | int direction, | ||||
| int *r_cursor_index); | int *r_cursor_index); | ||||
| /* interface_handlers.c */ | /* interface_handlers.c */ | ||||
| extern void ui_handle_afterfunc_add_operator(struct wmOperatorType *ot, | extern void ui_handle_afterfunc_add_operator(struct wmOperatorType *ot, | ||||
| wmOperatorCallContext opcontext); | wmOperatorCallContext opcontext); | ||||
| /** | |||||
| * Assumes event type is MOUSEPAN. | |||||
| */ | |||||
| extern void ui_pan_to_scroll(const struct wmEvent *event, int *type, int *val); | extern void ui_pan_to_scroll(const struct wmEvent *event, int *type, int *val); | ||||
| /** | |||||
| * Exported to interface.c: #UI_but_active_only() | |||||
| * \note The region is only for the button. | |||||
| * The context needs to be set by the caller. | |||||
| */ | |||||
| extern void ui_but_activate_event(struct bContext *C, struct ARegion *region, uiBut *but); | extern void ui_but_activate_event(struct bContext *C, struct ARegion *region, uiBut *but); | ||||
| /** | |||||
| * Simulate moving the mouse over a button (or navigating to it with arrow keys). | |||||
| * | |||||
| * exported so menus can start with a highlighted button, | |||||
| * even if the mouse isn't over it | |||||
| */ | |||||
| extern void ui_but_activate_over(struct bContext *C, struct ARegion *region, uiBut *but); | extern void ui_but_activate_over(struct bContext *C, struct ARegion *region, uiBut *but); | ||||
| extern void ui_but_execute_begin(struct bContext *C, | extern void ui_but_execute_begin(struct bContext *C, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| void **active_back); | void **active_back); | ||||
| extern void ui_but_execute_end(struct bContext *C, | extern void ui_but_execute_end(struct bContext *C, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| uiBut *but, | uiBut *but, | ||||
| void *active_back); | void *active_back); | ||||
| extern void ui_but_active_free(const struct bContext *C, uiBut *but); | extern void ui_but_active_free(const struct bContext *C, uiBut *but); | ||||
| /** | |||||
| * In some cases we may want to update the view (#View2D) in-between layout definition and drawing. | |||||
| * E.g. to make sure a button is visible while editing. | |||||
| */ | |||||
| extern void ui_but_update_view_for_active(const struct bContext *C, const uiBlock *block); | extern void ui_but_update_view_for_active(const struct bContext *C, const uiBlock *block); | ||||
| extern int ui_but_menu_direction(uiBut *but); | extern int ui_but_menu_direction(uiBut *but); | ||||
| extern void ui_but_text_password_hide(char password_str[128], uiBut *but, const bool restore); | extern void ui_but_text_password_hide(char password_str[128], uiBut *but, const bool restore); | ||||
| /** | |||||
| * Finds the pressed button in an aligned row (typically an expanded enum). | |||||
| * | |||||
| * \param direction: Use when there may be multiple buttons pressed. | |||||
| */ | |||||
| extern uiBut *ui_but_find_select_in_enum(uiBut *but, int direction); | extern uiBut *ui_but_find_select_in_enum(uiBut *but, int direction); | ||||
| bool ui_but_is_editing(const uiBut *but); | bool ui_but_is_editing(const uiBut *but); | ||||
| float ui_block_calc_pie_segment(struct uiBlock *block, const float event_xy[2]); | float ui_block_calc_pie_segment(struct uiBlock *block, const float event_xy[2]); | ||||
| /* XXX, this code will shorten any allocated string to 'UI_MAX_NAME_STR' | |||||
| * since this is really long its unlikely to be an issue, | |||||
| * but this could be supported */ | |||||
| void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_strip); | void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_strip); | ||||
| void ui_but_clipboard_free(void); | void ui_but_clipboard_free(void); | ||||
| bool ui_but_rna_equals(const uiBut *a, const uiBut *b); | bool ui_but_rna_equals(const uiBut *a, const uiBut *b); | ||||
| bool ui_but_rna_equals_ex(const uiBut *but, | bool ui_but_rna_equals_ex(const uiBut *but, | ||||
| const PointerRNA *ptr, | const PointerRNA *ptr, | ||||
| const PropertyRNA *prop, | const PropertyRNA *prop, | ||||
| int index); | int index); | ||||
| uiBut *ui_but_find_old(uiBlock *block_old, const uiBut *but_new); | uiBut *ui_but_find_old(uiBlock *block_old, const uiBut *but_new); | ||||
| ▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | void ui_draw_popover_back(struct ARegion *region, | ||||
| rcti *rect); | rcti *rect); | ||||
| void ui_draw_pie_center(uiBlock *block); | void ui_draw_pie_center(uiBlock *block); | ||||
| const struct uiWidgetColors *ui_tooltip_get_theme(void); | const struct uiWidgetColors *ui_tooltip_get_theme(void); | ||||
| void ui_draw_widget_menu_back_color(const rcti *rect, bool use_shadow, const float color[4]); | void ui_draw_widget_menu_back_color(const rcti *rect, bool use_shadow, const float color[4]); | ||||
| void ui_draw_widget_menu_back(const rcti *rect, bool use_shadow); | void ui_draw_widget_menu_back(const rcti *rect, bool use_shadow); | ||||
| void ui_draw_tooltip_background(const struct uiStyle *style, uiBlock *block, rcti *rect); | void ui_draw_tooltip_background(const struct uiStyle *style, uiBlock *block, rcti *rect); | ||||
| /** | |||||
| * Conversion from old to new buttons, so still messy. | |||||
| */ | |||||
| extern void ui_draw_but(const struct bContext *C, | extern void ui_draw_but(const struct bContext *C, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| struct uiStyle *style, | struct uiStyle *style, | ||||
| uiBut *but, | uiBut *but, | ||||
| rcti *rect); | rcti *rect); | ||||
| /** | /** | ||||
| * Info about what the separator character separates, used to decide between different drawing | * Info about what the separator character separates, used to decide between different drawing | ||||
| * styles. E.g. we never want a shortcut string to be clipped, but other hint strings can be | * styles. E.g. we never want a shortcut string to be clipped, but other hint strings can be | ||||
| * clipped. | * clipped. | ||||
| */ | */ | ||||
| typedef enum { | typedef enum { | ||||
| UI_MENU_ITEM_SEPARATOR_NONE, | UI_MENU_ITEM_SEPARATOR_NONE, | ||||
| /** Separator is used to indicate shortcut string of this item. Shortcut string will not get | /** Separator is used to indicate shortcut string of this item. Shortcut string will not get | ||||
| * clipped. */ | * clipped. */ | ||||
| UI_MENU_ITEM_SEPARATOR_SHORTCUT, | UI_MENU_ITEM_SEPARATOR_SHORTCUT, | ||||
| /** Separator is used to indicate some additional hint to display for this item. Hint string will | /** Separator is used to indicate some additional hint to display for this item. Hint string will | ||||
| * get clipped before the normal text. */ | * get clipped before the normal text. */ | ||||
| UI_MENU_ITEM_SEPARATOR_HINT, | UI_MENU_ITEM_SEPARATOR_HINT, | ||||
| } uiMenuItemSeparatorType; | } uiMenuItemSeparatorType; | ||||
| /** | |||||
| * Helper call to draw a menu item without a button. | |||||
| * | |||||
| * \param state: The state of the button, | |||||
| * typically #UI_ACTIVE, #UI_BUT_DISABLED, #UI_BUT_INACTIVE. | |||||
| * \param separator_type: The kind of separator which controls if and how the string is clipped. | |||||
| * \param r_xmax: The right hand position of the text, this takes into the icon, | |||||
| * padding and text clipping when there is not enough room to display the full text. | |||||
| */ | |||||
| void ui_draw_menu_item(const struct uiFontStyle *fstyle, | void ui_draw_menu_item(const struct uiFontStyle *fstyle, | ||||
| rcti *rect, | rcti *rect, | ||||
| const char *name, | const char *name, | ||||
| int iconid, | int iconid, | ||||
| int state, | int state, | ||||
| uiMenuItemSeparatorType separator_type, | uiMenuItemSeparatorType separator_type, | ||||
| int *r_xmax); | int *r_xmax); | ||||
| void ui_draw_preview_item(const struct uiFontStyle *fstyle, | void ui_draw_preview_item(const struct uiFontStyle *fstyle, | ||||
| rcti *rect, | rcti *rect, | ||||
| const char *name, | const char *name, | ||||
| int iconid, | int iconid, | ||||
| int state, | int state, | ||||
| eFontStyle_Align text_align); | eFontStyle_Align text_align); | ||||
| /** | |||||
| * Version of #ui_draw_preview_item() that does not draw the menu background and item text based on | |||||
| * state. It just draws the preview and text directly. | |||||
| */ | |||||
| void ui_draw_preview_item_stateless(const struct uiFontStyle *fstyle, | void ui_draw_preview_item_stateless(const struct uiFontStyle *fstyle, | ||||
| rcti *rect, | rcti *rect, | ||||
| const char *name, | const char *name, | ||||
| int iconid, | int iconid, | ||||
| const uchar text_col[4], | const uchar text_col[4], | ||||
| eFontStyle_Align text_align); | eFontStyle_Align text_align); | ||||
| #define UI_TEXT_MARGIN_X 0.4f | #define UI_TEXT_MARGIN_X 0.4f | ||||
| #define UI_POPUP_MARGIN (UI_DPI_FAC * 12) | #define UI_POPUP_MARGIN (UI_DPI_FAC * 12) | ||||
| /* Margin at top of screen for popups. Note this value must be sufficient | /** | ||||
| * to draw a popover arrow to avoid cropping it. */ | * Margin at top of screen for popups. | ||||
| * Note this value must be sufficient to draw a popover arrow to avoid cropping it. | |||||
| */ | |||||
| #define UI_POPUP_MENU_TOP (int)(10 * UI_DPI_FAC) | #define UI_POPUP_MENU_TOP (int)(10 * UI_DPI_FAC) | ||||
| #define UI_PIXEL_AA_JITTER 8 | #define UI_PIXEL_AA_JITTER 8 | ||||
| extern const float ui_pixel_jitter[UI_PIXEL_AA_JITTER][2]; | extern const float ui_pixel_jitter[UI_PIXEL_AA_JITTER][2]; | ||||
| /* interface_style.c */ | /* interface_style.c */ | ||||
| /** | |||||
| * Called on each startup.blend read, | |||||
| * reading without #uiFont will create one. | |||||
| */ | |||||
| void uiStyleInit(void); | void uiStyleInit(void); | ||||
| /* interface_icons.c */ | /* interface_icons.c */ | ||||
| void ui_icon_ensure_deferred(const struct bContext *C, const int icon_id, const bool big); | void ui_icon_ensure_deferred(const struct bContext *C, const int icon_id, const bool big); | ||||
| int ui_id_icon_get(const struct bContext *C, struct ID *id, const bool big); | int ui_id_icon_get(const struct bContext *C, struct ID *id, const bool big); | ||||
| /* interface_icons_event.c */ | /* interface_icons_event.c */ | ||||
| void icon_draw_rect_input( | void icon_draw_rect_input( | ||||
| float x, float y, int w, int h, float alpha, short event_type, short event_value); | float x, float y, int w, int h, float alpha, short event_type, short event_value); | ||||
| /* resources.c */ | /* resources.c */ | ||||
| void ui_resources_init(void); | void ui_resources_init(void); | ||||
| void ui_resources_free(void); | void ui_resources_free(void); | ||||
| /* interface_layout.c */ | /* interface_layout.c */ | ||||
| void ui_layout_add_but(uiLayout *layout, uiBut *but); | void ui_layout_add_but(uiLayout *layout, uiBut *but); | ||||
| void ui_layout_remove_but(uiLayout *layout, const uiBut *but); | void ui_layout_remove_but(uiLayout *layout, const uiBut *but); | ||||
| /** | |||||
| * \return true if the button was successfully replaced. | |||||
| */ | |||||
| bool ui_layout_replace_but_ptr(uiLayout *layout, const void *old_but_ptr, uiBut *new_but); | bool ui_layout_replace_but_ptr(uiLayout *layout, const void *old_but_ptr, uiBut *new_but); | ||||
| /** | |||||
| * \note May reallocate \a but, so the possibly new address is returned. | |||||
| */ | |||||
| uiBut *ui_but_add_search(uiBut *but, | uiBut *ui_but_add_search(uiBut *but, | ||||
| PointerRNA *ptr, | PointerRNA *ptr, | ||||
| PropertyRNA *prop, | PropertyRNA *prop, | ||||
| PointerRNA *searchptr, | PointerRNA *searchptr, | ||||
| PropertyRNA *searchprop); | PropertyRNA *searchprop); | ||||
| /** | |||||
| * Check all buttons defined in this layout, | |||||
| * and set any button flagged as UI_BUT_LIST_ITEM as active/selected. | |||||
| * Needed to handle correctly text colors of active (selected) list item. | |||||
| */ | |||||
| void ui_layout_list_set_labels_active(uiLayout *layout); | void ui_layout_list_set_labels_active(uiLayout *layout); | ||||
| /* menu callback */ | /* menu callback */ | ||||
| void ui_item_menutype_func(struct bContext *C, struct uiLayout *layout, void *arg_mt); | void ui_item_menutype_func(struct bContext *C, struct uiLayout *layout, void *arg_mt); | ||||
| void ui_item_paneltype_func(struct bContext *C, struct uiLayout *layout, void *arg_pt); | void ui_item_paneltype_func(struct bContext *C, struct uiLayout *layout, void *arg_pt); | ||||
| /* interface_button_group.c */ | /* interface_button_group.c */ | ||||
| /** | |||||
| * Every function that adds a set of buttons must create another group, | |||||
| * then #ui_def_but adds buttons to the current group (the last). | |||||
| */ | |||||
| void ui_block_new_button_group(uiBlock *block, uiButtonGroupFlag flag); | void ui_block_new_button_group(uiBlock *block, uiButtonGroupFlag flag); | ||||
| void ui_button_group_add_but(uiBlock *block, uiBut *but); | void ui_button_group_add_but(uiBlock *block, uiBut *but); | ||||
| void ui_button_group_replace_but_ptr(uiBlock *block, const void *old_but_ptr, uiBut *new_but); | void ui_button_group_replace_but_ptr(uiBlock *block, const void *old_but_ptr, uiBut *new_but); | ||||
| void ui_block_free_button_groups(uiBlock *block); | void ui_block_free_button_groups(uiBlock *block); | ||||
| /* interface_align.c */ | /* interface_align.c */ | ||||
| bool ui_but_can_align(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_can_align(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| int ui_but_align_opposite_to_area_align_get(const struct ARegion *region) ATTR_WARN_UNUSED_RESULT; | int ui_but_align_opposite_to_area_align_get(const struct ARegion *region) ATTR_WARN_UNUSED_RESULT; | ||||
| /** | |||||
| * Compute the alignment of all 'align groups' of buttons in given block. | |||||
| * | |||||
| * This is using an order-independent algorithm, | |||||
| * i.e. alignment of buttons should be OK regardless of order in which | |||||
| * they are added to the block. | |||||
| */ | |||||
| void ui_block_align_calc(uiBlock *block, const struct ARegion *region); | void ui_block_align_calc(uiBlock *block, const struct ARegion *region); | ||||
| /* interface_anim.c */ | /* interface_anim.c */ | ||||
| void ui_but_anim_flag(uiBut *but, const struct AnimationEvalContext *anim_eval_context); | void ui_but_anim_flag(uiBut *but, const struct AnimationEvalContext *anim_eval_context); | ||||
| void ui_but_anim_copy_driver(struct bContext *C); | void ui_but_anim_copy_driver(struct bContext *C); | ||||
| void ui_but_anim_paste_driver(struct bContext *C); | void ui_but_anim_paste_driver(struct bContext *C); | ||||
| /** | |||||
| * \a str can be NULL to only perform check if \a but has an expression at all. | |||||
| * \return if button has an expression. | |||||
| */ | |||||
| bool ui_but_anim_expression_get(uiBut *but, char *str, size_t maxlen); | bool ui_but_anim_expression_get(uiBut *but, char *str, size_t maxlen); | ||||
| bool ui_but_anim_expression_set(uiBut *but, const char *str); | bool ui_but_anim_expression_set(uiBut *but, const char *str); | ||||
| /** | |||||
| * Create new expression for button (i.e. a "scripted driver"), if it can be created. | |||||
| */ | |||||
| bool ui_but_anim_expression_create(uiBut *but, const char *str); | bool ui_but_anim_expression_create(uiBut *but, const char *str); | ||||
| void ui_but_anim_autokey(struct bContext *C, uiBut *but, struct Scene *scene, float cfra); | void ui_but_anim_autokey(struct bContext *C, uiBut *but, struct Scene *scene, float cfra); | ||||
| void ui_but_anim_decorate_cb(struct bContext *C, void *arg_but, void *arg_dummy); | void ui_but_anim_decorate_cb(struct bContext *C, void *arg_but, void *arg_dummy); | ||||
| void ui_but_anim_decorate_update_from_flag(uiButDecorator *but); | void ui_but_anim_decorate_update_from_flag(uiButDecorator *but); | ||||
| /* interface_query.c */ | /* interface_query.c */ | ||||
| bool ui_but_is_editable(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_editable(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_but_is_editable_as_text(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_editable_as_text(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_but_is_toggle(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_toggle(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| /** | |||||
| * Can we mouse over the button or is it hidden/disabled/layout. | |||||
| * \note ctrl is kind of a hack currently, | |||||
| * so that non-embossed UI_BTYPE_TEXT button behaves as a label when ctrl is not pressed. | |||||
| */ | |||||
| bool ui_but_is_interactive(const uiBut *but, const bool labeledit) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_interactive(const uiBut *but, const bool labeledit) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_but_is_popover_once_compat(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_popover_once_compat(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_but_has_array_value(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_has_array_value(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| int ui_but_icon(const uiBut *but); | int ui_but_icon(const uiBut *but); | ||||
| void ui_but_pie_dir(RadialDirection dir, float vec[2]); | void ui_but_pie_dir(RadialDirection dir, float vec[2]); | ||||
| bool ui_but_is_cursor_warp(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | bool ui_but_is_cursor_warp(const uiBut *but) ATTR_WARN_UNUSED_RESULT; | ||||
| Show All 14 Lines | |||||
| uiBut *ui_list_row_find_from_index(const struct ARegion *region, | uiBut *ui_list_row_find_from_index(const struct ARegion *region, | ||||
| const int index, | const int index, | ||||
| uiBut *listbox) ATTR_WARN_UNUSED_RESULT; | uiBut *listbox) ATTR_WARN_UNUSED_RESULT; | ||||
| uiBut *ui_tree_row_find_mouse_over(const struct ARegion *region, const int xy[2]) | uiBut *ui_tree_row_find_mouse_over(const struct ARegion *region, const int xy[2]) | ||||
| ATTR_NONNULL(1, 2); | ATTR_NONNULL(1, 2); | ||||
| uiBut *ui_tree_row_find_active(const struct ARegion *region); | uiBut *ui_tree_row_find_active(const struct ARegion *region); | ||||
| typedef bool (*uiButFindPollFn)(const uiBut *but, const void *customdata); | typedef bool (*uiButFindPollFn)(const uiBut *but, const void *customdata); | ||||
| /** | |||||
| * x and y are only used in case event is NULL. | |||||
| */ | |||||
| uiBut *ui_but_find_mouse_over_ex(const struct ARegion *region, | uiBut *ui_but_find_mouse_over_ex(const struct ARegion *region, | ||||
| const int xy[2], | const int xy[2], | ||||
| const bool labeledit, | const bool labeledit, | ||||
| const uiButFindPollFn find_poll, | const uiButFindPollFn find_poll, | ||||
| const void *find_custom_data) | const void *find_custom_data) | ||||
| ATTR_NONNULL(1, 2) ATTR_WARN_UNUSED_RESULT; | ATTR_NONNULL(1, 2) ATTR_WARN_UNUSED_RESULT; | ||||
| uiBut *ui_but_find_mouse_over(const struct ARegion *region, | uiBut *ui_but_find_mouse_over(const struct ARegion *region, | ||||
| const struct wmEvent *event) ATTR_WARN_UNUSED_RESULT; | const struct wmEvent *event) ATTR_WARN_UNUSED_RESULT; | ||||
| Show All 30 Lines | |||||
| uiBut *ui_region_find_first_but_test_flag(struct ARegion *region, | uiBut *ui_region_find_first_but_test_flag(struct ARegion *region, | ||||
| int flag_include, | int flag_include, | ||||
| int flag_exclude); | int flag_exclude); | ||||
| uiBut *ui_region_find_active_but(struct ARegion *region) ATTR_WARN_UNUSED_RESULT; | uiBut *ui_region_find_active_but(struct ARegion *region) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_region_contains_point_px(const struct ARegion *region, const int xy[2]) | bool ui_region_contains_point_px(const struct ARegion *region, const int xy[2]) | ||||
| ATTR_NONNULL(1, 2) ATTR_WARN_UNUSED_RESULT; | ATTR_NONNULL(1, 2) ATTR_WARN_UNUSED_RESULT; | ||||
| bool ui_region_contains_rect_px(const struct ARegion *region, const rcti *rect_px); | bool ui_region_contains_rect_px(const struct ARegion *region, const rcti *rect_px); | ||||
| /** | |||||
| * Check if the cursor is over any popups. | |||||
| */ | |||||
| struct ARegion *ui_screen_region_find_mouse_over_ex(struct bScreen *screen, const int xy[2]) | struct ARegion *ui_screen_region_find_mouse_over_ex(struct bScreen *screen, const int xy[2]) | ||||
| ATTR_NONNULL(1, 2); | ATTR_NONNULL(1, 2); | ||||
| struct ARegion *ui_screen_region_find_mouse_over(struct bScreen *screen, | struct ARegion *ui_screen_region_find_mouse_over(struct bScreen *screen, | ||||
| const struct wmEvent *event); | const struct wmEvent *event); | ||||
| /* interface_context_menu.c */ | /* interface_context_menu.c */ | ||||
| bool ui_popup_context_menu_for_button(struct bContext *C, uiBut *but, const struct wmEvent *event); | bool ui_popup_context_menu_for_button(struct bContext *C, uiBut *but, const struct wmEvent *event); | ||||
| /** | |||||
| * menu to show when right clicking on the panel header | |||||
| */ | |||||
| void ui_popup_context_menu_for_panel(struct bContext *C, | void ui_popup_context_menu_for_panel(struct bContext *C, | ||||
| struct ARegion *region, | struct ARegion *region, | ||||
| struct Panel *panel); | struct Panel *panel); | ||||
| /* interface_eyedropper.c */ | /* interface_eyedropper.c */ | ||||
| struct wmKeyMap *eyedropper_modal_keymap(struct wmKeyConfig *keyconf); | struct wmKeyMap *eyedropper_modal_keymap(struct wmKeyConfig *keyconf); | ||||
| struct wmKeyMap *eyedropper_colorband_modal_keymap(struct wmKeyConfig *keyconf); | struct wmKeyMap *eyedropper_colorband_modal_keymap(struct wmKeyConfig *keyconf); | ||||
| /* interface_eyedropper_color.c */ | /* interface_eyedropper_color.c */ | ||||
| void UI_OT_eyedropper_color(struct wmOperatorType *ot); | void UI_OT_eyedropper_color(struct wmOperatorType *ot); | ||||
| /* interface_eyedropper_colorband.c */ | /* interface_eyedropper_colorband.c */ | ||||
| void UI_OT_eyedropper_colorramp(struct wmOperatorType *ot); | void UI_OT_eyedropper_colorramp(struct wmOperatorType *ot); | ||||
| void UI_OT_eyedropper_colorramp_point(struct wmOperatorType *ot); | void UI_OT_eyedropper_colorramp_point(struct wmOperatorType *ot); | ||||
| /* interface_eyedropper_datablock.c */ | /* interface_eyedropper_datablock.c */ | ||||
| void UI_OT_eyedropper_id(struct wmOperatorType *ot); | void UI_OT_eyedropper_id(struct wmOperatorType *ot); | ||||
| /* interface_eyedropper_depth.c */ | /* interface_eyedropper_depth.c */ | ||||
| void UI_OT_eyedropper_depth(struct wmOperatorType *ot); | void UI_OT_eyedropper_depth(struct wmOperatorType *ot); | ||||
| /* interface_eyedropper_driver.c */ | /* interface_eyedropper_driver.c */ | ||||
| void UI_OT_eyedropper_driver(struct wmOperatorType *ot); | void UI_OT_eyedropper_driver(struct wmOperatorType *ot); | ||||
| /* interface_eyedropper_gpencil_color.c */ | /* interface_eyedropper_gpencil_color.c */ | ||||
| void UI_OT_eyedropper_gpencil_color(struct wmOperatorType *ot); | void UI_OT_eyedropper_gpencil_color(struct wmOperatorType *ot); | ||||
| /* interface_template_asset_view.cc */ | /* interface_template_asset_view.cc */ | ||||
| struct uiListType *UI_UL_asset_view(void); | struct uiListType *UI_UL_asset_view(void); | ||||
| /** | /** | ||||
| * For use with #ui_rna_collection_search_update_fn. | * For use with #ui_rna_collection_search_update_fn. | ||||
| */ | */ | ||||
| typedef struct uiRNACollectionSearch { | typedef struct uiRNACollectionSearch { | ||||
| PointerRNA target_ptr; | PointerRNA target_ptr; | ||||
| PropertyRNA *target_prop; | PropertyRNA *target_prop; | ||||
| Show All 9 Lines | |||||
| } uiRNACollectionSearch; | } uiRNACollectionSearch; | ||||
| void ui_rna_collection_search_update_fn(const struct bContext *C, | void ui_rna_collection_search_update_fn(const struct bContext *C, | ||||
| void *arg, | void *arg, | ||||
| const char *str, | const char *str, | ||||
| uiSearchItems *items, | uiSearchItems *items, | ||||
| const bool is_first); | const bool is_first); | ||||
| /* interface_ops.c */ | /* interface_ops.c */ | ||||
| bool ui_jump_to_target_button_poll(struct bContext *C); | bool ui_jump_to_target_button_poll(struct bContext *C); | ||||
| /* interface_queries.c */ | /* interface_queries.c */ | ||||
| void ui_interface_tag_script_reload_queries(void); | void ui_interface_tag_script_reload_queries(void); | ||||
| /* interface_view.cc */ | /* interface_view.cc */ | ||||
| void ui_block_free_views(struct uiBlock *block); | void ui_block_free_views(struct uiBlock *block); | ||||
| uiTreeViewHandle *ui_block_view_find_matching_in_old_block(const uiBlock *new_block, | uiTreeViewHandle *ui_block_view_find_matching_in_old_block(const uiBlock *new_block, | ||||
| const uiTreeViewHandle *new_view); | const uiTreeViewHandle *new_view); | ||||
| uiButTreeRow *ui_block_view_find_treerow_in_old_block(const uiBlock *new_block, | uiButTreeRow *ui_block_view_find_treerow_in_old_block(const uiBlock *new_block, | ||||
| const uiTreeViewItemHandle *new_item_handle); | const uiTreeViewItemHandle *new_item_handle); | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif | #endif | ||||