Blender  V3.3
Classes
interface_region_menu_pie.cc File Reference
#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 uiBlockui_block_func_PIE (bContext *UNUSED(C), uiPopupBlockHandle *handle, void *arg_pie)
 
static float ui_pie_menu_title_width (const char *name, int icon)
 
uiPieMenuUI_pie_menu_begin (struct 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)
 
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.

  • 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 char *propname, IDProperty *properties, const EnumPropertyItem *items, int totitem, wmOperatorCallContext context, wmOperatorCallContext flag)
 

Detailed Description

Pie Menu Region

Definition in file interface_region_menu_pie.cc.

Function Documentation

◆ ui_block_func_PIE()

static uiBlock* ui_block_func_PIE ( bContext UNUSEDC,
uiPopupBlockHandle handle,
void arg_pie 
)
static

◆ UI_pie_menu_begin()

uiPieMenu* UI_pie_menu_begin ( struct bContext C,
const char *  title,
int  icon,
const wmEvent event 
)

◆ UI_pie_menu_end()

void UI_pie_menu_end ( bContext C,
uiPieMenu pie 
)

◆ UI_pie_menu_invoke()

int UI_pie_menu_invoke ( struct bContext C,
const char *  idname,
const wmEvent event 
)

◆ UI_pie_menu_invoke_from_operator_enum()

int UI_pie_menu_invoke_from_operator_enum ( struct bContext C,
const char *  title,
const char *  opname,
const char *  propname,
const wmEvent event 
)

◆ UI_pie_menu_invoke_from_rna_enum()

int UI_pie_menu_invoke_from_rna_enum ( struct bContext C,
const char *  title,
const char *  path,
const wmEvent event 
)

◆ UI_pie_menu_layout()

uiLayout* UI_pie_menu_layout ( uiPieMenu pie)

◆ ui_pie_menu_level_create()

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 
)

◆ ui_pie_menu_level_invoke()

static void ui_pie_menu_level_invoke ( bContext C,
void argN,
void arg2 
)
static

◆ ui_pie_menu_title_width()

static float ui_pie_menu_title_width ( const char *  name,
int  icon 
)
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().