diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-06-01 08:06:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-06-01 08:06:38 +0400 |
commit | 2d4a682a8e48e41af2867bc71a621eb0fac27b1e (patch) | |
tree | 040f6811f870d72f8268250b61f719b3eef2f0a7 /source/blender/makesrna/intern/rna_wm.c | |
parent | 0ad88d1001449f71b9448e237e6f05fb244f1a85 (diff) |
add popup menu to allow python scripts to show popups without having to define a menu class first.
Diffstat (limited to 'source/blender/makesrna/intern/rna_wm.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_wm.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index aae1581def6..1bd1e48e768 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -450,6 +450,8 @@ EnumPropertyItem wm_report_items[] = { #include "WM_api.h" +#include "UI_interface.h" + #include "BKE_idprop.h" #include "MEM_guardedalloc.h" @@ -561,6 +563,17 @@ static int rna_Event_unicode_length(PointerRNA *ptr) } } +static PointerRNA rna_PopupMenu_layout_get(PointerRNA *ptr) +{ + struct uiPopupMenu *pup = ptr->data; + uiLayout *layout = uiPupMenuLayout(pup); + + PointerRNA rptr; + RNA_pointer_create(ptr->id.data, &RNA_UILayout, layout, &rptr); + + return rptr; +} + static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value) { wmWindow *win = (wmWindow *)ptr->data; @@ -1659,6 +1672,26 @@ static void rna_def_timer(BlenderRNA *brna) RNA_define_verify_sdna(1); /* not in sdna */ } +static void rna_def_popupmenu(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "UIPopupMenu", NULL); + RNA_def_struct_ui_text(srna, "PopupMenu", ""); + RNA_def_struct_sdna(srna, "uiPopupMenu"); + + RNA_define_verify_sdna(0); /* not in sdna */ + + /* could wrap more, for now this is enough */ + prop = RNA_def_property(srna, "layout", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "UILayout"); + RNA_def_property_pointer_funcs(prop, "rna_PopupMenu_layout_get", + NULL, NULL, NULL); + + RNA_define_verify_sdna(1); /* not in sdna */ +} + static void rna_def_window(BlenderRNA *brna) { StructRNA *srna; @@ -2018,6 +2051,7 @@ void RNA_def_wm(BlenderRNA *brna) rna_def_operator_type_macro(brna); rna_def_event(brna); rna_def_timer(brna); + rna_def_popupmenu(brna); rna_def_window(brna); rna_def_windowmanager(brna); rna_def_keyconfig(brna); |