fix for compiling with the c90 standard, support for non-static variable initializers...
[blender.git] / source / blender / makesrna / intern / rna_ui_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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
34 #include "UI_resources.h"
35
36 #ifdef RNA_RUNTIME
37
38 static void rna_uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, char *name, int icon, int expand, int slider, int toggle, int icon_only, int event, int full_event, int emboss, int index)
39 {
40         PropertyRNA *prop= RNA_struct_find_property(ptr, propname);
41         int flag= 0;
42
43         if(!prop) {
44                 printf("rna_uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
45                 return;
46         }
47
48         flag |= (slider)? UI_ITEM_R_SLIDER: 0;
49         flag |= (expand)? UI_ITEM_R_EXPAND: 0;
50         flag |= (toggle)? UI_ITEM_R_TOGGLE: 0;
51         flag |= (icon_only)? UI_ITEM_R_ICON_ONLY: 0;
52         flag |= (event)? UI_ITEM_R_EVENT: 0;
53         flag |= (full_event)? UI_ITEM_R_FULL_EVENT: 0;
54         flag |= (emboss)? 0: UI_ITEM_R_NO_BG;
55
56         uiItemFullR(layout, ptr, prop, index, 0, flag, name, icon);
57 }
58
59 static PointerRNA rna_uiItemO(uiLayout *layout, char *opname, char *name, int icon, int emboss)
60 {
61         int flag= UI_ITEM_O_RETURN_PROPS;
62         flag |= (emboss)? 0: UI_ITEM_R_NO_BG;
63         return uiItemFullO(layout, opname, name, icon, NULL, uiLayoutGetOperatorContext(layout), flag);
64 }
65
66 #else
67
68 #define DEF_ICON(name) {ICON_##name, (#name), 0, (#name), ""},
69 #define DEF_VICO(name) {VICO_##name, (#name), 0, (#name), ""},
70
71 static EnumPropertyItem icon_items[] = {
72 #include "UI_icons.h"
73                 {0, NULL, 0, NULL, NULL}};
74 #undef DEF_ICON
75 #undef DEF_VICO
76
77 static void api_ui_item_common(FunctionRNA *func)
78 {
79         PropertyRNA *prop;
80
81         RNA_def_string(func, "text", "", 0, "", "Override automatic text of the item.");
82
83         prop= RNA_def_property(func, "icon", PROP_ENUM, PROP_NONE);
84         RNA_def_property_enum_items(prop, icon_items);
85         RNA_def_property_ui_text(prop, "Icon", "Override automatic icon of the item");
86
87 }
88
89 static void api_ui_item_op(FunctionRNA *func)
90 {
91         PropertyRNA *parm;
92         parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
93         RNA_def_property_flag(parm, PROP_REQUIRED);
94 }
95
96 static void api_ui_item_op_common(FunctionRNA *func)
97 {
98         api_ui_item_op(func);
99         api_ui_item_common(func);
100 }
101
102 static void api_ui_item_rna_common(FunctionRNA *func)
103 {
104         PropertyRNA *parm;
105
106         parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
107         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
108         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
109         RNA_def_property_flag(parm, PROP_REQUIRED);
110 }
111
112 void RNA_api_ui_layout(StructRNA *srna)
113 {
114         FunctionRNA *func;
115         PropertyRNA *parm;
116
117         static EnumPropertyItem curve_type_items[] = {
118                 {0, "NONE", 0, "None", ""},
119                 {'v', "VECTOR", 0, "Vector", ""},
120                 {'c', "COLOR", 0, "Color", ""},
121                 {0, NULL, 0, NULL, NULL}};
122         
123         static EnumPropertyItem list_type_items[] = {
124                 {0, "DEFAULT", 0, "None", ""},
125                 {'c', "COMPACT", 0, "Compact", ""},
126                 {'i', "ICONS", 0, "Icons", ""},
127                 {0, NULL, 0, NULL, NULL}};
128
129         /* simple layout specifiers */
130         func= RNA_def_function(srna, "row", "uiLayoutRow");
131         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
132         RNA_def_function_return(func, parm);
133         RNA_def_function_ui_description(func, "Sub-layout. Items placed in this sublayout are placed next to each other in a row.");
134         RNA_def_boolean(func, "align", 0, "", "Align buttons to each other.");
135         
136         func= RNA_def_function(srna, "column", "uiLayoutColumn");
137         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
138         RNA_def_function_return(func, parm);
139         RNA_def_function_ui_description(func, "Sub-layout. Items placed in this sublayout are placed under each other in a column.");
140         RNA_def_boolean(func, "align", 0, "", "Align buttons to each other.");
141
142         func= RNA_def_function(srna, "column_flow", "uiLayoutColumnFlow");
143         parm= RNA_def_int(func, "columns", 0, 0, INT_MAX, "", "Number of columns, 0 is automatic.", 0, INT_MAX);
144         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
145         RNA_def_function_return(func, parm);
146         RNA_def_boolean(func, "align", 0, "", "Align buttons to each other.");
147
148         /* box layout */
149         func= RNA_def_function(srna, "box", "uiLayoutBox");
150         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
151         RNA_def_function_return(func, parm);
152         RNA_def_function_ui_description(func, "Sublayout. Items placed in this sublayout are placed under each other in a column and are surrounded by a box.");
153         
154         /* split layout */
155         func= RNA_def_function(srna, "split", "uiLayoutSplit");
156         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
157         RNA_def_function_return(func, parm);
158         RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
159         RNA_def_boolean(func, "align", 0, "", "Align buttons to each other.");
160
161         /* items */
162         func= RNA_def_function(srna, "prop", "rna_uiItemR");
163         RNA_def_function_ui_description(func, "Item. Exposes an RNA item and places it into the layout.");
164         api_ui_item_rna_common(func);
165         api_ui_item_common(func);
166         RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
167         RNA_def_boolean(func, "slider", 0, "", "Use slider widget for numeric values.");
168         RNA_def_boolean(func, "toggle", 0, "", "Use toggle widget for boolean values.");
169         RNA_def_boolean(func, "icon_only", 0, "", "Draw only icons in buttons, no text.");
170         RNA_def_boolean(func, "event", 0, "", "Use button to input key events.");
171         RNA_def_boolean(func, "full_event", 0, "", "Use button to input full events including modifiers.");
172         RNA_def_boolean(func, "emboss", 1, "", "Draw the button itself, just the icon/text.");
173         RNA_def_int(func, "index", -1, -2, INT_MAX, "", "The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used.", -2, INT_MAX); /* RNA_NO_INDEX == -1 */
174
175         func= RNA_def_function(srna, "props_enum", "uiItemsEnumR");
176         api_ui_item_rna_common(func);
177
178         func= RNA_def_function(srna, "prop_menu_enum", "uiItemMenuEnumR");
179         api_ui_item_rna_common(func);
180         api_ui_item_common(func);
181
182         func= RNA_def_function(srna, "prop_enum", "uiItemEnumR_string");
183         api_ui_item_rna_common(func);
184         parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
185         RNA_def_property_flag(parm, PROP_REQUIRED);
186         api_ui_item_common(func);
187
188         func= RNA_def_function(srna, "prop_search", "uiItemPointerR");
189         api_ui_item_rna_common(func);
190         parm= RNA_def_pointer(func, "search_data", "AnyType", "", "Data from which to take collection to search in.");
191         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
192         parm= RNA_def_string(func, "search_property", "", 0, "", "Identifier of search collection property.");
193         RNA_def_property_flag(parm, PROP_REQUIRED);
194         api_ui_item_common(func);
195
196         func= RNA_def_function(srna, "operator", "rna_uiItemO");
197         api_ui_item_op_common(func);
198         RNA_def_boolean(func, "emboss", 1, "", "Draw the button itself, just the icon/text.");
199         parm= RNA_def_pointer(func, "properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true.");
200         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
201         RNA_def_function_return(func, parm);
202         RNA_def_function_ui_description(func, "Item. Places a button into the layout to call an Operator.");
203
204 /*      func= RNA_def_function(srna, "operator_enum", "uiItemEnumO_string");
205         api_ui_item_op_common(func);
206         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
207         RNA_def_property_flag(parm, PROP_REQUIRED);
208         parm= RNA_def_string(func, "value", "", 0, "", "Enum property value.");
209         RNA_def_property_flag(parm, PROP_REQUIRED); */
210
211         func= RNA_def_function(srna, "operator_enums", "uiItemsEnumO");
212         parm= RNA_def_string(func, "operator", "", 0, "", "Identifier of the operator.");
213         RNA_def_property_flag(parm, PROP_REQUIRED);
214         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
215         RNA_def_property_flag(parm, PROP_REQUIRED);
216
217         func= RNA_def_function(srna, "operator_menu_enum", "uiItemMenuEnumO");
218         api_ui_item_op(func); /* cant use api_ui_item_op_common because property must come right after */
219         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
220         RNA_def_property_flag(parm, PROP_REQUIRED);
221         api_ui_item_common(func);
222
223 /*      func= RNA_def_function(srna, "operator_boolean", "uiItemBooleanO");
224         api_ui_item_op_common(func);
225         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
226         RNA_def_property_flag(parm, PROP_REQUIRED);
227         parm= RNA_def_boolean(func, "value", 0, "", "Value of the property to call the operator with.");
228         RNA_def_property_flag(parm, PROP_REQUIRED); */
229
230 /*      func= RNA_def_function(srna, "operator_int", "uiItemIntO");
231         api_ui_item_op_common(func);
232         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
233         RNA_def_property_flag(parm, PROP_REQUIRED);
234         parm= RNA_def_int(func, "value", 0, INT_MIN, INT_MAX, "", "Value of the property to call the operator with.", INT_MIN, INT_MAX);
235         RNA_def_property_flag(parm, PROP_REQUIRED); */
236
237 /*      func= RNA_def_function(srna, "operator_float", "uiItemFloatO");
238         api_ui_item_op_common(func);
239         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
240         RNA_def_property_flag(parm, PROP_REQUIRED);
241         parm= RNA_def_float(func, "value", 0, -FLT_MAX, FLT_MAX, "", "Value of the property to call the operator with.", -FLT_MAX, FLT_MAX);
242         RNA_def_property_flag(parm, PROP_REQUIRED); */
243
244 /*      func= RNA_def_function(srna, "operator_string", "uiItemStringO");
245         api_ui_item_op_common(func);
246         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in operator.");
247         RNA_def_property_flag(parm, PROP_REQUIRED);
248         parm= RNA_def_string(func, "value", "", 0, "", "Value of the property to call the operator with.");
249         RNA_def_property_flag(parm, PROP_REQUIRED); */
250
251         func= RNA_def_function(srna, "label", "uiItemL");
252         RNA_def_function_ui_description(func, "Item. Display text in the layout.");
253         api_ui_item_common(func);
254
255         func= RNA_def_function(srna, "menu", "uiItemM");
256         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
257         parm= RNA_def_string(func, "menu", "", 0, "", "Identifier of the menu.");
258         api_ui_item_common(func);
259         RNA_def_property_flag(parm, PROP_REQUIRED);
260
261         func= RNA_def_function(srna, "separator", "uiItemS");
262         RNA_def_function_ui_description(func, "Item. Inserts empty space into the layout between items.");
263
264         /* context */
265         func= RNA_def_function(srna, "context_pointer_set", "uiLayoutSetContextPointer");
266         parm= RNA_def_string(func, "name", "", 0, "Name", "Name of entry in the context.");
267         RNA_def_property_flag(parm, PROP_REQUIRED);
268         parm= RNA_def_pointer(func, "data", "AnyType", "", "Pointer to put in context.");
269         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
270         
271         /* templates */
272         func= RNA_def_function(srna, "template_header", "uiTemplateHeader");
273         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
274         RNA_def_boolean(func, "menus", 1, "", "The header has menus, and should show menu expander.");
275
276         func= RNA_def_function(srna, "template_ID", "uiTemplateID");
277         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
278         api_ui_item_rna_common(func);
279         RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block.");
280         RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a file for creating a new ID block.");
281         RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block.");
282         
283         func= RNA_def_function(srna, "template_ID_preview", "uiTemplateIDPreview");
284         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
285         api_ui_item_rna_common(func);
286         RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block.");
287         RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a file for creating a new ID block.");
288         RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block.");
289         RNA_def_int(func, "rows", 0, 0, INT_MAX, "Number of thumbnail preview rows to display", "", 0, INT_MAX);
290         RNA_def_int(func, "cols", 0, 0, INT_MAX, "Number of thumbnail preview columns to display", "", 0, INT_MAX);
291         
292         func= RNA_def_function(srna, "template_any_ID", "uiTemplateAnyID");
293         parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
294         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
295         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
296         RNA_def_property_flag(parm, PROP_REQUIRED);
297         parm= RNA_def_string(func, "type_property", "", 0, "", "Identifier of property in data giving the type of the ID-blocks to use.");
298         RNA_def_property_flag(parm, PROP_REQUIRED);
299         parm= RNA_def_string(func, "text", "", 0, "", "Custom label to display in UI.");
300         
301         func= RNA_def_function(srna, "template_path_builder", "uiTemplatePathBuilder");
302         parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
303         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
304         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
305         RNA_def_property_flag(parm, PROP_REQUIRED);
306         parm= RNA_def_pointer(func, "root", "ID", "", "ID-block from which path is evaluated from.");
307         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
308         parm= RNA_def_string(func, "text", "", 0, "", "Custom label to display in UI.");
309         
310         func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier");
311         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
312         RNA_def_function_ui_description(func, "Layout . Generates the UI layout for modifiers.");
313         parm= RNA_def_pointer(func, "data", "Modifier", "", "Modifier data.");
314         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
315         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
316         RNA_def_function_return(func, parm);
317
318         func= RNA_def_function(srna, "template_constraint", "uiTemplateConstraint");
319         RNA_def_function_ui_description(func, "Layout . Generates the UI layout for constraints.");
320         parm= RNA_def_pointer(func, "data", "Constraint", "", "Constraint data.");
321         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
322         parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
323         RNA_def_function_return(func, parm);
324
325         func= RNA_def_function(srna, "template_preview", "uiTemplatePreview");
326         RNA_def_function_ui_description(func, "Item. A preview window for materials, textures, lamps, etc.");
327         parm= RNA_def_pointer(func, "id", "ID", "", "ID datablock.");
328         RNA_def_property_flag(parm, PROP_REQUIRED);
329         RNA_def_pointer(func, "parent", "ID", "", "ID datablock.");
330         RNA_def_pointer(func, "slot", "TextureSlot", "", "Texture slot.");
331
332         func= RNA_def_function(srna, "template_curve_mapping", "uiTemplateCurveMapping");
333         RNA_def_function_ui_description(func, "Item. A curve mapping widget used for e.g falloff curves for lamps.");
334         api_ui_item_rna_common(func);
335         RNA_def_enum(func, "type", curve_type_items, 0, "Type", "Type of curves to display.");
336         RNA_def_boolean(func, "levels", 0, "", "Show black/white levels.");
337         RNA_def_boolean(func, "brush", 0, "", "Show brush options.");
338
339         func= RNA_def_function(srna, "template_color_ramp", "uiTemplateColorRamp");
340         RNA_def_function_ui_description(func, "Item. A color ramp widget.");
341         api_ui_item_rna_common(func);
342         RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
343         
344         func= RNA_def_function(srna, "template_histogram", "uiTemplateHistogram");
345         RNA_def_function_ui_description(func, "Item. A histogramm widget to analyze imaga data.");
346         api_ui_item_rna_common(func);
347         
348         func= RNA_def_function(srna, "template_waveform", "uiTemplateWaveform");
349         RNA_def_function_ui_description(func, "Item. A waveform widget to analyze imaga data.");
350         api_ui_item_rna_common(func);
351         
352         func= RNA_def_function(srna, "template_vectorscope", "uiTemplateVectorscope");
353         RNA_def_function_ui_description(func, "Item. A vectorscope widget to analyze imaga data.");
354         api_ui_item_rna_common(func);
355         
356         func= RNA_def_function(srna, "template_layers", "uiTemplateLayers");
357         api_ui_item_rna_common(func);
358         parm= RNA_def_pointer(func, "used_layers_data", "AnyType", "", "Data from which to take property.");
359         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
360         parm= RNA_def_string(func, "used_layers_property", "", 0, "", "Identifier of property in data.");
361         RNA_def_property_flag(parm, PROP_REQUIRED);
362         parm= RNA_def_int(func, "active_layer", 0, 0, INT_MAX, "Active Layer", "", 0, INT_MAX);
363         RNA_def_property_flag(parm, PROP_REQUIRED);
364         
365         func= RNA_def_function(srna, "template_color_wheel", "uiTemplateColorWheel");
366         RNA_def_function_ui_description(func, "Item. A color wheel widget to pick colors.");
367         api_ui_item_rna_common(func);
368         RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel");
369         RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color");
370         RNA_def_boolean(func, "lock_luminosity", 0, "", "Keep the color at its original vector length");
371         RNA_def_boolean(func, "cubic", 1, "", "Cubic saturation for picking values close to white");
372
373         func= RNA_def_function(srna, "template_image_layers", "uiTemplateImageLayers");
374         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
375         parm= RNA_def_pointer(func, "image", "Image", "", "");
376         RNA_def_property_flag(parm, PROP_REQUIRED);
377         parm= RNA_def_pointer(func, "image_user", "ImageUser", "", "");
378         RNA_def_property_flag(parm, PROP_REQUIRED);
379
380         func= RNA_def_function(srna, "template_image", "uiTemplateImage");
381         RNA_def_function_ui_description(func, "Item(s). User interface for selecting images and their source paths.");
382         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
383         api_ui_item_rna_common(func);
384         parm= RNA_def_pointer(func, "image_user", "ImageUser", "", "");
385         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
386         RNA_def_boolean(func, "compact", 0, "", "Use more compact layout.");
387
388         func= RNA_def_function(srna, "template_list", "uiTemplateList");
389         RNA_def_function_ui_description(func, "Item. A list widget to display data. e.g. vertexgroups.");
390         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
391         parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property.");
392         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
393         parm= RNA_def_string(func, "property", "", 0, "", "Identifier of property in data.");
394         RNA_def_property_flag(parm, PROP_REQUIRED);
395         parm= RNA_def_pointer(func, "active_data", "AnyType", "", "Data from which to take property for the active element.");
396         RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
397         parm= RNA_def_string(func, "active_property", "", 0, "", "Identifier of property in data, for the active element.");
398         RNA_def_property_flag(parm, PROP_REQUIRED);
399         parm= RNA_def_int(func, "rows", 5, 0, INT_MAX, "", "Number of rows to display.", 0, INT_MAX);
400         parm= RNA_def_int(func, "maxrows", 5, 0, INT_MAX, "", "Maximum number of rows to display.", 0, INT_MAX);
401         parm= RNA_def_enum(func, "type", list_type_items, 0, "Type", "Type of list to use.");
402
403         func= RNA_def_function(srna, "template_running_jobs", "uiTemplateRunningJobs");
404         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
405
406         func= RNA_def_function(srna, "template_operator_search", "uiTemplateOperatorSearch");
407
408         func= RNA_def_function(srna, "template_header_3D", "uiTemplateHeader3D");
409         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
410         
411         func= RNA_def_function(srna, "template_reports_banner", "uiTemplateReportsBanner");
412         RNA_def_function_flag(func, FUNC_USE_CONTEXT);
413
414         func= RNA_def_function(srna, "introspect", "uiLayoutIntrospect");
415         parm= RNA_def_string(func, "string", "", 1024*1024, "Descr", "DESCR");
416         RNA_def_function_return(func, parm);
417 }
418 #endif
419