RNA
[blender.git] / source / blender / makesrna / intern / rna_key.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  * Contributor(s): Blender Foundation (2008).
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 #include <stdlib.h>
26
27 #include "RNA_define.h"
28 #include "RNA_types.h"
29
30 #include "rna_internal.h"
31
32 #include "DNA_key_types.h"
33
34 #ifdef RNA_RUNTIME
35 #else
36
37 void RNA_def_keyblock(BlenderRNA *brna)
38 {
39         StructRNA *srna;
40         PropertyRNA *prop;
41
42         static EnumPropertyItem prop_keyblock_type_items[] = {
43                 {KEY_LINEAR, "KEY_LINEAR", "Linear", ""},
44                 {KEY_CARDINAL, "KEY_CARDINAL", "Cardinal", ""},
45                 {KEY_BSPLINE, "KEY_BSPLINE", "BSpline", ""},
46                 {0, NULL, NULL, NULL}};
47
48         srna= RNA_def_struct(brna, "KeyBlock", NULL, "KeyBlock");
49
50         prop= RNA_def_property(srna, "current_pos", PROP_FLOAT, PROP_NONE);
51         RNA_def_property_float_sdna(prop, NULL, "pos");
52         RNA_def_property_ui_text(prop, "CurrentPosition", "Current Position.");
53
54         prop= RNA_def_property(srna, "current_val", PROP_FLOAT, PROP_NONE);
55         RNA_def_property_float_sdna(prop, NULL, "curval");
56         RNA_def_property_ui_text(prop, "CurrentValue", "Current Value.");
57
58         prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
59         RNA_def_property_enum_sdna(prop, NULL, "type", 0);
60         RNA_def_property_enum_items(prop, prop_keyblock_type_items);
61         RNA_def_property_ui_text(prop, "Type", "");
62
63         prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
64         RNA_def_property_string_sdna(prop, NULL, "name");
65         RNA_def_property_ui_text(prop, "Name", "Current Shape Key name.");
66         RNA_def_property_string_maxlength(prop, 32);
67
68         prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
69         RNA_def_property_string_sdna(prop, NULL, "vgroup");
70         RNA_def_property_ui_text(prop, "Vertex Group", "");
71         RNA_def_property_string_maxlength(prop, 32);
72
73         /* XXX couldn't quite figure this one out: shape key number, channel code? */
74         prop= RNA_def_property(srna, "channel", PROP_INT, PROP_NONE);
75         RNA_def_property_int_sdna(prop, NULL, "adrcode");
76         RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
77         RNA_def_property_ui_text(prop, "Channel", "");
78
79         prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
80         RNA_def_property_boolean_sdna(prop, NULL, "relative", 1);
81         RNA_def_property_ui_text(prop, "Relative", "Makes Shape Keys relative.");
82
83         prop= RNA_def_property(srna, "slidermin", PROP_FLOAT, PROP_NONE);
84         RNA_def_property_float_sdna(prop, NULL, "slidermin");
85         RNA_def_property_ui_text(prop, "SliderMin", "Minimum for Slider.");
86
87         prop= RNA_def_property(srna, "slidermax", PROP_FLOAT, PROP_NONE);
88         RNA_def_property_float_sdna(prop, NULL, "slidermax");
89         RNA_def_property_ui_text(prop, "SliderMax", "Maximum for Slider.");
90
91 }
92
93 void RNA_def_key(BlenderRNA *brna)
94 {
95         StructRNA *srna;
96         PropertyRNA *prop;
97
98         RNA_def_keyblock(brna);
99
100         srna= RNA_def_struct(brna, "Key", "ID", "Key");
101
102         prop= RNA_def_property(srna, "refkey", PROP_POINTER, PROP_NONE);
103         RNA_def_property_struct_type(prop, "KeyBlock");
104         RNA_def_property_ui_text(prop, "Reference Key", "");
105
106         prop= RNA_def_property(srna, "keyblocks", PROP_COLLECTION, PROP_NONE);
107         RNA_def_property_collection_sdna(prop, NULL, "block", NULL);
108         RNA_def_property_struct_type(prop, "KeyBlock");
109         RNA_def_property_ui_text(prop, "KeyBlocks", "Key Blocks.");
110
111         prop= RNA_def_property(srna, "num_keyblocks", PROP_INT, PROP_NONE);
112         RNA_def_property_int_sdna(prop, NULL, "totkey");
113         RNA_def_property_ui_text(prop, "NumKeyBlocks", "Number of KeyBlocks.");
114         
115         prop= RNA_def_property(srna, "ipo", PROP_POINTER, PROP_NONE);
116         RNA_def_property_struct_type(prop, "Ipo");
117         RNA_def_property_ui_text(prop, "Ipo", "");
118
119         prop= RNA_def_property(srna, "from", PROP_POINTER, PROP_NONE);
120         RNA_def_property_struct_type(prop, "ID");
121         RNA_def_property_ui_text(prop, "From", "");
122
123         prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
124         RNA_def_property_boolean_sdna(prop, NULL, "type", 1);
125         RNA_def_property_ui_text(prop, "Relative", "");
126
127         prop= RNA_def_property(srna, "slurph", PROP_INT, PROP_NONE);
128         RNA_def_property_int_sdna(prop, NULL, "slurph");
129         RNA_def_property_ui_text(prop, "Slurph", "");
130
131
132 }
133
134 #endif
135