Blender
V3.3
|
#include <cstdarg>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "PIL_time.h"
#include "BKE_context.h"
#include "BKE_screen.h"
#include "WM_api.h"
#include "WM_types.h"
#include "RNA_access.h"
#include "RNA_path.h"
#include "RNA_prototypes.h"
#include "UI_interface.h"
#include "BLT_translation.h"
#include "ED_screen.h"
#include "interface_intern.h"
#include "interface_regions_intern.h"
Go to the source code of this file.
Classes | |
struct | uiPieMenu |
struct | PieMenuLevelData |
Functions | |
Pie Menu | |
static uiBlock * | ui_block_func_PIE (bContext *UNUSED(C), uiPopupBlockHandle *handle, void *arg_pie) |
static float | ui_pie_menu_title_width (const char *name, int icon) |
uiPieMenu * | UI_pie_menu_begin (struct bContext *C, const char *title, int icon, const wmEvent *event) |
void | UI_pie_menu_end (bContext *C, uiPieMenu *pie) |
uiLayout * | UI_pie_menu_layout (uiPieMenu *pie) |
int | UI_pie_menu_invoke (struct bContext *C, const char *idname, const wmEvent *event) |
int | UI_pie_menu_invoke_from_operator_enum (struct bContext *C, const char *title, const char *opname, const char *propname, const wmEvent *event) |
int | UI_pie_menu_invoke_from_rna_enum (struct bContext *C, const char *title, const char *path, const wmEvent *event) |
Pie Menu Levels | |
Pie menus can't contain more than 8 items (yet). When using uiItemsFullEnumO, a "More" button is created that calls a new pie menu if the enum has too many items. We call this a new "level". Indirect recursion is used, so that a theoretically unlimited number of items is supported. This is a implementation specifically for operator enums, needed since the object mode pie now has more than 8 items. Ideally we'd have some way of handling this for all kinds of pie items, but that's tricky.
| |
static void | ui_pie_menu_level_invoke (bContext *C, void *argN, void *arg2) |
void | ui_pie_menu_level_create (uiBlock *block, wmOperatorType *ot, const char *propname, IDProperty *properties, const EnumPropertyItem *items, int totitem, wmOperatorCallContext context, wmOperatorCallContext flag) |
Pie Menu Region
Definition in file interface_region_menu_pie.cc.
|
static |
Definition at line 52 of file interface_region_menu_pie.cc.
References BLI_findindex(), uiPieMenu::block_radial, uiBlock::bounds, uiBlock::bounds_offset, uiBlock::bounds_type, height, uiBlock::minbounds, uiPieMenu::mx, uiPieMenu::my, PieMenuData::pie_center_spawned, uiBlock::pie_data, uiPopupBlockHandle::region, UI_BLOCK_BOUNDS_PIE_CENTER, UI_block_flag_enable(), UI_block_layout_resolve(), UI_BLOCK_LOOP, UI_BLOCK_NUMSELECT, UI_block_region_set(), UI_BLOCK_THEME_STYLE_POPUP, UI_block_theme_style_set(), UI_MENU_WIDTH_MIN, ARegion::uiblocks, and width.
Referenced by UI_pie_menu_end().
uiPieMenu* UI_pie_menu_begin | ( | struct bContext * | C, |
const char * | title, | ||
int | icon, | ||
const wmEvent * | event | ||
) |
Definition at line 90 of file interface_region_menu_pie.cc.
References BLI_snprintf(), uiPieMenu::block_radial, C, CTX_wm_window(), uiBut::drawflag, ELEM, EVENT_NONE, PieMenuData::event_type, uiBlock::flag, PieMenuData::flags, PieMenuData::icon, KM_CLICK, KM_RELEASE, uiPieMenu::layout, LEFTMOUSE, uiPieMenu::mx, uiPieMenu::my, uiBlock::pie_data, wmWindow::pie_event_type_last, wmWindow::pie_event_type_lock, uiBlock::puphash, uiBut::str, PieMenuData::title, wmEvent::type, UI_block_begin(), UI_block_layout(), UI_BLOCK_RADIAL, UI_BTYPE_LABEL, UI_BUT_TEXT_LEFT, UI_EMBOSS, UI_LAYOUT_PIEMENU, UI_LAYOUT_VERTICAL, UI_PIE_CLICK_STYLE, ui_pie_menu_title_width(), ui_popup_menu_hash(), UI_style_get_dpi(), UI_UNIT_Y, uiDefBut(), uiDefIconTextBut(), wmEvent::val, and w().
Referenced by UI_pie_menu_invoke(), UI_pie_menu_invoke_from_operator_enum(), UI_pie_menu_invoke_from_rna_enum(), and ui_pie_menu_level_invoke().
Definition at line 189 of file interface_region_menu_pie.cc.
References C, CTX_wm_window(), MEM_freeN, wmWindow::modalhandlers, PIL_check_seconds_timer(), uiPopupBlockHandle::popup, uiPopupBlockHandle::towardstime, ui_block_func_PIE(), ui_popup_block_create(), UI_popup_handlers_add(), WM_event_add_mousemove(), and WM_HANDLER_ACCEPT_DBL_CLICK.
Referenced by UI_pie_menu_invoke(), UI_pie_menu_invoke_from_operator_enum(), UI_pie_menu_invoke_from_rna_enum(), and ui_pie_menu_level_invoke().
Definition at line 209 of file interface_region_menu_pie.cc.
References C, IFACE_, MenuType::label, OPERATOR_CANCELLED, OPERATOR_INTERFACE, OPERATOR_PASS_THROUGH, UI_menutype_draw(), UI_pie_menu_begin(), UI_pie_menu_end(), UI_pie_menu_layout(), WM_menutype_find(), and WM_menutype_poll().
int UI_pie_menu_invoke_from_operator_enum | ( | struct bContext * | C, |
const char * | title, | ||
const char * | opname, | ||
const char * | propname, | ||
const wmEvent * | event | ||
) |
Definition at line 235 of file interface_region_menu_pie.cc.
References C, IFACE_, OPERATOR_INTERFACE, UI_pie_menu_begin(), UI_pie_menu_end(), UI_pie_menu_layout(), uiItemsEnumO(), and uiLayoutRadial().
int UI_pie_menu_invoke_from_rna_enum | ( | struct bContext * | C, |
const char * | title, | ||
const char * | path, | ||
const wmEvent * | event | ||
) |
Definition at line 255 of file interface_region_menu_pie.cc.
References BLI_assert, C, IFACE_, OPERATOR_CANCELLED, OPERATOR_INTERFACE, PROP_ENUM, RNA_NO_INDEX, RNA_path_resolve(), RNA_pointer_create(), RNA_property_type(), UI_ITEM_R_EXPAND, UI_pie_menu_begin(), UI_pie_menu_end(), UI_pie_menu_layout(), uiItemFullR(), and uiLayoutRadial().
Definition at line 204 of file interface_region_menu_pie.cc.
References uiPieMenu::layout.
Referenced by UI_pie_menu_invoke(), UI_pie_menu_invoke_from_operator_enum(), UI_pie_menu_invoke_from_rna_enum(), and ui_pie_menu_level_invoke().
void ui_pie_menu_level_create | ( | uiBlock * | block, |
struct wmOperatorType * | ot, | ||
const char * | propname, | ||
struct IDProperty * | properties, | ||
const EnumPropertyItem * | items, | ||
int | totitem, | ||
wmOperatorCallContext | context, | ||
wmOperatorCallContext | flag | ||
) |
Set up data for defining a new pie menu level and add button that invokes it.
Definition at line 358 of file interface_region_menu_pie.cc.
References BLI_strncpy(), blender::compositor::context, PieMenuLevelData::context, PieMenuLevelData::flag, MEM_mallocN, PieMenuLevelData::ot, ot, uiBlock::pie_data, PIE_MAX_ITEMS, PieMenuLevelData::properties, PieMenuLevelData::propname, PieMenuData::title, PieMenuLevelData::title, PieMenuLevelData::totitem, UI_BTYPE_BUT, UI_but_funcN_set(), UI_MAX_NAME_STR, ui_pie_menu_level_invoke(), UI_UNIT_X, UI_UNIT_Y, and uiDefIconTextBut().
Referenced by uiItemsFullEnumO_items().
Invokes a new pie menu for a new level.
Definition at line 322 of file interface_region_menu_pie.cc.
References C, PieMenuLevelData::context, CTX_wm_window(), wmWindow::eventstate, PieMenuLevelData::flag, PieMenuLevelData::icon, IFACE_, PieMenuLevelData::ot, PieMenuLevelData::properties, PieMenuLevelData::propname, ptr, RNA_struct_find_property(), RNA_struct_identifier(), RNA_warning, PieMenuLevelData::title, PieMenuLevelData::totitem, PointerRNA::type, UI_pie_menu_begin(), UI_pie_menu_end(), UI_pie_menu_layout(), uiItemsFullEnumO_items(), uiLayoutRadial(), WM_operator_properties_create_ptr(), and WM_operator_properties_sanitize().
Referenced by ui_pie_menu_level_create().
|
static |
Definition at line 84 of file interface_region_menu_pie.cc.
References UI_fontstyle_string_width(), UI_FSTYLE_WIDGET, and UI_UNIT_X.
Referenced by UI_pie_menu_begin().