skip rna property & function lookups for members starting with "_" (since makesrna...
[blender.git] / release / scripts / ui / properties_data_text.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # <pep8 compliant>
20 import bpy
21
22
23 class DataButtonsPanel(bpy.types.Panel):
24     bl_space_type = 'PROPERTIES'
25     bl_region_type = 'WINDOW'
26     bl_context = "data"
27
28     def poll(self, context):
29         return (context.object and context.object.type == 'TEXT' and context.curve)
30
31
32 class DATA_PT_context_text(DataButtonsPanel):
33     bl_label = ""
34     bl_show_header = False
35
36     def draw(self, context):
37         layout = self.layout
38
39         ob = context.object
40         curve = context.curve
41         space = context.space_data
42
43         split = layout.split(percentage=0.65)
44
45         if ob:
46             split.template_ID(ob, "data")
47             split.itemS()
48         elif curve:
49             split.template_ID(space, "pin_id")
50             split.itemS()
51
52
53 class DATA_PT_shape_text(DataButtonsPanel):
54     bl_label = "Shape Text"
55
56     def draw(self, context):
57         layout = self.layout
58
59         curve = context.curve
60
61         split = layout.split()
62
63         col = split.column()
64         col.itemL(text="Caps:")
65         row = col.row()
66         row .itemR(curve, "front")
67         row .itemR(curve, "back")
68         # col = split.column()
69         col.itemL(text="Textures:")
70         col.itemR(curve, "uv_orco")
71         col.itemR(curve, "auto_texspace")
72
73         col = split.column()
74         col.itemL(text="Resolution:")
75         sub = col.column(align=True)
76         sub.itemR(curve, "resolution_u", text="Preview")
77         sub.itemR(curve, "render_resolution_u", text="Render")
78
79         # resolution_v is not used for text
80
81         sub = col.column(align=True)
82         col.itemL(text="Display:")
83         col.itemR(curve, "fast", text="Fast Editing")
84
85
86 class DATA_PT_geometry_text(DataButtonsPanel):
87     bl_label = "Geometry"
88
89     def draw(self, context):
90         layout = self.layout
91
92         curve = context.curve
93
94         split = layout.split()
95
96         col = split.column()
97         col.itemL(text="Modification:")
98         col.itemR(curve, "width")
99         col.itemR(curve, "extrude")
100         col.itemL(text="Taper Object:")
101         col.itemR(curve, "taper_object", text="")
102
103         col = split.column()
104         col.itemL(text="Bevel:")
105         col.itemR(curve, "bevel_depth", text="Depth")
106         col.itemR(curve, "bevel_resolution", text="Resolution")
107         col.itemL(text="Bevel Object:")
108         col.itemR(curve, "bevel_object", text="")
109
110
111 class DATA_PT_font(DataButtonsPanel):
112     bl_label = "Font"
113
114     def draw(self, context):
115         layout = self.layout
116
117         text = context.curve
118         char = context.curve.edit_format
119
120         layout.itemR(text, "font")
121
122         row = layout.row()
123         row.itemR(text, "text_size", text="Size")
124         row.itemR(text, "shear")
125
126         split = layout.split()
127
128         col = split.column()
129         col.itemL(text="Object Font:")
130         col.itemR(text, "family", text="")
131
132         col = split.column()
133         col.itemL(text="Text on Curve:")
134         col.itemR(text, "text_on_curve", text="")
135
136         split = layout.split()
137
138         col = split.column()
139         col.itemL(text="Character:")
140         col.itemR(char, "bold")
141         col.itemR(char, "italic")
142         col.itemR(char, "underline")
143 #               col.itemR(char, "style")
144 #               col.itemR(char, "wrap")
145
146         col = split.column(align=True)
147         col.itemL(text="Underline:")
148         col.itemR(text, "ul_position", text="Position")
149         col.itemR(text, "ul_height", text="Thickness")
150
151
152 class DATA_PT_paragraph(DataButtonsPanel):
153     bl_label = "Paragraph"
154
155     def draw(self, context):
156         layout = self.layout
157
158         text = context.curve
159
160         layout.itemL(text="Align:")
161         layout.itemR(text, "spacemode", expand=True)
162
163         split = layout.split()
164
165         col = split.column(align=True)
166         col.itemL(text="Spacing:")
167         col.itemR(text, "spacing", text="Character")
168         col.itemR(text, "word_spacing", text="Word")
169         col.itemR(text, "line_dist", text="Line")
170
171         col = split.column(align=True)
172         col.itemL(text="Offset:")
173         col.itemR(text, "offset_x", text="X")
174         col.itemR(text, "offset_y", text="Y")
175
176
177 class DATA_PT_textboxes(DataButtonsPanel):
178     bl_label = "Text Boxes"
179
180     def draw(self, context):
181         layout = self.layout
182
183         text = context.curve
184
185         for box in text.textboxes:
186             split = layout.box().split()
187
188             col = split.column(align=True)
189             col.itemL(text="Dimensions:")
190             col.itemR(box, "width", text="Width")
191             col.itemR(box, "height", text="Height")
192
193             col = split.column(align=True)
194             col.itemL(text="Offset:")
195             col.itemR(box, "x", text="X")
196             col.itemR(box, "y", text="Y")
197
198 bpy.types.register(DATA_PT_context_text)
199 bpy.types.register(DATA_PT_shape_text)
200 bpy.types.register(DATA_PT_geometry_text)
201 bpy.types.register(DATA_PT_font)
202 bpy.types.register(DATA_PT_paragraph)
203 bpy.types.register(DATA_PT_textboxes)