From dd8e2897ba19daac5191a341add9955e00798262 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 6 Oct 2009 13:04:31 +0000 Subject: new operator - bpy.ops.wm.call_menu(name="SOME_MT_menu") This calls a registered menu as a popup so we can reuse header menus , currently used for Node editor and Sequencer add menu (Shift+A), can be used for toolbox too. --- .../blender/editors/interface/interface_regions.c | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'source/blender/editors/interface/interface_regions.c') diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 0f04333c6c5..dae4a54c233 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -2481,6 +2481,34 @@ void uiPupMenuReports(bContext *C, ReportList *reports) BLI_dynstr_free(ds); } +void uiPupMenuInvoke(bContext *C, const char *idname, int spacetype) +{ + uiPopupMenu *pup; + uiLayout *layout; + MenuType *mt= BKE_spacemenu_find(idname, spacetype); + + if(mt==NULL) { + printf("uiPupMenuInvoke: named menu \"%s\" not found\n", idname); + return; + } + + if(mt->poll && mt->poll(C, mt)==0) + return; + + pup= uiPupMenuBegin(C, mt->label, 0); + layout= uiPupMenuLayout(pup); + + Menu menu; + + menu.layout= layout; + menu.type= mt; + + mt->draw(C, &menu); + + uiPupMenuEnd(C, pup); +} + + /*************************** Popup Block API **************************/ void uiPupBlockO(bContext *C, uiBlockCreateFunc func, void *arg, char *opname, int opcontext) -- cgit v1.2.3