796077eca7cb332137f0b9a271ece8b341d0bfd1
[blender.git] / source / blender / editors / interface / interface_api.c
1 /**
2  * $Id:
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. 
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2009 Blender Foundation.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Blender Foundation
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28
29 #include <stdlib.h>
30 #include <stdio.h>
31
32 #include "RNA_define.h"
33 #include "RNA_types.h"
34
35 #include "UI_interface.h"
36
37 static void api_ui_item_common(FunctionRNA *func)
38 {
39         RNA_def_string(func, "text", "", 0, "", "Override automatic text of the item.");
40         RNA_def_int(func, "icon", 0, 0, INT_MAX, "", "Override automatic icon of the item.", 0, INT_MAX);
41 }
42
43 void RNA_api_ui_layout(StructRNA *srna)
44 {
45         FunctionRNA *func;
46         PropertyRNA *parm;
47
48         static EnumPropertyItem slot_items[]= {
49                 {0, "DEFAULT", "Default", ""},
50                 {UI_TSLOT_COLUMN_1, "COLUMN_1", "Column 1", ""},
51                 {UI_TSLOT_COLUMN_2, "COLUMN_2", "Column 2", ""},
52                 {UI_TSLOT_COLUMN_3, "COLUMN_3", "Column 3", ""},
53                 {UI_TSLOT_COLUMN_4, "COLUMN_4", "Column 4", ""},
54                 {UI_TSLOT_COLUMN_5, "COLUMN_5", "Column 5", ""},
55                 {UI_TSLOT_LR_LEFT, "LEFT", "Left", ""},
56                 {UI_TSLOT_LR_RIGHT, "RIGHT", "Right", ""},
57                 {0, NULL, NULL, NULL}
58         };
59
60         /* templates */
61         func= RNA_def_function(srna, "template_column", "uiTemplateColumn");
62         func= RNA_def_function(srna, "template_left_right", "uiTemplateLeftRight");
63
64         func= RNA_def_function(srna, "template_column_flow", "uiTemplateColumnFlow");
65         parm= RNA_def_int(func, "columns", 0, 0, INT_MAX, "", "Number of columns.", 0, INT_MAX);
66         RNA_def_property_flag(parm, PROP_REQUIRED);
67
68         func= RNA_def_function(srna, "template_stack", "uiTemplateStack");
69         parm= RNA_def_pointer(func, "sub_layout", "UILayout", "", "Sub-layout to put stack items in.");
70         RNA_def_function_return(func, parm);
71
72         func= RNA_def_function(srna, "template_header_menus", "uiTemplateHeaderMenus");
73         func= RNA_def_function(srna, "template_header_buttons", "uiTemplateHeaderButtons");
74         //func= RNA_def_function(srna, "template_header_ID", "uiTemplateHeaderID");
75
76         func= RNA_def_function(srna, "template_slot", "uiTemplateSlot");
77         parm= RNA_def_enum(func, "slot", slot_items, 0, "", "Where in the template to put the following items.");
78         RNA_def_property_flag(parm, PROP_REQUIRED);
79
80         /* items */
81         func= RNA_def_function(srna, "itemR", "uiItemR");
82         api_ui_item_common(func);
83         parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
84         RNA_def_property_flag(parm, PROP_REQUIRED);
85         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
86         RNA_def_property_flag(parm, PROP_REQUIRED);
87
88         func= RNA_def_function(srna, "itemO", "uiItemO");
89         api_ui_item_common(func);
90         parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
91         RNA_def_property_flag(parm, PROP_REQUIRED);
92
93         func= RNA_def_function(srna, "itemL", "uiItemL");
94         api_ui_item_common(func);
95 }
96