Blender V4.3
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_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 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)
 
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.

  • 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, const wmOperatorCallContext 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_invoke_from_operator_enum()

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

◆ UI_pie_menu_invoke_from_rna_enum()

◆ UI_pie_menu_layout()

◆ ui_pie_menu_level_create()

◆ ui_pie_menu_level_invoke()

◆ ui_pie_menu_title_width()

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

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().