diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-12-07 22:22:48 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-12-07 22:22:48 +0300 |
commit | 82ddfbf99fc0776a7fe439b81cf71bab87ceaaf9 (patch) | |
tree | fb1eda53eeeab12b093f5178693923b606708b05 /release/scripts/ui | |
parent | 4ca2581b77112c488938f0a2dc226042e0390b71 (diff) | |
parent | fc69c54c4ce810e6236eaa45017130f27ba3f1e2 (diff) |
Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24889:25180
Diffstat (limited to 'release/scripts/ui')
23 files changed, 529 insertions, 228 deletions
diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py index 40877a6be08..4a10ff80a32 100644 --- a/release/scripts/ui/properties_data_bone.py +++ b/release/scripts/ui/properties_data_bone.py @@ -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): diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py index 9a7961cfa33..3ee16ad9585 100644 --- a/release/scripts/ui/properties_data_curve.py +++ b/release/scripts/ui/properties_data_curve.py @@ -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 diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py index 8e0f2f539e2..54a4defb676 100644 --- a/release/scripts/ui/properties_data_modifier.py +++ b/release/scripts/ui/properties_data_modifier.py @@ -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: diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py index 0f3221254cc..50fc0a7ded9 100644 --- a/release/scripts/ui/properties_material.py +++ b/release/scripts/ui/properties_material.py @@ -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() diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py index d8dd13aac7a..c7c1ce24d59 100644 --- a/release/scripts/ui/properties_object.py +++ b/release/scripts/ui/properties_object.py @@ -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() diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py index d654543b60f..d6552585191 100644 --- a/release/scripts/ui/properties_object_constraint.py +++ b/release/scripts/ui/properties_object_constraint.py @@ -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) diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py index 1b4ba95f540..3577ba961b3 100644 --- a/release/scripts/ui/properties_particle.py +++ b/release/scripts/ui/properties_particle.py @@ -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="") diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py index d483bf8f804..305244bf918 100644 --- a/release/scripts/ui/properties_physics_cloth.py +++ b/release/scripts/ui/properties_physics_cloth.py @@ -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) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py index d1720a2c323..7c1d71302ec 100644 --- a/release/scripts/ui/properties_physics_common.py +++ b/release/scripts/ui/properties_physics_common.py @@ -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() diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py index f267a0c0a45..aa04e277f69 100644 --- a/release/scripts/ui/properties_render.py +++ b/release/scripts/ui/properties_render.py @@ -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() diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py index 4f662df8cc8..9adc8d0bad4 100644 --- a/release/scripts/ui/properties_world.py +++ b/release/scripts/ui/properties_world.py @@ -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) diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index e4c4072ffe2..7fe5e876f33 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -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" diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py new file mode 100644 index 00000000000..38f6b526e9a --- /dev/null +++ b/release/scripts/ui/space_graph.py @@ -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) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index ae38f8dabcf..5714a3d2548 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -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) diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index 5eea68728d6..ad94bdd0beb 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -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.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' diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index cc5b3fe7977..c05ab767f85 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -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") diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index 5cb8721603d..cc2c6a633ae 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -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" diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 8ac77a50d55..b2bd017262f 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -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") diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index f3e0dbb57c4..95175e9ce41 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -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") diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 3c855816578..4c1111cee47 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -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") diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 4dfcc80ca1d..5a8dbf9ee80 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -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.") diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index 5f3a86e81b3..ecaff9cbf40 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -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,18 +1627,25 @@ 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="") col.prop(view, "textured_solid") @@ -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) diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index 8d0c644cb11..e9dfe3ffd94 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -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:") |