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>2013-06-01 08:06:38 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-01 08:06:38 +0400
commit2d4a682a8e48e41af2867bc71a621eb0fac27b1e (patch)
tree040f6811f870d72f8268250b61f719b3eef2f0a7 /source/blender/makesrna/intern/rna_wm.c
parent0ad88d1001449f71b9448e237e6f05fb244f1a85 (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.c34
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);