Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24889:25180
This commit is contained in:
@@ -189,6 +189,9 @@ class BONE_PT_relations(BoneButtonsPanel):
|
||||
sub.prop(bone, "connected")
|
||||
sub.prop(bone, "hinge", text="Inherit Rotation")
|
||||
sub.prop(bone, "inherit_scale", text="Inherit Scale")
|
||||
sub = col.column()
|
||||
sub.active = (not bone.parent or not bone.connected)
|
||||
sub.prop(bone, "local_location", text="Local Location")
|
||||
|
||||
|
||||
class BONE_PT_display(BoneButtonsPanel):
|
||||
|
||||
@@ -128,6 +128,13 @@ class DATA_PT_shape_curve(DataButtonsPanel):
|
||||
class DATA_PT_geometry_curve(DataButtonsPanel):
|
||||
bl_label = "Geometry"
|
||||
|
||||
def poll(self, context):
|
||||
obj = context.object
|
||||
if obj and obj.type == 'SURFACE':
|
||||
return False
|
||||
|
||||
return context.curve
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
||||
@@ -365,11 +365,11 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
def MESH_DEFORM(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
if md.object and md.object.type == 'ARMATURE':
|
||||
col.label(text="Bone:")
|
||||
col.prop_object(md, "subtarget", md.object.data, "bones", text="")
|
||||
sub = col.column()
|
||||
sub.label(text="Object:")
|
||||
sub.prop(md, "object", text="")
|
||||
sub.prop(md, "mode", text="")
|
||||
sub.active = not md.is_bound
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
@@ -385,14 +385,16 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
layout.operator("object.meshdeform_bind", text="Unbind")
|
||||
else:
|
||||
layout.operator("object.meshdeform_bind", text="Bind")
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(md, "precision")
|
||||
if md.mode == 'VOLUME':
|
||||
split = layout.split()
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.prop(md, "dynamic")
|
||||
col.prop(md, "precision")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.prop(md, "dynamic")
|
||||
|
||||
def MIRROR(self, layout, ob, md, wide_ui):
|
||||
layout.prop(md, "merge_limit")
|
||||
@@ -554,7 +556,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.label(text="Origin:")
|
||||
col.prop(md, "origin", text="")
|
||||
sub = col.column()
|
||||
sub.active = md.origin
|
||||
sub.active = (md.origin != "")
|
||||
sub.prop(md, "relative")
|
||||
|
||||
if wide_ui:
|
||||
|
||||
@@ -481,7 +481,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
|
||||
mat = active_node_mat(context.material)
|
||||
sss = mat.subsurface_scattering
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
|
||||
layout.active = (sss.enabled) and (not mat.shadeless)
|
||||
|
||||
row = layout.row().split()
|
||||
@@ -495,7 +495,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
|
||||
col.prop(sss, "ior")
|
||||
col.prop(sss, "scale")
|
||||
col.prop(sss, "color", text="")
|
||||
col.prop(sss, "radius", text="RGB Radius")
|
||||
col.prop(sss, "radius", text="RGB Radius", expand=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
@@ -162,7 +162,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
|
||||
|
||||
row = col.box().row()
|
||||
row.prop(group, "name", text="")
|
||||
row.operator("object.group_remove", text="", icon='VICON_X')
|
||||
row.operator("object.group_remove", text="", icon='ICON_X')
|
||||
|
||||
split = col.box().split()
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import bpy
|
||||
|
||||
narrowui = 180
|
||||
|
||||
|
||||
class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
bl_region_type = 'WINDOW'
|
||||
@@ -77,7 +78,7 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
else:
|
||||
layout.prop_object(con, "subtarget", con.target.data, "bones", text="")
|
||||
|
||||
if con.type == 'COPY_LOCATION':
|
||||
if con.type in ('COPY_LOCATION', 'STRETCH_TO', 'TRACK_TO'):
|
||||
row = layout.row()
|
||||
row.label(text="Head/Tail:")
|
||||
row.prop(con, "head_tail", text="")
|
||||
@@ -112,21 +113,21 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Location:")
|
||||
col.prop(con, "locationx", text="X")
|
||||
col.prop(con, "locationy", text="Y")
|
||||
col.prop(con, "locationz", text="Z")
|
||||
col.prop(con, "use_location_x", text="X")
|
||||
col.prop(con, "use_location_y", text="Y")
|
||||
col.prop(con, "use_location_z", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Rotation:")
|
||||
col.prop(con, "rotationx", text="X")
|
||||
col.prop(con, "rotationy", text="Y")
|
||||
col.prop(con, "rotationz", text="Z")
|
||||
col.prop(con, "use_rotation_x", text="X")
|
||||
col.prop(con, "use_rotation_y", text="Y")
|
||||
col.prop(con, "use_rotation_z", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Scale:")
|
||||
col.prop(con, "sizex", text="X")
|
||||
col.prop(con, "sizey", text="Y")
|
||||
col.prop(con, "sizez", text="Z")
|
||||
col.prop(con, "use_scale_x", text="X")
|
||||
col.prop(con, "use_scale_y", text="Y")
|
||||
col.prop(con, "use_scale_z", text="Z")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@@ -187,16 +188,16 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
col.label(text="Weight:")
|
||||
col.prop(con, "weight", text="Position", slider=True)
|
||||
sub = col.column()
|
||||
sub.active = con.rotation
|
||||
sub.active = con.use_rotation
|
||||
sub.prop(con, "orient_weight", text="Rotation", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.prop(con, "tail")
|
||||
col.prop(con, "stretch")
|
||||
col.prop(con, "use_tail")
|
||||
col.prop(con, "use_stretch")
|
||||
col.separator()
|
||||
col.prop(con, "targetless")
|
||||
col.prop(con, "rotation")
|
||||
col.prop(con, "use_target")
|
||||
col.prop(con, "use_rotation")
|
||||
|
||||
def IK_COPY_POSE(self, context, layout, con, wide_ui):
|
||||
self.target_template(layout, con, wide_ui)
|
||||
@@ -217,13 +218,13 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
row.prop(con, "pos_lock_x", text="X")
|
||||
row.prop(con, "pos_lock_y", text="Y")
|
||||
row.prop(con, "pos_lock_z", text="Z")
|
||||
split.active = con.position
|
||||
split.active = con.use_position
|
||||
|
||||
split = layout.split(percentage=0.33)
|
||||
split.row().prop(con, "rotation")
|
||||
row = split.row()
|
||||
row.prop(con, "orient_weight", text="Weight", slider=True)
|
||||
row.active = con.rotation
|
||||
row.active = con.use_rotation
|
||||
split = layout.split(percentage=0.33)
|
||||
row = split.row()
|
||||
row.label(text="Lock:")
|
||||
@@ -231,7 +232,7 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
row.prop(con, "rot_lock_x", text="X")
|
||||
row.prop(con, "rot_lock_y", text="Y")
|
||||
row.prop(con, "rot_lock_z", text="Z")
|
||||
split.active = con.rotation
|
||||
split.active = con.use_rotation
|
||||
|
||||
def IK_DISTANCE(self, context, layout, con, wide_ui):
|
||||
self.target_template(layout, con, wide_ui)
|
||||
@@ -402,24 +403,24 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "rotate_like_x", text="X")
|
||||
col.prop(con, "use_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.rotate_like_x
|
||||
sub.active = con.use_x
|
||||
sub.prop(con, "invert_x", text="Invert")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "rotate_like_y", text="Y")
|
||||
col.prop(con, "use_y", text="Y")
|
||||
sub = col.column()
|
||||
sub.active = con.rotate_like_y
|
||||
sub.active = con.use_y
|
||||
sub.prop(con, "invert_y", text="Invert")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "rotate_like_z", text="Z")
|
||||
col.prop(con, "use_z", text="Z")
|
||||
sub = col.column()
|
||||
sub.active = con.rotate_like_z
|
||||
sub.active = con.use_z
|
||||
sub.prop(con, "invert_z", text="Invert")
|
||||
|
||||
layout.prop(con, "offset")
|
||||
layout.prop(con, "use_offset")
|
||||
|
||||
self.space_template(layout, con, wide_ui)
|
||||
|
||||
@@ -429,24 +430,24 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "locate_like_x", text="X")
|
||||
col.prop(con, "use_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.locate_like_x
|
||||
sub.active = con.use_x
|
||||
sub.prop(con, "invert_x", text="Invert")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "locate_like_y", text="Y")
|
||||
col.prop(con, "use_y", text="Y")
|
||||
sub = col.column()
|
||||
sub.active = con.locate_like_y
|
||||
sub.active = con.use_y
|
||||
sub.prop(con, "invert_y", text="Invert")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "locate_like_z", text="Z")
|
||||
col.prop(con, "use_z", text="Z")
|
||||
sub = col.column()
|
||||
sub.active = con.locate_like_z
|
||||
sub.active = con.use_z
|
||||
sub.prop(con, "invert_z", text="Invert")
|
||||
|
||||
layout.prop(con, "offset")
|
||||
layout.prop(con, "use_offset")
|
||||
|
||||
self.space_template(layout, con, wide_ui)
|
||||
|
||||
@@ -454,11 +455,11 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
self.target_template(layout, con, wide_ui)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(con, "size_like_x", text="X")
|
||||
row.prop(con, "size_like_y", text="Y")
|
||||
row.prop(con, "size_like_z", text="Z")
|
||||
row.prop(con, "use_x", text="X")
|
||||
row.prop(con, "use_y", text="Y")
|
||||
row.prop(con, "use_z", text="Z")
|
||||
|
||||
layout.prop(con, "offset")
|
||||
layout.prop(con, "use_offset")
|
||||
|
||||
self.space_template(layout, con, wide_ui)
|
||||
|
||||
@@ -683,9 +684,9 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
|
||||
if con.shrinkwrap_type == 'PROJECT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(con, "axis_x")
|
||||
row.prop(con, "axis_y")
|
||||
row.prop(con, "axis_z")
|
||||
row.prop(con, "use_x")
|
||||
row.prop(con, "use_y")
|
||||
row.prop(con, "use_z")
|
||||
|
||||
def DAMPED_TRACK(self, context, layout, con, wide_ui):
|
||||
self.target_template(layout, con, wide_ui)
|
||||
|
||||
@@ -208,6 +208,10 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel):
|
||||
layout = self.layout
|
||||
|
||||
psys = context.particle_system
|
||||
|
||||
if not psys.cloth:
|
||||
return
|
||||
|
||||
#part = psys.settings
|
||||
cloth = psys.cloth.settings
|
||||
|
||||
@@ -298,8 +302,8 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel):
|
||||
sub.prop(part, "random_factor")
|
||||
|
||||
#if part.type=='REACTOR':
|
||||
# sub.prop(part, "reactor_factor")
|
||||
# sub.prop(part, "reaction_shape", slider=True)
|
||||
# sub.prop(part, "reactor_factor")
|
||||
# sub.prop(part, "reaction_shape", slider=True)
|
||||
|
||||
|
||||
class PARTICLE_PT_rotation(ParticleButtonsPanel):
|
||||
@@ -454,7 +458,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
|
||||
sub = col.row()
|
||||
subsub = sub.column(align=True)
|
||||
subsub.operator("particle.new_target", icon='ICON_ZOOMIN', text="")
|
||||
subsub.operator("particle.remove_target", icon='ICON_ZOOMOUT', text="")
|
||||
subsub.operator("particle.target_remove", icon='ICON_ZOOMOUT', text="")
|
||||
sub = col.row()
|
||||
subsub = sub.column(align=True)
|
||||
subsub.operator("particle.target_move_up", icon='VICON_MOVE_UP', text="")
|
||||
|
||||
@@ -28,7 +28,7 @@ from properties_physics_common import effector_weights_ui
|
||||
|
||||
def cloth_panel_enabled(md):
|
||||
return md.point_cache.baked is False
|
||||
|
||||
|
||||
|
||||
class CLOTH_MT_presets(bpy.types.Menu):
|
||||
'''
|
||||
@@ -83,10 +83,10 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
|
||||
if md:
|
||||
cloth = md.settings
|
||||
|
||||
layout.active = cloth_panel_enabled(md)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
split.active = cloth_panel_enabled(md)
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Presets:")
|
||||
@@ -227,7 +227,7 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel):
|
||||
def draw(self, context):
|
||||
cloth = context.cloth.settings
|
||||
effector_weights_ui(self, context, cloth.effector_weights)
|
||||
|
||||
|
||||
bpy.types.register(CLOTH_MT_presets)
|
||||
|
||||
bpy.types.register(PHYSICS_PT_cloth)
|
||||
|
||||
@@ -30,7 +30,7 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
|
||||
row = layout.row()
|
||||
row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2)
|
||||
col = row.column(align=True)
|
||||
col.operator("ptcache.add_new", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("ptcache.add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
row = layout.row()
|
||||
|
||||
@@ -344,6 +344,10 @@ class RENDER_PT_output(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
split.prop(rd, "tiff_bit")
|
||||
|
||||
elif rd.file_format == 'QUICKTIME_CARBON':
|
||||
split = layout.split()
|
||||
split.operator("scene.render_data_set_quicktime_codec")
|
||||
|
||||
elif rd.file_format == 'QUICKTIME_QTKIT':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@@ -401,8 +405,8 @@ class RENDER_PT_encoding(RenderButtonsPanel):
|
||||
col.label(text="Mux:")
|
||||
col.prop(rd, "ffmpeg_muxrate", text="Rate")
|
||||
col.prop(rd, "ffmpeg_packetsize", text="Packet Size")
|
||||
|
||||
# Audio:
|
||||
|
||||
# Audio:
|
||||
layout.prop(rd, "ffmpeg_multiplex_audio", text="Audio")
|
||||
|
||||
sub = layout.column()
|
||||
|
||||
@@ -219,10 +219,12 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(ao, "energy")
|
||||
col.prop(ao, "indirect_energy")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.prop(ao, "color")
|
||||
col.prop(ao, "indirect_bounces")
|
||||
|
||||
bpy.types.register(WORLD_PT_context_world)
|
||||
bpy.types.register(WORLD_PT_preview)
|
||||
|
||||
@@ -71,6 +71,11 @@ class CONSOLE_MT_console(bpy.types.Menu):
|
||||
layout.menu("CONSOLE_MT_language")
|
||||
layout.itemM("CONSOLE_MT_language")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class CONSOLE_MT_report(bpy.types.Menu):
|
||||
bl_label = "Report"
|
||||
|
||||
192
release/scripts/ui/space_graph.py
Normal file
192
release/scripts/ui/space_graph.py
Normal file
@@ -0,0 +1,192 @@
|
||||
# ##### 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.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
|
||||
|
||||
class GRAPH_HT_header(bpy.types.Header):
|
||||
bl_space_type = 'GRAPH_EDITOR'
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
st = context.space_data
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.template_header()
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
|
||||
sub.menu("GRAPH_MT_view")
|
||||
sub.menu("GRAPH_MT_select")
|
||||
sub.menu("GRAPH_MT_channel")
|
||||
sub.menu("GRAPH_MT_key")
|
||||
|
||||
layout.prop(st, "mode", text="")
|
||||
|
||||
layout.template_dopesheet_filter(st.dopesheet)
|
||||
|
||||
layout.prop(st, "autosnap", text="")
|
||||
layout.prop(st, "pivot_point", text="", icon_only=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.operator("graph.copy", text="", icon='ICON_COPYDOWN')
|
||||
row.operator("graph.paste", text="", icon='ICON_PASTEDOWN')
|
||||
|
||||
row = layout.row(align=True)
|
||||
# these likely need new icons
|
||||
row.operator("graph.ghost_curves_create", text="", icon='ICON_GHOST_ENABLED')
|
||||
row.operator("graph.ghost_curves_clear", text="", icon='ICON_GHOST_DISABLED')
|
||||
|
||||
|
||||
class GRAPH_MT_view(bpy.types.Menu):
|
||||
bl_label = "View"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
st = context.space_data
|
||||
|
||||
layout.column()
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.properties")
|
||||
|
||||
layout.prop(st, "show_cframe_indicator")
|
||||
layout.prop(st, "show_cursor")
|
||||
layout.prop(st, "show_sliders")
|
||||
layout.prop(st, "automerge_keyframes")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.handles_view_toggle")
|
||||
layout.prop(st, "only_selected_curves_handles")
|
||||
layout.prop(st, "only_selected_keyframe_handles")
|
||||
layout.operator("anim.time_toggle")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.previewrange_set")
|
||||
layout.operator("anim.previewrange_clear")
|
||||
layout.operator("graph.previewrange_set")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.frame_jump")
|
||||
layout.operator("graph.view_all")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class GRAPH_MT_select(bpy.types.Menu):
|
||||
bl_label = "Select"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
|
||||
layout.operator("graph.select_all_toggle")
|
||||
layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_border")
|
||||
layout.operator("graph.select_border", text="Border Axis Range").axis_range = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS'
|
||||
layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA'
|
||||
|
||||
layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN'
|
||||
layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN'
|
||||
|
||||
|
||||
class GRAPH_MT_channel(bpy.types.Menu):
|
||||
bl_label = "Channel"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
layout.operator("anim.channels_setting_toggle")
|
||||
layout.operator("anim.channels_setting_enable")
|
||||
layout.operator("anim.channels_setting_disable")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_editable_toggle")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_expand")
|
||||
layout.operator("anim.channels_collapse")
|
||||
|
||||
|
||||
class GRAPH_MT_key(bpy.types.Menu):
|
||||
bl_label = "Key"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
layout.menu("GRAPH_MT_key_transform", text="Transform")
|
||||
|
||||
layout.operator_menu_enum("graph.snap", property="type", text="Snap")
|
||||
layout.operator_menu_enum("graph.mirror", property="type", text="Mirror")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.keyframe_insert")
|
||||
layout.operator("graph.fmodifier_add")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.duplicate")
|
||||
layout.operator("graph.delete")
|
||||
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("graph.handle_type", property="type", text="Handle Type")
|
||||
layout.operator_menu_enum("graph.interpolation_type", property="type", text="Interpolation Mode")
|
||||
layout.operator_menu_enum("graph.extrapolation_type", property="type", text="Extrapolation Mode")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.clean")
|
||||
layout.operator("graph.sample")
|
||||
layout.operator("graph.bake")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.copy")
|
||||
layout.operator("graph.paste")
|
||||
|
||||
|
||||
class GRAPH_MT_key_transform(bpy.types.Menu):
|
||||
bl_label = "Transform"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
layout.operator("tfm.translate", text="Grab/Move")
|
||||
layout.operator("tfm.transform", text="Extend").mode = 'TIME_EXTEND'
|
||||
layout.operator("tfm.rotate", text="Rotate")
|
||||
layout.operator("tfm.resize", text="Scale")
|
||||
|
||||
|
||||
bpy.types.register(GRAPH_HT_header) # header/menu classes
|
||||
bpy.types.register(GRAPH_MT_view)
|
||||
bpy.types.register(GRAPH_MT_select)
|
||||
bpy.types.register(GRAPH_MT_channel)
|
||||
bpy.types.register(GRAPH_MT_key)
|
||||
bpy.types.register(GRAPH_MT_key_transform)
|
||||
@@ -61,6 +61,10 @@ class IMAGE_MT_view(bpy.types.Menu):
|
||||
layout.operator("image.view_selected")
|
||||
|
||||
layout.operator("image.view_all")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
@@ -75,7 +79,7 @@ class IMAGE_MT_select(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("uv.select_all_toggle")
|
||||
layout.operator("uv.select_all")
|
||||
layout.operator("uv.select_inverse")
|
||||
layout.operator("uv.unlink_selection")
|
||||
|
||||
@@ -151,6 +155,23 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu):
|
||||
layout.operator("tfm.resize")
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_snap(bpy.types.Menu):
|
||||
bl_label = "Snap"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("uv.snap_selection", text="Selected to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_selection", text="Selected to Cursor").target = 'CURSOR'
|
||||
layout.operator("uv.snap_selection", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED'
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Selection").target = 'SELECTION'
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_mirror(bpy.types.Menu):
|
||||
bl_label = "Mirror"
|
||||
|
||||
@@ -203,6 +224,7 @@ class IMAGE_MT_uvs(bpy.types.Menu):
|
||||
|
||||
layout.menu("IMAGE_MT_uvs_transform")
|
||||
layout.menu("IMAGE_MT_uvs_mirror")
|
||||
layout.menu("IMAGE_MT_uvs_snap")
|
||||
layout.menu("IMAGE_MT_uvs_weldalign")
|
||||
|
||||
layout.separator()
|
||||
@@ -520,6 +542,7 @@ bpy.types.register(IMAGE_MT_select)
|
||||
bpy.types.register(IMAGE_MT_image)
|
||||
bpy.types.register(IMAGE_MT_uvs_showhide)
|
||||
bpy.types.register(IMAGE_MT_uvs_transform)
|
||||
bpy.types.register(IMAGE_MT_uvs_snap)
|
||||
bpy.types.register(IMAGE_MT_uvs_mirror)
|
||||
bpy.types.register(IMAGE_MT_uvs_weldalign)
|
||||
bpy.types.register(IMAGE_MT_uvs)
|
||||
|
||||
@@ -83,12 +83,18 @@ class INFO_MT_file(bpy.types.Menu):
|
||||
layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK')
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.save_as_mainfile", text="Save As...")
|
||||
layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
|
||||
layout.operator("wm.read_homefile", text="Load Factory Settings").factory = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.link_append", text="Link")
|
||||
layout.operator("wm.link_append", text="Append").link = False
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.menu("INFO_MT_file_import")
|
||||
@@ -179,7 +185,7 @@ class INFO_MT_add(bpy.types.Menu):
|
||||
|
||||
layout.operator_context = 'EXEC_SCREEN'
|
||||
|
||||
# layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
|
||||
#layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
|
||||
layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH')
|
||||
|
||||
layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE')
|
||||
@@ -189,7 +195,7 @@ class INFO_MT_add(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_SCREEN'
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE')
|
||||
layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE'
|
||||
|
||||
@@ -82,6 +82,10 @@ class NODE_MT_view(bpy.types.Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("node.view_all")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@ class OUTLINER_HT_header(bpy.types.Header):
|
||||
row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
|
||||
row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
|
||||
row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT')
|
||||
row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT')
|
||||
else:
|
||||
row = layout.row(align=False)
|
||||
row.label(text="No Keying Set active")
|
||||
@@ -77,6 +77,11 @@ class OUTLINER_MT_view(bpy.types.Menu):
|
||||
col.operator("outliner.show_one_level")
|
||||
col.operator("outliner.show_hierarchy")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
|
||||
bl_label = "Edit"
|
||||
|
||||
@@ -100,19 +100,6 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
layout.separator()
|
||||
layout.operator("sequencer.view_all")
|
||||
layout.operator("sequencer.view_selected")
|
||||
layout.separator()
|
||||
layout.operator("screen.screen_full_area", text="Toggle Full Screen")
|
||||
"""
|
||||
|
||||
|
||||
/* Lock Time */
|
||||
uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
|
||||
"Lock Time to Other Windows|", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
|
||||
|
||||
/* Draw time or frames.*/
|
||||
uiDefMenuSep(block);
|
||||
"""
|
||||
|
||||
layout.prop(st, "draw_frames")
|
||||
layout.prop(st, "show_cframe_indicator")
|
||||
@@ -121,11 +108,10 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
if st.display_mode == 'WAVEFORM':
|
||||
layout.prop(st, "separate_color_preview")
|
||||
|
||||
"""
|
||||
if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
|
||||
else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
|
||||
layout.separator()
|
||||
|
||||
"""
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class SEQUENCER_MT_select(bpy.types.Menu):
|
||||
@@ -351,7 +337,10 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
|
||||
if not strip:
|
||||
return False
|
||||
|
||||
return strip.type in ('COLOR', 'WIPE', 'GLOW', 'SPEED', 'TRANSFORM')
|
||||
return strip.type in ('ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
||||
'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP',
|
||||
'PLUGIN',
|
||||
'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -431,7 +420,9 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
|
||||
if strip.type == 'SPEED':
|
||||
col.prop(strip, "speed_fader", text="Speed fader")
|
||||
else:
|
||||
col.prop(strip, "effect_fader", text="Effect fader")
|
||||
col.prop(strip, "use_effect_default_fade", "Default fade")
|
||||
if not strip.use_effect_default_fade:
|
||||
col.prop(strip, "effect_fader", text="Effect fader")
|
||||
|
||||
|
||||
class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
@@ -522,7 +513,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel):
|
||||
row.prop(strip.sound, "caching")
|
||||
|
||||
layout.prop(strip, "volume")
|
||||
|
||||
|
||||
|
||||
class SEQUENCER_PT_scene(SequencerButtonsPanel):
|
||||
bl_label = "Scene"
|
||||
@@ -541,7 +532,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel):
|
||||
layout = self.layout
|
||||
|
||||
strip = act_strip(context)
|
||||
|
||||
|
||||
layout.template_ID(strip, "scene")
|
||||
|
||||
|
||||
|
||||
@@ -160,6 +160,11 @@ class TEXT_MT_text(bpy.types.Menu):
|
||||
|
||||
layout.menu("TEXT_MT_templates")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class TEXT_MT_templates(bpy.types.Menu):
|
||||
'''
|
||||
@@ -168,7 +173,6 @@ class TEXT_MT_templates(bpy.types.Menu):
|
||||
bl_label = "Script Templates"
|
||||
|
||||
def draw(self, context):
|
||||
import os
|
||||
self.path_menu(bpy.utils.script_paths("templates"), "text.open")
|
||||
|
||||
|
||||
|
||||
@@ -72,14 +72,14 @@ class TIME_HT_header(bpy.types.Header):
|
||||
subsub = row.row()
|
||||
subsub.prop(tools, "record_with_nla", toggle=True)
|
||||
|
||||
layout.prop(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER')
|
||||
layout.prop(scene, "sync_audio", text="Realtime", toggle=True, icon='ICON_SPEAKER')
|
||||
|
||||
layout.separator()
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="")
|
||||
row.operator("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
|
||||
row.operator("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
|
||||
row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT')
|
||||
row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT')
|
||||
|
||||
|
||||
class TIME_MT_view(bpy.types.Menu):
|
||||
@@ -91,6 +91,7 @@ class TIME_MT_view(bpy.types.Menu):
|
||||
st = context.space_data
|
||||
|
||||
layout.operator("anim.time_toggle")
|
||||
layout.operator("time.view_all")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -145,7 +146,7 @@ class TIME_MT_playback(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.prop(scene, "sync_audio", icon='ICON_SPEAKER')
|
||||
layout.prop(scene, "sync_audio", text="Realtime Playback", icon='ICON_SPEAKER')
|
||||
layout.prop(scene, "mute_audio")
|
||||
layout.prop(scene, "scrub_audio")
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ class USERPREF_PT_interface(bpy.types.Panel):
|
||||
sub1.prop(view, "show_playback_fps", text="Playback FPS")
|
||||
sub1.prop(view, "global_scene")
|
||||
sub1.prop(view, "pin_floating_panels")
|
||||
sub1.prop(view, "object_center_size")
|
||||
sub1.prop(view, "object_origin_size")
|
||||
sub1.separator()
|
||||
sub1.separator()
|
||||
sub1.separator()
|
||||
@@ -119,11 +119,11 @@ class USERPREF_PT_interface(bpy.types.Panel):
|
||||
sub1 = sub.column()
|
||||
|
||||
#Toolbox doesn't exist yet
|
||||
# sub1.label(text="Toolbox:")
|
||||
# sub1.prop(view, "use_column_layout")
|
||||
# sub1.label(text="Open Toolbox Delay:")
|
||||
# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB")
|
||||
# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB")
|
||||
# sub1.label(text="Toolbox:")
|
||||
# sub1.prop(view, "use_column_layout")
|
||||
# sub1.label(text="Open Toolbox Delay:")
|
||||
# sub1.prop(view, "open_left_mouse_delay", text="Hold LMB")
|
||||
# sub1.prop(view, "open_right_mouse_delay", text="Hold RMB")
|
||||
|
||||
#manipulator
|
||||
sub1.prop(view, "use_manipulator")
|
||||
@@ -244,7 +244,7 @@ class USERPREF_PT_edit(bpy.types.Panel):
|
||||
sub1.prop(edit, "duplicate_lamp", text="Lamp")
|
||||
sub1.prop(edit, "duplicate_material", text="Material")
|
||||
sub1.prop(edit, "duplicate_texture", text="Texture")
|
||||
sub1.prop(edit, "duplicate_ipo", text="F-Curve")
|
||||
sub1.prop(edit, "duplicate_fcurve", text="F-Curve")
|
||||
sub1.prop(edit, "duplicate_action", text="Action")
|
||||
sub1.prop(edit, "duplicate_particle", text="Particle")
|
||||
|
||||
@@ -264,6 +264,9 @@ class USERPREF_PT_system(bpy.types.Panel):
|
||||
|
||||
userpref = context.user_preferences
|
||||
system = userpref.system
|
||||
lamp0 = system.solid_lights[0]
|
||||
lamp1 = system.solid_lights[1]
|
||||
lamp2 = system.solid_lights[2]
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@@ -321,6 +324,34 @@ class USERPREF_PT_system(bpy.types.Panel):
|
||||
|
||||
sub1 = sub.column()
|
||||
|
||||
sub1.label(text="Solid OpenGL lights:")
|
||||
|
||||
sub2 = sub1.split()
|
||||
|
||||
col = sub2.column()
|
||||
col.prop(lamp0, "enabled")
|
||||
sub = col.column()
|
||||
sub.active = lamp0.enabled
|
||||
sub.prop(lamp0, "diffuse_color")
|
||||
sub.prop(lamp0, "specular_color")
|
||||
sub.prop(lamp0, "direction")
|
||||
|
||||
col = sub2.column()
|
||||
col.prop(lamp1, "enabled")
|
||||
sub = col.column()
|
||||
sub.active = lamp1.enabled
|
||||
sub.prop(lamp1, "diffuse_color")
|
||||
sub.prop(lamp1, "specular_color")
|
||||
sub.prop(lamp1, "direction")
|
||||
|
||||
col = sub2.column()
|
||||
col.prop(lamp2, "enabled")
|
||||
sub = col.column()
|
||||
sub.active = lamp2.enabled
|
||||
sub.prop(lamp2, "diffuse_color")
|
||||
sub.prop(lamp2, "specular_color")
|
||||
sub.prop(lamp2, "direction")
|
||||
|
||||
sub1.label(text="OpenGL:")
|
||||
sub1.prop(system, "clip_alpha", slider=True)
|
||||
sub1.prop(system, "use_mipmaps")
|
||||
@@ -1136,6 +1167,9 @@ class USERPREF_PT_input(bpy.types.Panel):
|
||||
|
||||
sub.label(text="Zoom Style:")
|
||||
sub.row().prop(inputs, "viewport_zoom_style", expand=True)
|
||||
if inputs.viewport_zoom_style == 'DOLLY':
|
||||
sub.row().prop(inputs, "zoom_axis", expand=True)
|
||||
sub.prop(inputs, "invert_zoom_direction")
|
||||
|
||||
#sub.prop(inputs, "use_middle_mouse_paste")
|
||||
|
||||
@@ -1143,7 +1177,6 @@ class USERPREF_PT_input(bpy.types.Panel):
|
||||
|
||||
#sub = col.column()
|
||||
#sub.label(text="Mouse Wheel:")
|
||||
#sub.prop(view, "wheel_invert_zoom", text="Invert Zoom")
|
||||
#sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
|
||||
|
||||
col.separator()
|
||||
@@ -1382,9 +1415,9 @@ class WM_OT_keymap_edit(bpy.types.Operator):
|
||||
|
||||
|
||||
class WM_OT_keymap_restore(bpy.types.Operator):
|
||||
"Restore key map"
|
||||
"Restore key map(s)."
|
||||
bl_idname = "wm.keymap_restore"
|
||||
bl_label = "Restore Key Map"
|
||||
bl_label = "Restore Key Map(s)"
|
||||
|
||||
all = BoolProperty(attr="all", name="All Keymaps", description="Restore all keymaps to default.")
|
||||
|
||||
|
||||
@@ -27,17 +27,19 @@ class VIEW3D_HT_header(bpy.types.Header):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
# view = context.space_data
|
||||
view = context.space_data
|
||||
mode_string = context.mode
|
||||
edit_object = context.edit_object
|
||||
object = context.active_object
|
||||
obj = context.active_object
|
||||
toolsettings = context.scene.tool_settings
|
||||
|
||||
row = layout.row(align=True)
|
||||
row = layout.row()
|
||||
row.template_header()
|
||||
|
||||
sub = row.row(align=True)
|
||||
|
||||
# Menus
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
|
||||
sub.menu("VIEW3D_MT_view")
|
||||
|
||||
@@ -47,13 +49,56 @@ class VIEW3D_HT_header(bpy.types.Header):
|
||||
|
||||
if edit_object:
|
||||
sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower())
|
||||
elif object:
|
||||
if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']:
|
||||
elif obj:
|
||||
if mode_string not in ('PAINT_WEIGHT'):
|
||||
sub.menu("VIEW3D_MT_%s" % mode_string.lower())
|
||||
else:
|
||||
sub.menu("VIEW3D_MT_object")
|
||||
|
||||
layout.template_header_3D()
|
||||
row.template_header_3D()
|
||||
|
||||
# Particle edit
|
||||
if obj and obj.mode == 'PARTICLE_EDIT':
|
||||
row.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True, toggle=True)
|
||||
|
||||
# Occlude geometry
|
||||
if obj and view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')):
|
||||
row.prop(view, "occlude_geometry", text="")
|
||||
|
||||
# Proportional editing
|
||||
if obj and obj.mode in ('OBJECT', 'EDIT'):
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "proportional_editing", text="", icon_only=True)
|
||||
if toolsettings.proportional_editing != 'DISABLED':
|
||||
row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True)
|
||||
|
||||
# Snap
|
||||
row = layout.row(align=True)
|
||||
row.prop(toolsettings, "snap", text="")
|
||||
row.prop(toolsettings, "snap_element", text="", icon_only=True)
|
||||
if toolsettings.snap_element != 'INCREMENT':
|
||||
row.prop(toolsettings, "snap_target", text="")
|
||||
if obj and obj.mode == 'OBJECT':
|
||||
row.prop(toolsettings, "snap_align_rotation", text="")
|
||||
if toolsettings.snap_element == 'VOLUME':
|
||||
row.prop(toolsettings, "snap_peel_object", text="")
|
||||
elif toolsettings.snap_element == 'FACE':
|
||||
row.prop(toolsettings, "snap_project", text="")
|
||||
|
||||
# OpenGL render
|
||||
row = layout.row(align=True)
|
||||
row.operator("screen.opengl_render", text="", icon='ICON_RENDER_STILL')
|
||||
props = row.operator("screen.opengl_render", text="", icon='ICON_RENDER_ANIMATION')
|
||||
props.animation = True
|
||||
|
||||
# Pose
|
||||
if obj and obj.mode == 'POSE':
|
||||
row = layout.row(align=True)
|
||||
row.operator("pose.copy", text="", icon='ICON_COPYDOWN')
|
||||
row.operator("pose.paste", text="", icon='ICON_PASTEDOWN')
|
||||
props = row.operator("pose.paste", text="", icon='ICON_PASTEFLIPDOWN')
|
||||
props.flipped = 1
|
||||
|
||||
|
||||
# ********** Menu **********
|
||||
|
||||
@@ -78,16 +123,16 @@ class VIEW3D_MT_transform(bpy.types.Menu):
|
||||
# TODO: get rid of the custom text strings?
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
||||
layout.operator("tfm.translate", text="Grab/Move")
|
||||
# TODO: sub-menu for grab per axis
|
||||
layout.operator("tfm.rotate", text="Rotate")
|
||||
# TODO: sub-menu for rot per axis
|
||||
layout.operator("tfm.resize", text="Scale")
|
||||
# TODO: sub-menu for scale per axis
|
||||
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
||||
layout.operator("tfm.tosphere", text="To Sphere")
|
||||
layout.operator("tfm.shear", text="Shear")
|
||||
layout.operator("tfm.warp", text="Warp")
|
||||
@@ -95,17 +140,18 @@ class VIEW3D_MT_transform(bpy.types.Menu):
|
||||
if context.edit_object and context.edit_object.type == 'ARMATURE':
|
||||
layout.operator("armature.align")
|
||||
else:
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
layout.operator("tfm.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
|
||||
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
|
||||
layout.operator("object.center_set").type = 'CENTER'
|
||||
layout.operator("object.center_set").type = 'CENTER_NEW'
|
||||
layout.operator("object.center_set").type = 'CENTER_CURSOR'
|
||||
|
||||
|
||||
layout.operator("object.origin_set", text="Geometry to Origin").type = 'GEOMETRY_ORIGIN'
|
||||
layout.operator("object.origin_set", text="Origin to Geometry").type = 'ORIGIN_GEOMETRY'
|
||||
layout.operator("object.origin_set", text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR'
|
||||
|
||||
|
||||
class VIEW3D_MT_mirror(bpy.types.Menu):
|
||||
bl_label = "Mirror"
|
||||
|
||||
@@ -113,11 +159,11 @@ class VIEW3D_MT_mirror(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("tfm.mirror", text="Interactive Mirror")
|
||||
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
props = layout.operator("tfm.mirror", text="X Global")
|
||||
props.constraint_axis = (True, False, False)
|
||||
props.constraint_orientation = 'GLOBAL'
|
||||
@@ -127,10 +173,10 @@ class VIEW3D_MT_mirror(bpy.types.Menu):
|
||||
props = layout.operator("tfm.mirror", text="Z Global")
|
||||
props.constraint_axis = (False, False, True)
|
||||
props.constraint_orientation = 'GLOBAL'
|
||||
|
||||
|
||||
if context.edit_object:
|
||||
layout.separator()
|
||||
|
||||
|
||||
props = layout.operator("tfm.mirror", text="X Local")
|
||||
props.constraint_axis = (True, False, False)
|
||||
props.constraint_orientation = 'LOCAL'
|
||||
@@ -140,7 +186,8 @@ class VIEW3D_MT_mirror(bpy.types.Menu):
|
||||
props = layout.operator("tfm.mirror", text="Z Local")
|
||||
props.constraint_axis = (False, False, True)
|
||||
props.constraint_orientation = 'LOCAL'
|
||||
|
||||
|
||||
|
||||
class VIEW3D_MT_snap(bpy.types.Menu):
|
||||
bl_label = "Snap"
|
||||
|
||||
@@ -149,7 +196,7 @@ class VIEW3D_MT_snap(bpy.types.Menu):
|
||||
|
||||
layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid")
|
||||
layout.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor")
|
||||
layout.operator("view3d.snap_selected_to_center", text="Selection to Center")
|
||||
layout.operator("view3d.snap_selected_to_center", text="Selection to Origin")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -188,10 +235,10 @@ class VIEW3D_MT_view(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("view3d.viewnumpad").type = 'CAMERA'
|
||||
layout.operator("view3d.viewnumpad").type = 'TOP'
|
||||
layout.operator("view3d.viewnumpad").type = 'FRONT'
|
||||
layout.operator("view3d.viewnumpad").type = 'RIGHT'
|
||||
layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA'
|
||||
layout.operator("view3d.viewnumpad", text="Top").type = 'TOP'
|
||||
layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT'
|
||||
layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT'
|
||||
|
||||
layout.menu("VIEW3D_MT_view_cameras", text="Cameras")
|
||||
|
||||
@@ -223,12 +270,13 @@ class VIEW3D_MT_view(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.region_foursplit", text="Toggle Quad View")
|
||||
layout.operator("screen.screen_full_area", text="Toggle Full Screen")
|
||||
layout.operator("screen.animation_play", text="Playback Animation")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.animation_play", text="Playback Animation", icon='ICON_PLAY')
|
||||
layout.operator("screen.area_dupli")
|
||||
layout.operator("screen.region_quadview")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class VIEW3D_MT_view_navigation(bpy.types.Menu):
|
||||
@@ -318,7 +366,7 @@ class VIEW3D_MT_select_object(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("object.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("object.select_all", text="Select/Deselect All")
|
||||
layout.operator("object.select_inverse", text="Inverse")
|
||||
layout.operator("object.select_random", text="Random")
|
||||
layout.operator("object.select_mirror", text="Mirror")
|
||||
@@ -342,15 +390,15 @@ class VIEW3D_MT_select_pose(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("pose.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("pose.select_all", text="Select/Deselect All")
|
||||
layout.operator("pose.select_inverse", text="Inverse")
|
||||
layout.operator("pose.select_constraint_target", text="Constraint Target")
|
||||
layout.operator("pose.select_linked", text="Linked")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("pose.select_hierarchy").direction = 'PARENT'
|
||||
layout.operator("pose.select_hierarchy").direction = 'CHILD'
|
||||
layout.operator("pose.select_hierarchy", text="Parent").direction = 'PARENT'
|
||||
layout.operator("pose.select_hierarchy", text="Child").direction = 'CHILD'
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -362,6 +410,8 @@ class VIEW3D_MT_select_pose(bpy.types.Menu):
|
||||
props.extend = True
|
||||
props.direction = 'CHILD'
|
||||
|
||||
layout.operator("object.select_pattern", text="Select Pattern...")
|
||||
|
||||
|
||||
class VIEW3D_MT_select_particle(bpy.types.Menu):
|
||||
bl_label = "Select"
|
||||
@@ -373,7 +423,7 @@ class VIEW3D_MT_select_particle(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("particle.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("particle.select_all", text="Select/Deselect All")
|
||||
layout.operator("particle.select_linked")
|
||||
layout.operator("particle.select_inverse")
|
||||
|
||||
@@ -399,7 +449,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("mesh.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("mesh.select_all", text="Select/Deselect All")
|
||||
layout.operator("mesh.select_inverse", text="Inverse")
|
||||
|
||||
layout.separator()
|
||||
@@ -448,7 +498,7 @@ class VIEW3D_MT_select_edit_curve(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("curve.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("curve.select_all", text="Select/Deselect All")
|
||||
layout.operator("curve.select_inverse")
|
||||
layout.operator("curve.select_random")
|
||||
layout.operator("curve.select_every_nth")
|
||||
@@ -477,7 +527,7 @@ class VIEW3D_MT_select_edit_surface(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("curve.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("curve.select_all", text="Select/Deselect All")
|
||||
layout.operator("curve.select_inverse")
|
||||
layout.operator("curve.select_random")
|
||||
layout.operator("curve.select_every_nth")
|
||||
@@ -520,7 +570,7 @@ class VIEW3D_MT_select_edit_lattice(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("lattice.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("lattice.select_all", text="Select/Deselect All")
|
||||
|
||||
|
||||
class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
|
||||
@@ -534,7 +584,7 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("armature.select_all_toggle", text="Select/Deselect All")
|
||||
layout.operator("armature.select_all", text="Select/Deselect All")
|
||||
layout.operator("armature.select_inverse", text="Inverse")
|
||||
|
||||
layout.separator()
|
||||
@@ -552,13 +602,15 @@ class VIEW3D_MT_select_edit_armature(bpy.types.Menu):
|
||||
props.extend = True
|
||||
props.direction = 'CHILD'
|
||||
|
||||
layout.operator("object.select_pattern", text="Select Pattern...")
|
||||
|
||||
|
||||
class VIEW3D_MT_select_face(bpy.types.Menu):# XXX no matching enum
|
||||
bl_label = "Select"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
||||
# TODO
|
||||
# see view3d_select_faceselmenu
|
||||
|
||||
@@ -580,8 +632,8 @@ class VIEW3D_MT_object(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...")
|
||||
layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...")
|
||||
layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...")
|
||||
layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -592,7 +644,6 @@ class VIEW3D_MT_object(bpy.types.Menu):
|
||||
layout.menu("VIEW3D_MT_make_links", text="Make Links...")
|
||||
layout.operator_menu_enum("object.make_local", "type", text="Make Local...")
|
||||
layout.menu("VIEW3D_MT_make_single_user")
|
||||
layout.menu("VIEW3D_MT_make_links")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -603,6 +654,7 @@ class VIEW3D_MT_object(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("object.join_shapes")
|
||||
layout.operator("object.join")
|
||||
|
||||
layout.separator()
|
||||
@@ -749,7 +801,7 @@ class VIEW3D_MT_hook(bpy.types.Menu):
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("object.hook_add_newob")
|
||||
layout.operator("object.hook_add_selob")
|
||||
|
||||
|
||||
if [mod.type == 'HOOK' for mod in context.active_object.modifiers]:
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("object.hook_assign", "modifier")
|
||||
@@ -767,7 +819,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("object.vertex_group_assign", text="Assign to New Group").new = True
|
||||
|
||||
|
||||
ob = context.active_object
|
||||
if ob.mode == 'EDIT':
|
||||
if ob.vertex_groups and ob.active_vertex_group:
|
||||
@@ -776,7 +828,7 @@ class VIEW3D_MT_vertex_group(bpy.types.Menu):
|
||||
layout.operator("object.vertex_group_remove_from", text="Remove from Active Group")
|
||||
layout.operator("object.vertex_group_remove_from", text="Remove from All").all = True
|
||||
layout.separator()
|
||||
|
||||
|
||||
if ob.vertex_groups and ob.active_vertex_group:
|
||||
layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group")
|
||||
layout.operator("object.vertex_group_remove", text="Remove Active Group")
|
||||
@@ -862,7 +914,7 @@ class VIEW3D_MT_pose(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
arm = context.active_object.data
|
||||
|
||||
|
||||
layout.menu("VIEW3D_MT_transform")
|
||||
layout.menu("VIEW3D_MT_snap")
|
||||
if arm.drawtype in ('BBONE', 'ENVELOPE'):
|
||||
@@ -872,8 +924,8 @@ class VIEW3D_MT_pose(bpy.types.Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("anim.insert_keyframe_menu", text="Insert Keyframe...")
|
||||
layout.operator("anim.delete_keyframe_v3d", text="Delete Keyframe...")
|
||||
layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...")
|
||||
layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -1202,7 +1254,7 @@ def draw_curve(self, context):
|
||||
layout = self.layout
|
||||
|
||||
settings = context.tool_settings
|
||||
|
||||
|
||||
layout.menu("VIEW3D_MT_transform")
|
||||
layout.menu("VIEW3D_MT_mirror")
|
||||
layout.menu("VIEW3D_MT_snap")
|
||||
@@ -1338,7 +1390,7 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu):
|
||||
layout.operator("ed.redo")
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
||||
layout.menu("VIEW3D_MT_transform")
|
||||
layout.menu("VIEW3D_MT_mirror")
|
||||
layout.menu("VIEW3D_MT_snap")
|
||||
@@ -1376,7 +1428,7 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
settings = context.tool_settings
|
||||
|
||||
|
||||
layout.menu("VIEW3D_MT_transform")
|
||||
layout.menu("VIEW3D_MT_mirror")
|
||||
layout.menu("VIEW3D_MT_snap")
|
||||
@@ -1399,7 +1451,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu):
|
||||
|
||||
edit_object = context.edit_object
|
||||
arm = edit_object.data
|
||||
|
||||
|
||||
layout.menu("VIEW3D_MT_transform")
|
||||
layout.menu("VIEW3D_MT_mirror")
|
||||
layout.menu("VIEW3D_MT_snap")
|
||||
@@ -1516,18 +1568,16 @@ class VIEW3D_PT_3dview_properties(bpy.types.Panel):
|
||||
col.label(text="Camera:")
|
||||
col.prop(view, "camera", text="")
|
||||
col.prop(view, "lens")
|
||||
col.label(text="Lock to Object:")
|
||||
col.prop(view, "lock_object", text="")
|
||||
if view.lock_object and view.lock_object.type == 'ARMATURE':
|
||||
col.prop_object(view, "lock_bone", view.lock_object.data, "bones", text="")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Clip:")
|
||||
col.prop(view, "clip_start", text="Start")
|
||||
col.prop(view, "clip_end", text="End")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Grid:")
|
||||
col.prop(view, "grid_lines", text="Lines")
|
||||
col.prop(view, "grid_spacing", text="Spacing")
|
||||
col.prop(view, "grid_subdivisions", text="Subdivisions")
|
||||
|
||||
layout.column().prop(scene, "cursor_location", text="3D Cursor:")
|
||||
|
||||
class VIEW3D_PT_3dview_item(bpy.types.Panel):
|
||||
@@ -1577,17 +1627,24 @@ class VIEW3D_PT_3dview_display(bpy.types.Panel):
|
||||
ob = context.object
|
||||
|
||||
col = layout.column()
|
||||
col.prop(view, "display_floor", text="Grid Floor")
|
||||
col.prop(view, "display_x_axis", text="X Axis")
|
||||
col.prop(view, "display_y_axis", text="Y Axis")
|
||||
col.prop(view, "display_z_axis", text="Z Axis")
|
||||
col.prop(view, "outline_selected")
|
||||
col.prop(view, "all_object_centers")
|
||||
col.prop(view, "all_object_origins")
|
||||
col.prop(view, "relationship_lines")
|
||||
if ob and ob.type == 'MESH':
|
||||
mesh = ob.data
|
||||
col.prop(mesh, "all_edges")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(view, "display_floor", text="Grid Floor")
|
||||
sub = col.column(align=True)
|
||||
sub.active = view.display_floor
|
||||
sub.prop(view, "grid_lines", text="Lines")
|
||||
sub.prop(view, "grid_spacing", text="Spacing")
|
||||
sub.prop(view, "grid_subdivisions", text="Subdivisions")
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Shading:")
|
||||
col.prop(gs, "material_mode", text="")
|
||||
@@ -1687,8 +1744,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
|
||||
layout.active = view.display_background_image
|
||||
|
||||
col = layout.column()
|
||||
col.prop(bg, "image", text="")
|
||||
#col.prop(bg, "image_user")
|
||||
col.template_ID(bg, "image", open="image.open")
|
||||
col.prop(bg, "size")
|
||||
col.prop(bg, "transparency", slider=True)
|
||||
|
||||
@@ -1786,7 +1842,7 @@ class VIEW3D_PT_context_properties(bpy.types.Panel):
|
||||
return "object"
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def poll(self, context):
|
||||
member = self._active_context_member(context)
|
||||
if member:
|
||||
@@ -1805,46 +1861,6 @@ class VIEW3D_PT_context_properties(bpy.types.Panel):
|
||||
rna_prop_ui.draw(self.layout, context, member, False)
|
||||
|
||||
|
||||
# Operators
|
||||
from bpy.props import *
|
||||
|
||||
|
||||
class OBJECT_OT_select_pattern(bpy.types.Operator):
|
||||
'''Select object matching a naming pattern.'''
|
||||
bl_idname = "object.select_pattern"
|
||||
bl_label = "Select Pattern"
|
||||
bl_register = True
|
||||
bl_undo = True
|
||||
|
||||
pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*")
|
||||
case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False)
|
||||
extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True)
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
import fnmatch
|
||||
|
||||
if self.properties.case_sensitive:
|
||||
pattern_match = fnmatch.fnmatchcase
|
||||
else:
|
||||
pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper())
|
||||
|
||||
for ob in context.visible_objects:
|
||||
if pattern_match(ob.name, self.properties.pattern):
|
||||
ob.selected = True
|
||||
elif not self.properties.extend:
|
||||
ob.selected = False
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
# TODO - python cant do popups yet
|
||||
'''
|
||||
def invoke(self, context, event):
|
||||
wm = context.manager
|
||||
wm.add_fileselect(self)
|
||||
return ('RUNNING_MODAL',)
|
||||
'''
|
||||
|
||||
bpy.types.register(VIEW3D_HT_header) # Header
|
||||
|
||||
bpy.types.register(VIEW3D_MT_view) #View Menus
|
||||
@@ -1939,5 +1955,3 @@ bpy.types.register(VIEW3D_PT_transform_orientations)
|
||||
bpy.types.register(VIEW3D_PT_etch_a_ton)
|
||||
|
||||
bpy.types.register(VIEW3D_PT_context_properties)
|
||||
|
||||
bpy.ops.add(OBJECT_OT_select_pattern)
|
||||
|
||||
@@ -57,8 +57,8 @@ class VIEW3D_PT_tools_objectmode(View3DPanel):
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Keyframes:")
|
||||
col.operator("anim.insert_keyframe_menu", text="Insert")
|
||||
col.operator("anim.delete_keyframe_v3d", text="Remove")
|
||||
col.operator("anim.keyframe_insert_menu", text="Insert")
|
||||
col.operator("anim.keyframe_delete_v3d", text="Remove")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Repeat:")
|
||||
@@ -101,8 +101,8 @@ class VIEW3D_PT_tools_meshedit(View3DPanel):
|
||||
col.label(text="Add:")
|
||||
col.operator("mesh.extrude_move")
|
||||
col.operator("mesh.subdivide")
|
||||
col.operator("mesh.loopcut")
|
||||
col.operator("mesh.duplicate_move")
|
||||
col.operator("mesh.loopcut_slide")
|
||||
col.operator("mesh.duplicate_move", text="Duplicate")
|
||||
col.operator("mesh.spin")
|
||||
col.operator("mesh.screw")
|
||||
|
||||
@@ -171,10 +171,10 @@ class VIEW3D_PT_tools_curveedit(View3DPanel):
|
||||
col.operator("tfm.translate")
|
||||
col.operator("tfm.rotate")
|
||||
col.operator("tfm.resize", text="Scale")
|
||||
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.operator("tfm.transform").mode = 'TILT'
|
||||
col.operator("tfm.transform").mode = 'CURVE_SHRINKFATTEN'
|
||||
col.operator("tfm.transform", text="Tilt").mode = 'TILT'
|
||||
col.operator("tfm.transform", text="Shrink/Fatten").mode = 'CURVE_SHRINKFATTEN'
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Curve:")
|
||||
@@ -188,9 +188,9 @@ class VIEW3D_PT_tools_curveedit(View3DPanel):
|
||||
col.label(text="Handles:")
|
||||
row = col.row()
|
||||
row.operator("curve.handle_type_set", text="Auto").type = 'AUTOMATIC'
|
||||
row.operator("curve.handle_type_set").type = 'VECTOR'
|
||||
row.operator("curve.handle_type_set", text="Vector").type = 'VECTOR'
|
||||
row = col.row()
|
||||
row.operator("curve.handle_type_set").type = 'ALIGN'
|
||||
row.operator("curve.handle_type_set", text="Align").type = 'ALIGN'
|
||||
row.operator("curve.handle_type_set", text="Free").type = 'FREE_ALIGN'
|
||||
|
||||
col = layout.column(align=True)
|
||||
@@ -273,9 +273,9 @@ class VIEW3D_PT_tools_textedit(View3DPanel):
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Style:")
|
||||
col.operator("font.style_toggle").style = 'BOLD'
|
||||
col.operator("font.style_toggle").style = 'ITALIC'
|
||||
col.operator("font.style_toggle").style = 'UNDERLINE'
|
||||
col.operator("font.style_toggle", text="Bold").style = 'BOLD'
|
||||
col.operator("font.style_toggle", text="Italic").style = 'ITALIC'
|
||||
col.operator("font.style_toggle", text="Underline").style = 'UNDERLINE'
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Repeat:")
|
||||
@@ -430,8 +430,8 @@ class VIEW3D_PT_tools_posemode(View3DPanel):
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Keyframes:")
|
||||
|
||||
col.operator("anim.insert_keyframe_menu", text="Insert")
|
||||
col.operator("anim.delete_keyframe_v3d", text="Remove")
|
||||
col.operator("anim.keyframe_insert_menu", text="Insert")
|
||||
col.operator("anim.keyframe_delete_v3d", text="Remove")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Repeat:")
|
||||
|
||||
Reference in New Issue
Block a user