diff options
Diffstat (limited to 'release/scripts/ui/buttons_data_mesh.py')
-rw-r--r-- | release/scripts/ui/buttons_data_mesh.py | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/release/scripts/ui/buttons_data_mesh.py b/release/scripts/ui/buttons_data_mesh.py new file mode 100644 index 00000000000..780ae3ac8f9 --- /dev/null +++ b/release/scripts/ui/buttons_data_mesh.py @@ -0,0 +1,203 @@ + +import bpy + +class DataButtonsPanel(bpy.types.Panel): + __space_type__ = 'PROPERTIES' + __region_type__ = 'WINDOW' + __context__ = "data" + + def poll(self, context): + return context.mesh + +class DATA_PT_context_mesh(DataButtonsPanel): + __show_header__ = False + + def draw(self, context): + layout = self.layout + + ob = context.object + mesh = context.mesh + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif mesh: + split.template_ID(space, "pin_id") + split.itemS() + +class DATA_PT_normals(DataButtonsPanel): + __label__ = "Normals" + + def draw(self, context): + layout = self.layout + + mesh = context.mesh + + split = layout.split() + + col = split.column() + col.itemR(mesh, "autosmooth") + sub = col.column() + sub.active = mesh.autosmooth + sub.itemR(mesh, "autosmooth_angle", text="Angle") + + col = split.column() + col.itemR(mesh, "vertex_normal_flip") + col.itemR(mesh, "double_sided") + +class DATA_PT_vertex_groups(DataButtonsPanel): + __label__ = "Vertex Groups" + + def poll(self, context): + return (context.object and context.object.type in ('MESH', 'LATTICE')) + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=2) + + col = row.column(align=True) + col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="") + col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") + + col.itemO("object.vertex_group_copy", icon='ICON_COPYDOWN', text="") + if ob.data.users > 1: + col.itemO("object.vertex_group_copy_to_linked", icon='ICON_COPYDOWN', text="") + + group = ob.active_vertex_group + if group: + row = layout.row() + row.itemR(group, "name") + + if ob.mode == 'EDIT': + row = layout.row() + + sub = row.row(align=True) + sub.itemO("object.vertex_group_assign", text="Assign") + sub.itemO("object.vertex_group_remove_from", text="Remove") + + sub = row.row(align=True) + sub.itemO("object.vertex_group_select", text="Select") + sub.itemO("object.vertex_group_deselect", text="Deselect") + + layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight") + +class DATA_PT_shape_keys(DataButtonsPanel): + __label__ = "Shape Keys" + + def poll(self, context): + return (context.object and context.object.type in ('MESH', 'LATTICE')) + + def draw(self, context): + layout = self.layout + + ob = context.object + key = ob.data.shape_keys + kb = ob.active_shape_key + + row = layout.row() + row.template_list(key, "keys", ob, "active_shape_key_index", rows=2) + + col = row.column() + + subcol = col.column(align=True) + subcol.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="") + subcol.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") + + if kb: + col.itemS() + + subcol = col.column(align=True) + subcol.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") + subcol.itemR(kb, "mute", icon='ICON_MUTE_IPO_ON', text="") + + if key.relative: + row = layout.row() + row.itemR(key, "relative") + row.itemL() + + row = layout.row() + row.itemR(kb, "name") + + if ob.active_shape_key_index != 0: + + row = layout.row() + row.enabled = ob.shape_key_lock == False + row.itemR(kb, "value", slider=True) + + split = layout.split() + sub = split.column(align=True) + sub.enabled = ob.shape_key_lock == False + sub.itemL(text="Range:") + sub.itemR(kb, "slider_min", text="Min") + sub.itemR(kb, "slider_max", text="Max") + + sub = split.column() + sub.itemL(text="Blend:") + sub.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="") + sub.item_pointerR(kb, "relative_key", key, "keys", text="") + + else: + row = layout.row() + row.itemR(key, "relative") + row.itemR(key, "slurph") + + layout.itemR(kb, "name") + + if ob.mode == 'EDIT': + layout.enabled = False + +class DATA_PT_uv_texture(DataButtonsPanel): + __label__ = "UV Texture" + + def draw(self, context): + layout = self.layout + + me = context.mesh + + row = layout.row() + col = row.column() + + col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2) + + col = row.column(align=True) + col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") + col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") + + lay = me.active_uv_texture + if lay: + layout.itemR(lay, "name") + +class DATA_PT_vertex_colors(DataButtonsPanel): + __label__ = "Vertex Colors" + + def draw(self, context): + layout = self.layout + + me = context.mesh + + row = layout.row() + col = row.column() + + col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2) + + col = row.column(align=True) + col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") + col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") + + lay = me.active_vertex_color + if lay: + layout.itemR(lay, "name") + +bpy.types.register(DATA_PT_context_mesh) +bpy.types.register(DATA_PT_normals) +bpy.types.register(DATA_PT_vertex_groups) +bpy.types.register(DATA_PT_shape_keys) +bpy.types.register(DATA_PT_uv_texture) +bpy.types.register(DATA_PT_vertex_colors) |