Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-12-07 22:22:48 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-12-07 22:22:48 +0300
commit82ddfbf99fc0776a7fe439b81cf71bab87ceaaf9 (patch)
treefb1eda53eeeab12b093f5178693923b606708b05 /release/scripts/ui
parent4ca2581b77112c488938f0a2dc226042e0390b71 (diff)
parentfc69c54c4ce810e6236eaa45017130f27ba3f1e2 (diff)
Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24889:25180
Diffstat (limited to 'release/scripts/ui')
-rw-r--r--release/scripts/ui/properties_data_bone.py3
-rw-r--r--release/scripts/ui/properties_data_curve.py7
-rw-r--r--release/scripts/ui/properties_data_modifier.py24
-rw-r--r--release/scripts/ui/properties_material.py4
-rw-r--r--release/scripts/ui/properties_object.py2
-rw-r--r--release/scripts/ui/properties_object_constraint.py79
-rw-r--r--release/scripts/ui/properties_particle.py10
-rw-r--r--release/scripts/ui/properties_physics_cloth.py8
-rw-r--r--release/scripts/ui/properties_physics_common.py2
-rw-r--r--release/scripts/ui/properties_render.py8
-rw-r--r--release/scripts/ui/properties_world.py2
-rw-r--r--release/scripts/ui/space_console.py5
-rw-r--r--release/scripts/ui/space_graph.py192
-rw-r--r--release/scripts/ui/space_image.py25
-rw-r--r--release/scripts/ui/space_info.py10
-rw-r--r--release/scripts/ui/space_node.py4
-rw-r--r--release/scripts/ui/space_outliner.py9
-rw-r--r--release/scripts/ui/space_sequencer.py33
-rw-r--r--release/scripts/ui/space_text.py6
-rw-r--r--release/scripts/ui/space_time.py9
-rw-r--r--release/scripts/ui/space_userpref.py53
-rw-r--r--release/scripts/ui/space_view3d.py234
-rw-r--r--release/scripts/ui/space_view3d_toolbar.py28
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:")