*More single column stuff.
[blender.git] / release / scripts / ui / properties_data_metaball.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 narrowui = 180
23
24 class DataButtonsPanel(bpy.types.Panel):
25     bl_space_type = 'PROPERTIES'
26     bl_region_type = 'WINDOW'
27     bl_context = "data"
28
29     def poll(self, context):
30         return context.meta_ball
31
32
33 class DATA_PT_context_metaball(DataButtonsPanel):
34     bl_label = ""
35     bl_show_header = False
36
37     def draw(self, context):
38         layout = self.layout
39
40         ob = context.object
41         mball = context.meta_ball
42         space = context.space_data
43         col2 = context.region.width > narrowui
44
45         if col2:
46             split = layout.split(percentage=0.65)
47             if ob:
48                 split.template_ID(ob, "data")
49                 split.itemS()
50             elif mball:
51                 split.template_ID(space, "pin_id")
52                 split.itemS()
53         else:
54             if ob:
55                 layout.template_ID(ob, "data")
56             elif mball:
57                 layout.template_ID(space, "pin_id")
58
59
60 class DATA_PT_metaball(DataButtonsPanel):
61     bl_label = "Metaball"
62
63     def draw(self, context):
64         layout = self.layout
65
66         mball = context.meta_ball
67         col2 = context.region.width > narrowui
68
69         split = layout.split()
70
71         col = split.column()
72         col.itemL(text="Resolution:")
73         sub = col.column(align=True)
74         sub.itemR(mball, "wire_size", text="View")
75         sub.itemR(mball, "render_size", text="Render")
76
77         if col2:
78             col = split.column()
79         col.itemL(text="Settings:")
80         col.itemR(mball, "threshold", text="Threshold")
81
82         layout.itemL(text="Update:")
83         if col2:
84             layout.itemR(mball, "flag", expand=True)
85         else:
86             layout.itemR(mball, "flag", text="")
87
88
89 class DATA_PT_metaball_element(DataButtonsPanel):
90     bl_label = "Active Element"
91
92     def poll(self, context):
93         return (context.meta_ball and context.meta_ball.active_element)
94
95     def draw(self, context):
96         layout = self.layout
97
98         metaelem = context.meta_ball.active_element
99         col2 = context.region.width > narrowui
100
101         if col2:
102             layout.itemR(metaelem, "type")
103         else:
104             layout.itemR(metaelem, "type", text="")
105
106         split = layout.split()
107
108         col = split.column(align=True)
109         col.itemL(text="Settings:")
110         col.itemR(metaelem, "stiffness", text="Stiffness")
111         col.itemR(metaelem, "negative", text="Negative")
112         col.itemR(metaelem, "hide", text="Hide")
113         
114         if col2:
115             col = split.column(align=True)
116
117         if metaelem.type == 'CUBE':
118             col.itemL(text="Size:")
119             col.itemR(metaelem, "size_x", text="X")
120             col.itemR(metaelem, "size_y", text="Y")
121             col.itemR(metaelem, "size_z", text="Z")
122
123         elif metaelem.type == 'TUBE':
124             col.itemL(text="Size:")
125             col.itemR(metaelem, "size_x", text="X")
126
127         elif metaelem.type == 'PLANE':
128             col.itemL(text="Size:")
129             col.itemR(metaelem, "size_x", text="X")
130             col.itemR(metaelem, "size_y", text="Y")
131
132         elif metaelem.type == 'ELLIPSOID':
133             col.itemL(text="Size:")
134             col.itemR(metaelem, "size_x", text="X")
135             col.itemR(metaelem, "size_y", text="Y")
136             col.itemR(metaelem, "size_z", text="Z")
137
138 bpy.types.register(DATA_PT_context_metaball)
139 bpy.types.register(DATA_PT_metaball)
140 bpy.types.register(DATA_PT_metaball_element)