UI: Add 'interface_query.c'
Interface files are increasingly mixing up too much functionality, add a file only to handle queries. More functions can be moved/added here.
This commit is contained in:
parent
b26e9f0000
commit
a42fd3de5d
|
@ -379,6 +379,11 @@ typedef void (*uiMenuHandleFunc)(struct bContext *C, void *arg, int event);
|
|||
*/
|
||||
typedef bool (*uiMenuStepFunc)(struct bContext *C, int direction, void *arg1);
|
||||
|
||||
|
||||
/* interface_query.c */
|
||||
bool UI_block_is_empty(const uiBlock *block);
|
||||
|
||||
|
||||
/* interface_region_menu_popup.c */
|
||||
/* Popup Menus
|
||||
*
|
||||
|
@ -498,8 +503,6 @@ void UI_block_order_flip(uiBlock *block);
|
|||
void UI_block_flag_enable(uiBlock *block, int flag);
|
||||
void UI_block_flag_disable(uiBlock *block, int flag);
|
||||
|
||||
bool UI_block_is_empty(const uiBlock *block);
|
||||
|
||||
int UI_but_return_value_get(uiBut *but);
|
||||
|
||||
void UI_but_drag_set_id(uiBut *but, struct ID *id);
|
||||
|
|
|
@ -55,6 +55,7 @@ set(SRC
|
|||
interface_layout.c
|
||||
interface_ops.c
|
||||
interface_panel.c
|
||||
interface_query.c
|
||||
interface_region_color_picker.c
|
||||
interface_region_menu_pie.c
|
||||
interface_region_menu_popup.c
|
||||
|
|
|
@ -93,18 +93,6 @@
|
|||
|
||||
static void ui_but_free(const bContext *C, uiBut *but);
|
||||
|
||||
bool ui_block_is_menu(const uiBlock *block)
|
||||
{
|
||||
return (((block->flag & UI_BLOCK_LOOP) != 0) &&
|
||||
/* non-menu popups use keep-open, so check this is off */
|
||||
((block->flag & UI_BLOCK_KEEP_OPEN) == 0));
|
||||
}
|
||||
|
||||
bool ui_block_is_pie_menu(const uiBlock *block)
|
||||
{
|
||||
return ((block->flag & UI_BLOCK_RADIAL) != 0);
|
||||
}
|
||||
|
||||
static bool ui_but_is_unit_radians_ex(UnitSettings *unit, const int unit_type)
|
||||
{
|
||||
return (unit->system_rotation == USER_UNIT_ROT_RADIANS && unit_type == PROP_UNIT_ROTATION);
|
||||
|
@ -4007,16 +3995,6 @@ int UI_blocklist_min_y_get(ListBase *lb)
|
|||
return min;
|
||||
}
|
||||
|
||||
bool UI_block_is_empty(const uiBlock *block)
|
||||
{
|
||||
for (const uiBut *but = block->buttons.first; but; but = but->next) {
|
||||
if (!ELEM(but->type, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void UI_block_direction_set(uiBlock *block, char direction)
|
||||
{
|
||||
block->direction = direction;
|
||||
|
|
|
@ -471,36 +471,6 @@ void ui_pan_to_scroll(const wmEvent *event, int *type, int *val)
|
|||
}
|
||||
}
|
||||
|
||||
bool ui_but_is_editable(const uiBut *but)
|
||||
{
|
||||
return !ELEM(but->type,
|
||||
UI_BTYPE_LABEL, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE,
|
||||
UI_BTYPE_ROUNDBOX, UI_BTYPE_LISTBOX, UI_BTYPE_PROGRESS_BAR);
|
||||
}
|
||||
|
||||
bool ui_but_is_editable_as_text(const uiBut *but)
|
||||
{
|
||||
return ELEM(but->type,
|
||||
UI_BTYPE_TEXT, UI_BTYPE_NUM, UI_BTYPE_NUM_SLIDER,
|
||||
UI_BTYPE_SEARCH_MENU);
|
||||
|
||||
}
|
||||
|
||||
bool ui_but_is_toggle(const uiBut *but)
|
||||
{
|
||||
return ELEM(
|
||||
but->type,
|
||||
UI_BTYPE_BUT_TOGGLE,
|
||||
UI_BTYPE_TOGGLE,
|
||||
UI_BTYPE_ICON_TOGGLE,
|
||||
UI_BTYPE_ICON_TOGGLE_N,
|
||||
UI_BTYPE_TOGGLE_N,
|
||||
UI_BTYPE_CHECKBOX,
|
||||
UI_BTYPE_CHECKBOX_N,
|
||||
UI_BTYPE_ROW
|
||||
);
|
||||
}
|
||||
|
||||
static uiBut *ui_but_prev(uiBut *but)
|
||||
{
|
||||
while (but->prev) {
|
||||
|
|
|
@ -453,8 +453,6 @@ extern void ui_linkline_remove(uiLinkLine *line, uiBut *but);
|
|||
|
||||
void ui_fontscale(short *points, float aspect);
|
||||
|
||||
extern bool ui_block_is_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT;
|
||||
extern bool ui_block_is_pie_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT;
|
||||
extern void ui_block_to_window_fl(const struct ARegion *ar, uiBlock *block, float *x, float *y);
|
||||
extern void ui_block_to_window(const struct ARegion *ar, uiBlock *block, int *x, int *y);
|
||||
extern void ui_block_to_window_rctf(const struct ARegion *ar, uiBlock *block, rctf *rct_dst, const rctf *rct_src);
|
||||
|
@ -677,9 +675,6 @@ extern void ui_but_text_password_hide(char password_str[UI_MAX_DRAW_STR], uiBut
|
|||
extern uiBut *ui_but_find_select_in_enum(uiBut *but, int direction);
|
||||
extern uiBut *ui_but_find_active_in_region(struct ARegion *ar);
|
||||
extern uiBut *ui_but_find_mouse_over(struct ARegion *ar, const struct wmEvent *event);
|
||||
bool ui_but_is_editable(const uiBut *but);
|
||||
bool ui_but_is_editable_as_text(const uiBut *but);
|
||||
bool ui_but_is_toggle(const uiBut *but);
|
||||
void ui_but_pie_dir_visual(RadialDirection dir, float vec[2]);
|
||||
void ui_but_pie_dir(RadialDirection dir, float vec[2]);
|
||||
float ui_block_calc_pie_segment(struct uiBlock *block, const float event_xy[2]);
|
||||
|
@ -699,8 +694,8 @@ void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y
|
|||
void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float maxy, float rad, bool use_alpha);
|
||||
void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
|
||||
void ui_draw_pie_center(uiBlock *block);
|
||||
uiWidgetColors *ui_tooltip_get_theme(void);
|
||||
void ui_draw_tooltip_background(uiStyle *UNUSED(style), uiBlock *block, rcti *rect);
|
||||
struct uiWidgetColors *ui_tooltip_get_theme(void);
|
||||
void ui_draw_tooltip_background(struct uiStyle *UNUSED(style), uiBlock *block, rcti *rect);
|
||||
void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
|
||||
bool ui_link_bezier_points(const rcti *rect, float coord_array[][2], int resol);
|
||||
void ui_draw_link_bezier(const rcti *rect);
|
||||
|
@ -750,6 +745,14 @@ bool ui_but_anim_expression_set(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);
|
||||
|
||||
/* interface_query.c */
|
||||
bool ui_but_is_editable(const uiBut *but);
|
||||
bool ui_but_is_editable_as_text(const uiBut *but);
|
||||
bool ui_but_is_toggle(const uiBut *but);
|
||||
|
||||
extern bool ui_block_is_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT;
|
||||
extern bool ui_block_is_pie_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
/* interface_context_menu.c */
|
||||
bool ui_popup_context_menu_for_button(struct bContext *C, uiBut *but);
|
||||
void ui_popup_context_menu_for_panel(struct bContext *C, struct ARegion *ar, struct Panel *pa);
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/editors/interface/interface_query.c
|
||||
* \ingroup edinterface
|
||||
*
|
||||
* Utilities to inspect the interface, extract information.
|
||||
*/
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "DNA_screen_types.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "interface_intern.h"
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Button (uiBut)
|
||||
* \{ */
|
||||
|
||||
bool ui_but_is_editable(const uiBut *but)
|
||||
{
|
||||
return !ELEM(but->type,
|
||||
UI_BTYPE_LABEL, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE,
|
||||
UI_BTYPE_ROUNDBOX, UI_BTYPE_LISTBOX, UI_BTYPE_PROGRESS_BAR);
|
||||
}
|
||||
|
||||
bool ui_but_is_editable_as_text(const uiBut *but)
|
||||
{
|
||||
return ELEM(but->type,
|
||||
UI_BTYPE_TEXT, UI_BTYPE_NUM, UI_BTYPE_NUM_SLIDER,
|
||||
UI_BTYPE_SEARCH_MENU);
|
||||
|
||||
}
|
||||
|
||||
bool ui_but_is_toggle(const uiBut *but)
|
||||
{
|
||||
return ELEM(
|
||||
but->type,
|
||||
UI_BTYPE_BUT_TOGGLE,
|
||||
UI_BTYPE_TOGGLE,
|
||||
UI_BTYPE_ICON_TOGGLE,
|
||||
UI_BTYPE_ICON_TOGGLE_N,
|
||||
UI_BTYPE_TOGGLE_N,
|
||||
UI_BTYPE_CHECKBOX,
|
||||
UI_BTYPE_CHECKBOX_N,
|
||||
UI_BTYPE_ROW
|
||||
);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Block (uiBlock)
|
||||
* \{ */
|
||||
|
||||
bool ui_block_is_menu(const uiBlock *block)
|
||||
{
|
||||
return (((block->flag & UI_BLOCK_LOOP) != 0) &&
|
||||
/* non-menu popups use keep-open, so check this is off */
|
||||
((block->flag & UI_BLOCK_KEEP_OPEN) == 0));
|
||||
}
|
||||
|
||||
bool ui_block_is_pie_menu(const uiBlock *block)
|
||||
{
|
||||
return ((block->flag & UI_BLOCK_RADIAL) != 0);
|
||||
}
|
||||
|
||||
bool UI_block_is_empty(const uiBlock *block)
|
||||
{
|
||||
for (const uiBut *but = block->buttons.first; but; but = but->next) {
|
||||
if (!ELEM(but->type, UI_BTYPE_SEPR, UI_BTYPE_SEPR_LINE)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** \} */
|
Loading…
Reference in New Issue