Blender V5.0
interface_region_menu_pie.cc File Reference
#include <cstdarg>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BLI_listbase.h"
#include "BLI_string_utf8.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_layout.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 uiBlockui_block_func_PIE (bContext *, uiPopupBlockHandle *handle, void *arg_pie)
static float ui_pie_menu_title_width (const char *name, int icon)
uiPieMenuUI_pie_menu_begin (bContext *C, const char *title, int icon, const wmEvent *event)
void UI_pie_menu_end (bContext *C, uiPieMenu *pie)
uiLayoutUI_pie_menu_layout (uiPieMenu *pie)
wmOperatorStatus UI_pie_menu_invoke (bContext *C, const char *idname, const wmEvent *event)
Pie Menu Levels

Pie menus can't contain more than 8 items (yet). When using ##uiLayout::operator_enum, 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.

  • Julian (Feb 2016)
static void ui_pie_menu_level_invoke (bContext *C, void *argN, void *arg2)
void ui_pie_menu_level_create (uiBlock *block, wmOperatorType *ot, const StringRefNull propname, IDProperty *properties, const EnumPropertyItem *items, int totitem, const blender::wm::OpCallContext context, const eUI_Item_Flag flag)

Detailed Description

Pie Menu Region

Definition in file interface_region_menu_pie.cc.

Function Documentation

◆ ui_block_func_PIE()

◆ UI_pie_menu_begin()

◆ UI_pie_menu_end()

◆ UI_pie_menu_invoke()

◆ UI_pie_menu_layout()

uiLayout * UI_pie_menu_layout ( uiPieMenu * pie)

Definition at line 188 of file interface_region_menu_pie.cc.

References uiPieMenu::layout.

Referenced by UI_pie_menu_invoke(), and ui_pie_menu_level_invoke().

◆ ui_pie_menu_level_create()

◆ ui_pie_menu_level_invoke()

◆ ui_pie_menu_title_width()

float ui_pie_menu_title_width ( const char * name,
int icon )
static

Definition at line 86 of file interface_region_menu_pie.cc.

References name, UI_fontstyle_string_width(), UI_FSTYLE_WIDGET, and UI_UNIT_X.

Referenced by UI_pie_menu_begin().