| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | # ##### BEGIN GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #  This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | #  modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | #  as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | #  of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2009-11-03 07:23:02 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | #  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | #  GNU General Public License for more details. | 
					
						
							| 
									
										
										
										
											2009-11-03 07:23:02 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | #  You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | #  along with this program; if not, write to the Free Software Foundation, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  | #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2009-11-01 15:21:20 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							| 
									
										
										
										
											2009-10-31 20:16:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | # <pep8 compliant> | 
					
						
							| 
									
										
										
										
											2009-05-21 21:23:36 +00:00
										 |  |  | import bpy | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | from bpy.types import Menu, Panel | 
					
						
							| 
									
										
										
										
											2010-01-08 08:54:41 +00:00
										 |  |  | from rna_prop_ui import PropertyPanel | 
					
						
							| 
									
										
										
										
											2009-05-21 21:23:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-14 13:35:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class MESH_MT_vertex_group_specials(Menu): | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |     bl_label = "Vertex Group Specials" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							| 
									
										
										
										
											2010-02-22 23:32:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |         layout.operator("object.vertex_group_sort", icon='SORTALPHA') | 
					
						
							|  |  |  |         layout.operator("object.vertex_group_copy", icon='COPY_ID') | 
					
						
							|  |  |  |         layout.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA') | 
					
						
							| 
									
										
										
										
											2010-02-09 22:00:19 +00:00
										 |  |  |         layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA') | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |         layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT') | 
					
						
							| 
									
										
										
										
											2011-02-10 14:59:17 +00:00
										 |  |  |         layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class MESH_MT_shape_key_specials(Menu): | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |     bl_label = "Shape Key Specials" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-07 15:17:42 +00:00
										 |  |  |         layout.operator("object.shape_key_transfer", icon='COPY_ID')  # icon is not ideal | 
					
						
							|  |  |  |         layout.operator("object.join_shapes", icon='COPY_ID')  # icon is not ideal | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |         layout.operator("object.shape_key_mirror", icon='ARROW_LEFTRIGHT') | 
					
						
							| 
									
										
										
										
											2011-05-14 20:23:05 +00:00
										 |  |  |         op = layout.operator("object.shape_key_add", icon='ZOOMIN', text="New Shape From Mix") | 
					
						
							|  |  |  |         op.from_mix = True | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  | class MeshButtonsPanel(): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_space_type = 'PROPERTIES' | 
					
						
							|  |  |  |     bl_region_type = 'WINDOW' | 
					
						
							|  |  |  |     bl_context = "data" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         engine = context.scene.render.engine | 
					
						
							|  |  |  |         return context.mesh and (engine in cls.COMPAT_ENGINES) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_context_mesh(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "" | 
					
						
							| 
									
										
										
										
											2010-08-26 01:05:37 +00:00
										 |  |  |     bl_options = {'HIDE_HEADER'} | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  |         mesh = context.mesh | 
					
						
							|  |  |  |         space = context.space_data | 
					
						
							| 
									
										
										
										
											2011-08-22 22:26:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         if ob: | 
					
						
							| 
									
										
										
										
											2010-12-30 12:22:28 +00:00
										 |  |  |             layout.template_ID(ob, "data") | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |         elif mesh: | 
					
						
							| 
									
										
										
										
											2010-12-30 12:22:28 +00:00
										 |  |  |             layout.template_ID(space, "pin_id") | 
					
						
							| 
									
										
										
										
											2009-06-07 13:36:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_normals(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Normals" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         mesh = context.mesh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         split = layout.split() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         col = split.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |         col.prop(mesh, "use_auto_smooth") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         sub = col.column() | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |         sub.active = mesh.use_auto_smooth | 
					
						
							|  |  |  |         sub.prop(mesh, "auto_smooth_angle", text="Angle") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 16:04:14 +00:00
										 |  |  |         split.prop(mesh, "show_double_sided") | 
					
						
							| 
									
										
										
										
											2009-08-06 23:34:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_texture_space(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2011-06-06 19:44:28 +00:00
										 |  |  |     bl_label = "Texture Space" | 
					
						
							|  |  |  |     bl_options = {'DEFAULT_CLOSED'} | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         mesh = context.mesh | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |         layout.prop(mesh, "texture_mesh") | 
					
						
							| 
									
										
										
										
											2011-06-06 19:44:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         layout.separator() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-06 09:55:20 +00:00
										 |  |  |         layout.prop(mesh, "use_auto_texspace") | 
					
						
							| 
									
										
										
										
											2011-06-04 08:09:34 +00:00
										 |  |  |         row = layout.row() | 
					
						
							| 
									
										
										
										
											2011-06-06 19:44:28 +00:00
										 |  |  |         row.column().prop(mesh, "texspace_location", text="Location") | 
					
						
							|  |  |  |         row.column().prop(mesh, "texspace_size", text="Size") | 
					
						
							| 
									
										
										
										
											2011-01-06 09:55:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-07 09:23:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_vertex_groups(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Vertex Groups" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-05 16:05:30 +00:00
										 |  |  |         obj = context.object | 
					
						
							| 
									
										
										
										
											2011-03-07 13:23:45 +00:00
										 |  |  |         return (obj and obj.type in {'MESH', 'LATTICE'} and (engine in cls.COMPAT_ENGINES)) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							| 
									
										
										
										
											2010-08-24 04:02:50 +00:00
										 |  |  |         group = ob.vertex_groups.active | 
					
						
							| 
									
										
										
										
											2011-05-27 19:13:54 +00:00
										 |  |  |          | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         rows = 2 | 
					
						
							|  |  |  |         if group: | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  |             rows = 5 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							| 
									
										
										
										
											2010-08-24 04:02:50 +00:00
										 |  |  |         row.template_list(ob, "vertex_groups", ob.vertex_groups, "active_index", rows=rows) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         col = row.column(align=True) | 
					
						
							| 
									
										
										
										
											2011-06-03 16:08:03 +00:00
										 |  |  |         # Jason was here, this was replaced by hardcoded list view checkboxes. # | 
					
						
							|  |  |  |         #col.prop(group, "flag") | 
					
						
							| 
									
										
										
										
											2011-06-02 17:28:04 +00:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |         col.operator("object.vertex_group_add", icon='ZOOMIN', text="") | 
					
						
							|  |  |  |         col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="") | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |         col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="") | 
					
						
							| 
									
										
										
										
											2010-05-04 12:31:24 +00:00
										 |  |  |         if group: | 
					
						
							|  |  |  |             col.operator("object.vertex_group_move", icon='TRIA_UP', text="").direction = 'UP' | 
					
						
							|  |  |  |             col.operator("object.vertex_group_move", icon='TRIA_DOWN', text="").direction = 'DOWN' | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if group: | 
					
						
							|  |  |  |             row = layout.row() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             row.prop(group, "name") | 
					
						
							| 
									
										
										
										
											2011-06-02 17:28:04 +00:00
										 |  |  |         #Jason was here | 
					
						
							| 
									
										
										
										
											2011-07-07 17:59:15 +00:00
										 |  |  |         # add buttons to make it faster to lock/unlock vgroups | 
					
						
							| 
									
										
										
										
											2011-06-03 16:08:03 +00:00
										 |  |  |         if ob.mode == 'WEIGHT_PAINT' and len(ob.vertex_groups) > 0: | 
					
						
							|  |  |  |             row = layout.row() | 
					
						
							|  |  |  |             sub = row.row(align=True) | 
					
						
							|  |  |  |             sub.operator("object.vertex_group_lock_all", text="Lock All") | 
					
						
							|  |  |  |             sub.operator("object.vertex_group_invert_locks", text="Invert Locks") | 
					
						
							|  |  |  |             sub.operator("object.vertex_group_unlock_all", text="Unlock All") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0: | 
					
						
							|  |  |  |             row = layout.row() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             sub = row.row(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.operator("object.vertex_group_assign", text="Assign") | 
					
						
							|  |  |  |             sub.operator("object.vertex_group_remove_from", text="Remove") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             sub = row.row(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             sub.operator("object.vertex_group_select", text="Select") | 
					
						
							|  |  |  |             sub.operator("object.vertex_group_deselect", text="Deselect") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             layout.prop(context.tool_settings, "vertex_group_weight", text="Weight") | 
					
						
							| 
									
										
										
										
											2009-07-01 22:25:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_shape_keys(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Shape Keys" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |         engine = context.scene.render.engine | 
					
						
							| 
									
										
										
										
											2010-08-05 16:05:30 +00:00
										 |  |  |         obj = context.object | 
					
						
							| 
									
										
										
										
											2011-03-07 13:23:45 +00:00
										 |  |  |         return (obj and obj.type in {'MESH', 'LATTICE', 'CURVE', 'SURFACE'} and (engine in cls.COMPAT_ENGINES)) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ob = context.object | 
					
						
							|  |  |  |         key = ob.data.shape_keys | 
					
						
							| 
									
										
										
										
											2010-02-01 14:25:38 +00:00
										 |  |  |         kb = ob.active_shape_key | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         enable_edit = ob.mode != 'EDIT' | 
					
						
							|  |  |  |         enable_edit_value = False | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-12 22:20:10 +00:00
										 |  |  |         if ob.show_only_shape_key is False: | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             if enable_edit or (ob.type == 'MESH' and ob.use_shape_key_edit_mode): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 enable_edit_value = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rows = 2 | 
					
						
							|  |  |  |         if kb: | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  |             rows = 5 | 
					
						
							| 
									
										
										
										
											2011-03-25 02:12:44 +00:00
										 |  |  |         row.template_list(key, "key_blocks", ob, "active_shape_key_index", rows=rows) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         col = row.column() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |         sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2011-05-14 20:23:05 +00:00
										 |  |  |         op = sub.operator("object.shape_key_add", icon='ZOOMIN', text="") | 
					
						
							|  |  |  |         op.from_mix = False | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |         sub.operator("object.shape_key_remove", icon='ZOOMOUT', text="") | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |         sub.menu("MESH_MT_shape_key_specials", icon='DOWNARROW_HLT', text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if kb: | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             col.separator() | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |             sub = col.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |             sub.operator("object.shape_key_move", icon='TRIA_UP', text="").type = 'UP' | 
					
						
							|  |  |  |             sub.operator("object.shape_key_move", icon='TRIA_DOWN', text="").type = 'DOWN' | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             split = layout.split(percentage=0.4) | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |             row = split.row() | 
					
						
							|  |  |  |             row.enabled = enable_edit | 
					
						
							| 
									
										
										
										
											2010-08-18 07:14:10 +00:00
										 |  |  |             row.prop(key, "use_relative") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |             row = split.row() | 
					
						
							|  |  |  |             row.alignment = 'RIGHT' | 
					
						
							| 
									
										
										
										
											2009-11-14 13:35:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |             sub = row.row(align=True) | 
					
						
							|  |  |  |             subsub = sub.row(align=True) | 
					
						
							|  |  |  |             subsub.active = enable_edit_value | 
					
						
							| 
									
										
										
										
											2010-10-12 22:20:10 +00:00
										 |  |  |             subsub.prop(ob, "show_only_shape_key", text="") | 
					
						
							| 
									
										
										
										
											2010-01-11 15:28:00 +00:00
										 |  |  |             subsub.prop(kb, "mute", text="") | 
					
						
							| 
									
										
										
										
											2010-08-20 06:09:58 +00:00
										 |  |  |             sub.prop(ob, "use_shape_key_edit_mode", text="") | 
					
						
							| 
									
										
										
										
											2010-02-22 23:32:58 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-05 14:29:05 +00:00
										 |  |  |             sub = row.row() | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |             sub.operator("object.shape_key_clear", icon='X', text="") | 
					
						
							| 
									
										
										
										
											2009-11-07 22:07:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |             row = layout.row() | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             row.prop(kb, "name") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-20 22:00:23 +00:00
										 |  |  |             if key.use_relative: | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |                 if ob.active_shape_key_index != 0: | 
					
						
							|  |  |  |                     row = layout.row() | 
					
						
							|  |  |  |                     row.active = enable_edit_value | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                     row.prop(kb, "value") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                     split = layout.split() | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                     col = split.column(align=True) | 
					
						
							|  |  |  |                     col.active = enable_edit_value | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                     col.label(text="Range:") | 
					
						
							|  |  |  |                     col.prop(kb, "slider_min", text="Min") | 
					
						
							|  |  |  |                     col.prop(kb, "slider_max", text="Max") | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |                     col = split.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-11-08 11:07:00 +00:00
										 |  |  |                     col.active = enable_edit_value | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                     col.label(text="Blend:") | 
					
						
							| 
									
										
										
										
											2010-08-23 05:47:45 +00:00
										 |  |  |                     col.prop_search(kb, "vertex_group", ob, "vertex_groups", text="") | 
					
						
							| 
									
										
										
										
											2011-03-25 02:12:44 +00:00
										 |  |  |                     col.prop_search(kb, "relative_key", key, "key_blocks", text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 row = layout.row() | 
					
						
							|  |  |  |                 row.active = enable_edit_value | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |                 row.prop(key, "slurph") | 
					
						
							| 
									
										
										
										
											2009-07-01 22:25:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_uv_texture(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "UV Texture" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         me = context.mesh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         row = layout.row() | 
					
						
							|  |  |  |         col = row.column() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-24 04:02:50 +00:00
										 |  |  |         col.template_list(me, "uv_textures", me.uv_textures, "active_index", rows=2) | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         col = row.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |         col.operator("mesh.uv_texture_add", icon='ZOOMIN', text="") | 
					
						
							|  |  |  |         col.operator("mesh.uv_texture_remove", icon='ZOOMOUT', text="") | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-23 22:16:45 +00:00
										 |  |  |         lay = me.uv_textures.active | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         if lay: | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             layout.prop(lay, "name") | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_texface(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |     bl_label = "Texture Face" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-09 01:37:09 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							| 
									
										
										
										
											2011-07-03 07:21:33 +00:00
										 |  |  |         obj = context.object | 
					
						
							|  |  |  |         return (context.mode == 'EDIT_MESH') and obj and obj.type == 'MESH' | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  |         col = layout.column() | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |         me = context.mesh | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |         tf = me.faces.active_tface | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |         if tf: | 
					
						
							| 
									
										
										
										
											2010-12-04 11:34:26 +00:00
										 |  |  |             if context.scene.render.engine != 'BLENDER_GAME': | 
					
						
							|  |  |  |                 col.label(text="Options only supported in Game Engine") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |             split = layout.split() | 
					
						
							|  |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-12-17 10:33:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 10:05:33 +00:00
										 |  |  |             col.prop(tf, "use_image") | 
					
						
							| 
									
										
										
										
											2010-08-19 12:51:31 +00:00
										 |  |  |             col.prop(tf, "use_light") | 
					
						
							|  |  |  |             col.prop(tf, "hide") | 
					
						
							|  |  |  |             col.prop(tf, "use_collision") | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-19 12:51:31 +00:00
										 |  |  |             col.prop(tf, "use_blend_shared") | 
					
						
							|  |  |  |             col.prop(tf, "use_twoside") | 
					
						
							|  |  |  |             col.prop(tf, "use_object_color") | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-06 15:17:44 +00:00
										 |  |  |             col = split.column() | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-19 12:51:31 +00:00
										 |  |  |             col.prop(tf, "use_halo") | 
					
						
							|  |  |  |             col.prop(tf, "use_billboard") | 
					
						
							|  |  |  |             col.prop(tf, "use_shadow_cast") | 
					
						
							|  |  |  |             col.prop(tf, "use_bitmap_text") | 
					
						
							|  |  |  |             col.prop(tf, "use_alpha_sort") | 
					
						
							| 
									
										
										
										
											2010-04-17 19:05:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |             col = layout.column() | 
					
						
							| 
									
										
										
										
											2010-08-19 12:51:31 +00:00
										 |  |  |             col.prop(tf, "blend_type") | 
					
						
							| 
									
										
										
										
											2010-04-12 03:06:49 +00:00
										 |  |  |         else: | 
					
						
							|  |  |  |             col.label(text="No UV Texture") | 
					
						
							| 
									
										
										
										
											2009-07-21 00:55:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 23:35:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_vertex_colors(MeshButtonsPanel, Panel): | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |     bl_label = "Vertex Colors" | 
					
						
							| 
									
										
										
										
											2010-04-18 23:52:37 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def draw(self, context): | 
					
						
							|  |  |  |         layout = self.layout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         me = context.mesh | 
					
						
							| 
									
										
										
										
											2009-07-01 22:25:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         row = layout.row() | 
					
						
							|  |  |  |         col = row.column() | 
					
						
							| 
									
										
										
										
											2009-07-01 22:25:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-24 04:02:50 +00:00
										 |  |  |         col.template_list(me, "vertex_colors", me.vertex_colors, "active_index", rows=2) | 
					
						
							| 
									
										
										
										
											2009-07-01 22:25:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         col = row.column(align=True) | 
					
						
							| 
									
										
										
										
											2009-12-10 10:23:53 +00:00
										 |  |  |         col.operator("mesh.vertex_color_add", icon='ZOOMIN', text="") | 
					
						
							|  |  |  |         col.operator("mesh.vertex_color_remove", icon='ZOOMOUT', text="") | 
					
						
							| 
									
										
										
										
											2009-06-27 01:15:31 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-23 22:16:45 +00:00
										 |  |  |         lay = me.vertex_colors.active | 
					
						
							| 
									
										
										
										
											2009-10-31 19:31:45 +00:00
										 |  |  |         if lay: | 
					
						
							| 
									
										
										
										
											2009-11-23 00:27:30 +00:00
										 |  |  |             layout.prop(lay, "name") | 
					
						
							| 
									
										
										
										
											2009-07-21 00:55:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-14 11:21:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-12 06:57:00 +00:00
										 |  |  | class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel): | 
					
						
							| 
									
										
										
										
											2010-08-12 19:36:10 +00:00
										 |  |  |     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} | 
					
						
							|  |  |  |     _context_path = "object.data" | 
					
						
							| 
									
										
										
										
											2010-12-17 10:33:28 +00:00
										 |  |  |     _property_type = bpy.types.Mesh | 
					
						
							| 
									
										
										
										
											2011-04-04 10:13:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__":  # only for live edit. | 
					
						
							|  |  |  |     bpy.utils.register_module(__name__) |