|
Blender V4.3
|
#include <cstdarg>#include <cstdlib>#include <cstring>#include "MEM_guardedalloc.h"#include "DNA_userdef_types.h"#include "BLI_blenlib.h"#include "BLI_time.h"#include "BLI_utildefines.h"#include "BKE_context.hh"#include "BKE_screen.hh"#include "WM_api.hh"#include "WM_types.hh"#include "RNA_access.hh"#include "RNA_path.hh"#include "RNA_prototypes.hh"#include "UI_interface.hh"#include "BLT_translation.hh"#include "interface_intern.hh"#include "interface_regions_intern.hh"Go to the source code of this file.
Classes | |
| struct | uiPieMenu |
| struct | PieMenuLevelData |
Functions | |
Pie Menu | |
| static uiBlock * | ui_block_func_PIE (bContext *, uiPopupBlockHandle *handle, void *arg_pie) |
| static float | ui_pie_menu_title_width (const char *name, int icon) |
| uiPieMenu * | UI_pie_menu_begin (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 (bContext *C, const char *idname, const wmEvent *event) |
| int | UI_pie_menu_invoke_from_operator_enum (bContext *C, const char *title, const char *opname, const char *propname, const wmEvent *event) |
| int | UI_pie_menu_invoke_from_rna_enum (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, const wmOperatorCallContext context, const eUI_Item_Flag flag) |
Pie Menu Region
Definition in file interface_region_menu_pie.cc.
|
static |
Definition at line 50 of file interface_region_menu_pie.cc.
References BLI_findindex(), uiBlock::bounds, uiBlock::bounds_offset, uiBlock::bounds_type, uiBlock::minbounds, uiPieMenu::mx, uiPieMenu::my, uiPieMenu::pie_block, PieMenuData::pie_center_spawned, uiBlock::pie_data, 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(), and UI_MENU_WIDTH_MIN.
Referenced by UI_pie_menu_end().
Definition at line 88 of file interface_region_menu_pie.cc.
References 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, uiPieMenu::pie_block, uiBlock::pie_data, wmWindow::pie_event_type_last, wmWindow::pie_event_type_lock, uiBlock::puphash, SNPRINTF, uiBut::str, PieMenuData::title, wmEvent::type, UI_block_begin(), UI_block_layout(), UI_BLOCK_PIE_MENU, UI_BTYPE_LABEL, 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 173 of file interface_region_menu_pie.cc.
References BLI_time_now_seconds(), CTX_wm_window(), MEM_freeN(), wmWindow::modalhandlers, 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 193 of file interface_region_menu_pie.cc.
References CTX_IFACE_, MenuType::label, OPERATOR_CANCELLED, OPERATOR_INTERFACE, OPERATOR_PASS_THROUGH, printf, MenuType::translation_context, UI_menutype_draw(), UI_pie_menu_begin(), UI_pie_menu_end(), UI_pie_menu_layout(), WM_menutype_find(), and WM_menutype_poll().
Referenced by view3d_object_mode_menu_exec(), wm_call_pie_menu_exec(), and wm_call_pie_menu_invoke().
| int UI_pie_menu_invoke_from_operator_enum | ( | bContext * | C, |
| const char * | title, | ||
| const char * | opname, | ||
| const char * | propname, | ||
| const wmEvent * | event ) |
Definition at line 219 of file interface_region_menu_pie.cc.
References 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 | ( | bContext * | C, |
| const char * | title, | ||
| const char * | path, | ||
| const wmEvent * | event ) |
Definition at line 236 of file interface_region_menu_pie.cc.
References BLI_assert, 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 188 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, |
| wmOperatorType * | ot, | ||
| const char * | propname, | ||
| IDProperty * | properties, | ||
| const EnumPropertyItem * | items, | ||
| int | totitem, | ||
| wmOperatorCallContext | context, | ||
| eUI_Item_Flag | flag ) |
Set up data for defining a new pie menu level and add button that invokes it.
Definition at line 339 of file interface_region_menu_pie.cc.
References PieMenuLevelData::context, flag, PieMenuLevelData::flag, MEM_mallocN, ot, PieMenuLevelData::ot, uiBlock::pie_data, PIE_MAX_ITEMS, PieMenuLevelData::properties, PieMenuLevelData::propname, STRNCPY, PieMenuData::title, PieMenuLevelData::title, PieMenuLevelData::totitem, UI_BTYPE_BUT, UI_but_funcN_set(), ui_pie_menu_level_invoke(), UI_UNIT_X, UI_UNIT_Y, and uiDefIconTextBut().
Referenced by uiItemsFullEnumO_items().
|
static |
Invokes a new pie menu for a new level.
Definition at line 303 of file interface_region_menu_pie.cc.
References 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().
Definition at line 82 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().