Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-10-06 17:04:31 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-10-06 17:04:31 +0400
commitdd8e2897ba19daac5191a341add9955e00798262 (patch)
treeda30b474f92eb4c88887a061c31e19d7bb726151 /source/blender/editors/interface/interface_regions.c
parent2011ba50c84d61eff998812944354d444bd00041 (diff)
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.
Diffstat (limited to 'source/blender/editors/interface/interface_regions.c')
-rw-r--r--source/blender/editors/interface/interface_regions.c28
1 files changed, 28 insertions, 0 deletions
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)