diff options
Diffstat (limited to 'release/scripts/startup')
33 files changed, 364 insertions, 323 deletions
diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py index 6193611504e..41f39b90464 100644 --- a/release/scripts/startup/bl_operators/anim.py +++ b/release/scripts/startup/bl_operators/anim.py @@ -281,15 +281,3 @@ class ClearUselessActions(Operator): self.report({'INFO'}, "Removed %d empty and/or fake-user only Actions" % removed) return {'FINISHED'} - - -class UpdateAnimData(Operator): - """Update data paths from 2.56 and previous versions, """ \ - """modifying data paths of drivers and fcurves""" - bl_idname = "anim.update_data_paths" - bl_label = "Update Animation Data" - - def execute(self, context): - import animsys_refactor - animsys_refactor.update_data_paths(animsys_refactor.data_2_56_to_2_59) - return {'FINISHED'} diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py index 77978c71ed9..0814d0144ab 100644 --- a/release/scripts/startup/bl_operators/node.py +++ b/release/scripts/startup/bl_operators/node.py @@ -222,7 +222,7 @@ class NODE_OT_add_search(NodeAddOperator, Operator): self.create_node(context, item.nodetype) if self.use_transform: - bpy.ops.transform.translate('INVOKE_DEFAULT') + bpy.ops.transform.translate('INVOKE_DEFAULT', remove_on_cancel=True) return {'FINISHED'} else: diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index 05dfd882180..ae6ec3946f1 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -221,7 +221,7 @@ class ExecutePreset(Operator): class AddPresetRender(AddPresetBase, Operator): - """Add a Render Preset""" + """Add or remove a Render Preset""" bl_idname = "render.preset_add" bl_label = "Add Render Preset" preset_menu = "RENDER_MT_presets" @@ -247,7 +247,7 @@ class AddPresetRender(AddPresetBase, Operator): class AddPresetCamera(AddPresetBase, Operator): - """Add a Camera Preset""" + """Add or remove a Camera Preset""" bl_idname = "camera.preset_add" bl_label = "Add Camera Preset" preset_menu = "CAMERA_MT_presets" @@ -266,7 +266,7 @@ class AddPresetCamera(AddPresetBase, Operator): class AddPresetSSS(AddPresetBase, Operator): - """Add a Subsurface Scattering Preset""" + """Add or remove a Subsurface Scattering Preset""" bl_idname = "material.sss_preset_add" bl_label = "Add SSS Preset" preset_menu = "MATERIAL_MT_sss_presets" @@ -294,7 +294,7 @@ class AddPresetSSS(AddPresetBase, Operator): class AddPresetCloth(AddPresetBase, Operator): - """Add a Cloth Preset""" + """Add or remove a Cloth Preset""" bl_idname = "cloth.preset_add" bl_label = "Add Cloth Preset" preset_menu = "CLOTH_MT_presets" @@ -316,7 +316,7 @@ class AddPresetCloth(AddPresetBase, Operator): class AddPresetFluid(AddPresetBase, Operator): - """Add a Fluid Preset""" + """Add or remove a Fluid Preset""" bl_idname = "fluid.preset_add" bl_label = "Add Fluid Preset" preset_menu = "FLUID_MT_presets" @@ -334,7 +334,7 @@ class AddPresetFluid(AddPresetBase, Operator): class AddPresetSunSky(AddPresetBase, Operator): - """Add a Sky & Atmosphere Preset""" + """Add or remove a Sky & Atmosphere Preset""" bl_idname = "lamp.sunsky_preset_add" bl_label = "Add Sunsky Preset" preset_menu = "LAMP_MT_sunsky_presets" @@ -363,7 +363,7 @@ class AddPresetSunSky(AddPresetBase, Operator): class AddPresetInteraction(AddPresetBase, Operator): - """Add an Application Interaction Preset""" + """Add or remove an Application Interaction Preset""" bl_idname = "wm.interaction_preset_add" bl_label = "Add Interaction Preset" preset_menu = "USERPREF_MT_interaction_presets" @@ -389,7 +389,7 @@ class AddPresetInteraction(AddPresetBase, Operator): class AddPresetTrackingCamera(AddPresetBase, Operator): - """Add a Tracking Camera Intrinsics Preset""" + """Add or remove a Tracking Camera Intrinsics Preset""" bl_idname = "clip.camera_preset_add" bl_label = "Add Camera Preset" preset_menu = "CLIP_MT_camera_presets" @@ -412,7 +412,7 @@ class AddPresetTrackingCamera(AddPresetBase, Operator): class AddPresetTrackingTrackColor(AddPresetBase, Operator): - """Add a Clip Track Color Preset""" + """Add or remove a Clip Track Color Preset""" bl_idname = "clip.track_color_preset_add" bl_label = "Add Track Color Preset" preset_menu = "CLIP_MT_track_color_presets" @@ -430,7 +430,7 @@ class AddPresetTrackingTrackColor(AddPresetBase, Operator): class AddPresetTrackingSettings(AddPresetBase, Operator): - """Add a motion tracking settings preset""" + """Add or remove a motion tracking settings preset""" bl_idname = "clip.tracking_settings_preset_add" bl_label = "Add Tracking Settings Preset" preset_menu = "CLIP_MT_tracking_settings_presets" @@ -459,7 +459,7 @@ class AddPresetTrackingSettings(AddPresetBase, Operator): class AddPresetNodeColor(AddPresetBase, Operator): - """Add a Node Color Preset""" + """Add or remove a Node Color Preset""" bl_idname = "node.node_color_preset_add" bl_label = "Add Node Color Preset" preset_menu = "NODE_MT_node_color_presets" @@ -477,7 +477,7 @@ class AddPresetNodeColor(AddPresetBase, Operator): class AddPresetInterfaceTheme(AddPresetBase, Operator): - """Add a theme preset""" + """Add or remove a theme preset""" bl_idname = "wm.interface_theme_preset_add" bl_label = "Add Theme Preset" preset_menu = "USERPREF_MT_interface_theme_presets" @@ -485,7 +485,7 @@ class AddPresetInterfaceTheme(AddPresetBase, Operator): class AddPresetKeyconfig(AddPresetBase, Operator): - """Add a Key-config Preset""" + """Add or remove a Key-config Preset""" bl_idname = "wm.keyconfig_preset_add" bl_label = "Add Keyconfig Preset" preset_menu = "USERPREF_MT_keyconfigs" @@ -508,7 +508,7 @@ class AddPresetKeyconfig(AddPresetBase, Operator): class AddPresetOperator(AddPresetBase, Operator): - """Add an Operator Preset""" + """Add or remove an Operator Preset""" bl_idname = "wm.operator_preset_add" bl_label = "Operator Preset" preset_menu = "WM_MT_operator_presets" diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py index 6d1f35fe937..04c28500089 100644 --- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -115,11 +115,17 @@ class PlayRenderedAnim(Operator): cmd = [player_path] # extra options, fps controls etc. + if scene.use_preview_range: + frame_start = scene.frame_preview_start + frame_end = scene.frame_preview_end + else: + frame_start = scene.frame_start + frame_end = scene.frame_end if preset in {'BLENDER24', 'INTERNAL'}: opts = ["-a", "-f", str(rd.fps), str(rd.fps_base), - "-s", str(scene.frame_start), - "-e", str(scene.frame_end), + "-s", str(frame_start), + "-e", str(frame_end), "-j", str(scene.frame_step), file] cmd.extend(opts) diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py index e0b5526e220..2ec095d2e7b 100644 --- a/release/scripts/startup/bl_operators/view3d.py +++ b/release/scripts/startup/bl_operators/view3d.py @@ -29,6 +29,11 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator): bl_label = "Extrude Individual and Move" bl_idname = "view3d.edit_mesh_extrude_individual_move" + @classmethod + def poll(cls, context): + obj = context.active_object + return obj.mode == 'EDIT' + def execute(self, context): mesh = context.object.data select_mode = context.tool_settings.mesh_select_mode @@ -62,7 +67,13 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator): bl_label = "Extrude and Move on Normals" bl_idname = "view3d.edit_mesh_extrude_move_normal" - def execute(self, context): + @classmethod + def poll(cls, context): + obj = context.active_object + return obj.mode == 'EDIT' + + @staticmethod + def extrude_region(context, use_vert_normals): mesh = context.object.data totface = mesh.total_face_sel @@ -70,10 +81,15 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator): #~ totvert = mesh.total_vert_sel if totface >= 1: - bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN', - TRANSFORM_OT_translate={ - "constraint_orientation": 'NORMAL', - "constraint_axis": (False, False, True)}) + if use_vert_normals: + bpy.ops.mesh.extrude_region_shrink_fatten('INVOKE_REGION_WIN', + TRANSFORM_OT_shrink_fatten={}) + else: + bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN', + TRANSFORM_OT_translate={ + "constraint_orientation": 'NORMAL', + "constraint_axis": (False, False, True)}) + elif totedge == 1: bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN', TRANSFORM_OT_translate={ @@ -88,6 +104,26 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator): # and cause this one not to be freed. [#24671] return {'FINISHED'} + def execute(self, context): + return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, False) + + def invoke(self, context, event): + return self.execute(context) + + +class VIEW3D_OT_edit_mesh_extrude_shrink_fatten(Operator): + "Extrude and move along individual normals" + bl_label = "Extrude and Move on Individual Normals" + bl_idname = "view3d.edit_mesh_extrude_move_shrink_fatten" + + @classmethod + def poll(cls, context): + obj = context.active_object + return obj.mode == 'EDIT' + + def execute(self, context): + return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, True) + def invoke(self, context, event): return self.execute(context) diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 5a249159d86..4b954e81ee1 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1298,10 +1298,10 @@ class WM_OT_blenderplayer_start(Operator): # handle some UI options as command line arguments args.extend([ - "-g", "show_framerate=%d" % gs.show_framerate_profile, - "-g", "show_profile=%d" % gs.show_framerate_profile, - "-g", "show_properties=%d" % gs.show_debug_properties, - "-g", "ignore_deprecation_warnings=%d" % (not gs.use_deprecation_warnings), + "-g", "show_framerate", "=", "%d" % gs.show_framerate_profile, + "-g", "show_profile", "=", "%d" % gs.show_framerate_profile, + "-g", "show_properties", "=", "%d" % gs.show_debug_properties, + "-g", "ignore_deprecation_warnings", "=", "%d" % (not gs.use_deprecation_warnings), ]) # finish the call with the path to the blend file diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index e01764a5496..a274453a472 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -121,9 +121,9 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel): row = layout.row() - rows = 2 + rows = 1 if group: - rows = 5 + rows = 4 row.template_list("UI_UL_list", "bone_groups", pose, "bone_groups", pose.bone_groups, "active_index", rows=rows) col = row.column(align=True) @@ -184,7 +184,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): # list of poses in pose library row = layout.row() row.template_list("UI_UL_list", "pose_markers", poselib, "pose_markers", - poselib.pose_markers, "active_index", rows=5) + poselib.pose_markers, "active_index", rows=3) # column of operators for active pose # - goes beside list diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py index 117a662cd07..2171ce67fd3 100644 --- a/release/scripts/startup/bl_ui/properties_data_curve.py +++ b/release/scripts/startup/bl_ui/properties_data_curve.py @@ -307,6 +307,10 @@ class DATA_PT_font(CurveButtonsPanel, Panel): #layout.prop(text, "font") + row = layout.split(percentage=0.25) + row.label(text="Body Text:") + row.prop(text, "body", text="") + split = layout.split() col = split.column() diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index a703222ecd0..f59d479c509 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -191,9 +191,9 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel): ob = context.object group = ob.vertex_groups.active - rows = 2 + rows = 1 if group: - rows = 5 + rows = 4 row = layout.row() row.template_list("MESH_UL_vgroups", "", ob, "vertex_groups", ob.vertex_groups, "active_index", rows=rows) @@ -250,9 +250,9 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel): row = layout.row() - rows = 2 + rows = 1 if kb: - rows = 5 + rows = 4 row.template_list("MESH_UL_shape_keys", "", key, "key_blocks", ob, "active_shape_key_index", rows=rows) col = row.column() @@ -329,17 +329,17 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel): layout = self.layout me = context.mesh + lay = me.uv_textures.active row = layout.row() col = row.column() - col.template_list("MESH_UL_uvmaps_vcols", "uvmaps", me, "uv_textures", me.uv_textures, "active_index", rows=2) + col.template_list("MESH_UL_uvmaps_vcols", "uvmaps", me, "uv_textures", me.uv_textures, "active_index", rows=1) col = row.column(align=True) col.operator("mesh.uv_texture_add", icon='ZOOMIN', text="") col.operator("mesh.uv_texture_remove", icon='ZOOMOUT', text="") - lay = me.uv_textures.active if lay: layout.prop(lay, "name") @@ -352,17 +352,17 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, Panel): layout = self.layout me = context.mesh + lay = me.vertex_colors.active row = layout.row() col = row.column() - col.template_list("MESH_UL_uvmaps_vcols", "vcols", me, "vertex_colors", me.vertex_colors, "active_index", rows=2) + col.template_list("MESH_UL_uvmaps_vcols", "vcols", me, "vertex_colors", me.vertex_colors, "active_index", rows=1) col = row.column(align=True) col.operator("mesh.vertex_color_add", icon='ZOOMIN', text="") col.operator("mesh.vertex_color_remove", icon='ZOOMOUT', text="") - lay = me.vertex_colors.active if lay: layout.prop(lay, "name") diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index 9bfc14f1f28..288330084b9 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -1099,7 +1099,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): col.prop(md, "use_z_symmetry") def TRIANGULATE(self, layout, ob, md): - layout.prop(md, "use_beauty") + row = layout.row() + + col = row.column() + col.label(text="Quad Method:") + col.prop(md, "quad_method", text="") + col = row.column() + col.label(text="Ngon Method:") + col.prop(md, "ngon_method", text="") def UV_WARP(self, layout, ob, md): split = layout.split() diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py index a96441a26e5..a57567ae79e 100644 --- a/release/scripts/startup/bl_ui/properties_freestyle.py +++ b/release/scripts/startup/bl_ui/properties_freestyle.py @@ -193,7 +193,7 @@ class RENDERLAYER_PT_freestyle_lineset(RenderLayerFreestyleEditorButtonsPanel, P layout.active = rl.use_freestyle row = layout.row() - rows = 5 if lineset else 2 + rows = 4 if lineset else 1 row.template_list("RENDERLAYER_UL_linesets", "", freestyle, "linesets", freestyle.linesets, "active_index", rows=rows) sub = row.column(align=True) diff --git a/release/scripts/startup/bl_ui/properties_mask_common.py b/release/scripts/startup/bl_ui/properties_mask_common.py index 45f3471ad35..203e5078ee4 100644 --- a/release/scripts/startup/bl_ui/properties_mask_common.py +++ b/release/scripts/startup/bl_ui/properties_mask_common.py @@ -82,7 +82,7 @@ class MASK_PT_layers: mask = sc.mask active_layer = mask.layers.active - rows = 5 if active_layer else 2 + rows = 4 if active_layer else 1 row = layout.row() row.template_list("MASK_UL_layers", "", mask, "layers", diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index bb0b137da0a..344074c5893 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -124,7 +124,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel): if ob: row = layout.row() - row.template_list("MATERIAL_UL_matslots", "", ob, "material_slots", ob, "active_material_index", rows=2) + row.template_list("MATERIAL_UL_matslots", "", ob, "material_slots", ob, "active_material_index", rows=1) col = row.column(align=True) col.operator("object.material_slot_add", icon='ZOOMIN', text="") diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py index 6b317c49487..cbebdafbf2e 100644 --- a/release/scripts/startup/bl_ui/properties_object.py +++ b/release/scripts/startup/bl_ui/properties_object.py @@ -236,7 +236,7 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel): col = split.column() if obj_type not in {'CAMERA', 'EMPTY'}: - col.label(text="Maximum draw type:") + col.label(text="Maximum Draw Type:") col.prop(obj, "draw_type", text="") col = split.column() diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 0d526514b5c..f8a37e2768f 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -98,7 +98,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel): row = layout.row() row.template_list("UI_UL_list", "particle_systems", ob, "particle_systems", - ob.particle_systems, "active_index", rows=2) + ob.particle_systems, "active_index", rows=1) col = row.column(align=True) col.operator("object.particle_system_add", icon='ZOOMIN', text="") @@ -211,12 +211,12 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel): row.active = part.distribution != 'GRID' row.prop(part, "count") - if part.type == 'HAIR' and not part.use_advanced_hair: + if part.type == 'HAIR': row.prop(part, "hair_length") - - row = layout.row() - row.prop(part, "use_modifier_stack") - return + if not part.use_advanced_hair: + row = layout.row() + row.prop(part, "use_modifier_stack") + return if part.type != 'HAIR': split = layout.split() @@ -642,7 +642,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): layout.label(text="Fluid interaction:") row = layout.row() - row.template_list("UI_UL_list", "particle_targets", psys, "targets", psys, "active_particle_target_index") + row.template_list("UI_UL_list", "particle_targets", psys, "targets", psys, "active_particle_target_index", rows=4) col = row.column() sub = col.row() @@ -730,7 +730,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel): row.label(text="") row = layout.row() - row.template_list("UI_UL_list", "particle_boids_rules", state, "rules", state, "active_boid_rule_index") + row.template_list("UI_UL_list", "particle_boids_rules", state, "rules", state, "active_boid_rule_index", rows=4) col = row.column() sub = col.row() @@ -1214,28 +1214,34 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel): ob = context.object psys = context.particle_system - split = layout.split(percentage=0.85) + col = layout.column() + row = col.row(align=True) + row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density") + row.prop(psys, "invert_vertex_group_density", text="", toggle=True, icon='ARROW_LEFTRIGHT') - col = split.column() - col.label(text="Vertex Group:") - col.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density") - col.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length") - col.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump") - col.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink") - col.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1") - col.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2") - col.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End") + row = col.row(align=True) + row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length") + row.prop(psys, "invert_vertex_group_length", text="", toggle=True, icon='ARROW_LEFTRIGHT') - col = split.column() - col.label(text="Negate:") - col.alignment = 'RIGHT' - col.prop(psys, "invert_vertex_group_density", text="") - col.prop(psys, "invert_vertex_group_length", text="") - col.prop(psys, "invert_vertex_group_clump", text="") - col.prop(psys, "invert_vertex_group_kink", text="") - col.prop(psys, "invert_vertex_group_roughness_1", text="") - col.prop(psys, "invert_vertex_group_roughness_2", text="") - col.prop(psys, "invert_vertex_group_roughness_end", text="") + row = col.row(align=True) + row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump") + row.prop(psys, "invert_vertex_group_clump", text="", toggle=True, icon='ARROW_LEFTRIGHT') + + row = col.row(align=True) + row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink") + row.prop(psys, "invert_vertex_group_kink", text="", toggle=True, icon='ARROW_LEFTRIGHT') + + row = col.row(align=True) + row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1") + row.prop(psys, "invert_vertex_group_roughness_1", text="", toggle=True, icon='ARROW_LEFTRIGHT') + + row = col.row(align=True) + row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2") + row.prop(psys, "invert_vertex_group_roughness_2", text="", toggle=True, icon='ARROW_LEFTRIGHT') + + row = col.row(align=True) + row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End") + row.prop(psys, "invert_vertex_group_roughness_end", text="", toggle=True, icon='ARROW_LEFTRIGHT') # Commented out vertex groups don't work and are still waiting for better implementation # row = layout.row() diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index 22c71c233c2..4b4c331d2d8 100644 --- a/release/scripts/startup/bl_ui/properties_physics_common.py +++ b/release/scripts/startup/bl_ui/properties_physics_common.py @@ -107,7 +107,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype): if not cachetype == 'RIGID_BODY': row = layout.row() row.template_list("UI_UL_list", "point_caches", cache, "point_caches", - cache.point_caches, "active_index", rows=2) + cache.point_caches, "active_index", rows=1) col = row.column(align=True) col.operator("ptcache.add", icon='ZOOMIN', text="") col.operator("ptcache.remove", icon='ZOOMOUT', text="") diff --git a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py index 75c4caa57bd..f0c7a532414 100644 --- a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py +++ b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py @@ -80,7 +80,7 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel): row = layout.row() row.template_list("PHYSICS_UL_dynapaint_surfaces", "", canvas, "canvas_surfaces", - canvas.canvas_surfaces, "active_index", rows=2) + canvas.canvas_surfaces, "active_index", rows=1) col = row.column(align=True) col.operator("dpaint.surface_slot_add", icon='ZOOMIN', text="") diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 288f95ca4b0..5e54287ac33 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -67,9 +67,11 @@ class RENDER_PT_render(RenderButtonsPanel, Panel): row = layout.row(align=True) row.operator("render.render", text="Render", icon='RENDER_STILL') row.operator("render.render", text="Animation", icon='RENDER_ANIMATION').animation = True - row.operator("render.play_rendered_anim", text="Play", icon='PLAY') + row.operator("sound.mixdown", text="Audio", icon='PLAY_AUDIO') - layout.prop(rd, "display_mode", text="Display") + split = layout.split(1 / 3) + split.operator("render.play_rendered_anim", text="Play", icon='PLAY') + split.prop(rd, "display_mode", text="Display") class RENDER_PT_dimensions(RenderButtonsPanel, Panel): @@ -317,13 +319,6 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel): sub.row().prop(rd, "field_order", expand=True) sub.prop(rd, "use_fields_still", text="Still") - col = split.column() - col.prop(rd, "use_edge_enhance") - sub = col.column() - sub.active = rd.use_edge_enhance - sub.prop(rd, "edge_threshold", text="Threshold", slider=True) - sub.prop(rd, "edge_color", text="") - class RENDER_PT_stamp(RenderButtonsPanel, Panel): bl_label = "Stamp" @@ -395,10 +390,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel): layout.template_image_settings(image_settings, color_management=False) - if file_format == 'QUICKTIME_CARBON': - layout.operator("scene.render_data_set_quicktime_codec") - - elif file_format == 'QUICKTIME_QTKIT': + if file_format == 'QUICKTIME': quicktime = rd.quicktime split = layout.split() diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py index 2514cca8c0f..dcc4508f086 100644 --- a/release/scripts/startup/bl_ui/properties_render_layer.py +++ b/release/scripts/startup/bl_ui/properties_render_layer.py @@ -57,7 +57,8 @@ class RENDERLAYER_PT_layers(RenderLayerButtonsPanel, Panel): rd = scene.render row = layout.row() - row.template_list("RENDERLAYER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=2) + col = row.column() + col.template_list("RENDERLAYER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=1) col = row.column(align=True) col.operator("scene.render_layer_add", icon='ZOOMIN', text="") @@ -112,7 +113,6 @@ class RENDERLAYER_PT_layer_options(RenderLayerButtonsPanel, Panel): col = split.column() col.prop(rl, "use_sky") - col.prop(rl, "use_edge_enhance") col.prop(rl, "use_strand") if bpy.app.build_options.freestyle: row = col.row() diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py index a04283de8bf..91a5abd0ad0 100644 --- a/release/scripts/startup/bl_ui/properties_scene.py +++ b/release/scripts/startup/bl_ui/properties_scene.py @@ -94,7 +94,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, Panel): row = layout.row() col = row.column() - col.template_list("UI_UL_list", "keying_sets", scene, "keying_sets", scene.keying_sets, "active_index", rows=2) + col.template_list("UI_UL_list", "keying_sets", scene, "keying_sets", scene.keying_sets, "active_index", rows=1) col = row.column(align=True) col.operator("anim.keying_set_add", icon='ZOOMIN', text="") @@ -138,7 +138,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel): row = layout.row() col = row.column() - col.template_list("SCENE_UL_keying_set_paths", "", ks, "paths", ks.paths, "active_index", rows=2) + col.template_list("SCENE_UL_keying_set_paths", "", ks, "paths", ks.paths, "active_index", rows=1) col = row.column(align=True) col.operator("anim.keying_set_path_add", icon='ZOOMIN', text="") @@ -227,8 +227,6 @@ class SCENE_PT_audio(SceneButtonsPanel, Panel): col.prop(ffmpeg, "audio_channels", text="") col.prop(ffmpeg, "audio_mixrate", text="Rate") - layout.operator("sound.mixdown") - class SCENE_PT_physics(SceneButtonsPanel, Panel): bl_label = "Gravity" diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py index 0b8d8a45a08..0b6ce41eb5d 100644 --- a/release/scripts/startup/bl_ui/properties_world.py +++ b/release/scripts/startup/bl_ui/properties_world.py @@ -244,34 +244,6 @@ class WORLD_PT_mist(WorldButtonsPanel, Panel): layout.prop(world.mist_settings, "falloff") -class WORLD_PT_stars(WorldButtonsPanel, Panel): - bl_label = "Stars" - bl_options = {'DEFAULT_CLOSED'} - COMPAT_ENGINES = {'BLENDER_RENDER'} - - def draw_header(self, context): - world = context.world - - self.layout.prop(world.star_settings, "use_stars", text="") - - def draw(self, context): - layout = self.layout - - world = context.world - - layout.active = world.star_settings.use_stars - - split = layout.split() - - col = split.column() - col.prop(world.star_settings, "size") - col.prop(world.star_settings, "color_random", text="Colors") - - col = split.column() - col.prop(world.star_settings, "distance_min", text="Min. Dist") - col.prop(world.star_settings, "average_separation", text="Separation") - - class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel): COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} _context_path = "world" diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index 540b707cf93..3db8697a457 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -352,14 +352,6 @@ class CLIP_PT_tools_solve(CLIP_PT_tracking_panel, Panel): col.label(text="Refine:") col.prop(settings, "refine_intrinsics", text="") - col = layout.column(align=True) - col.active = not settings.use_tripod_solver - col.prop(settings, "use_fallback_reconstruction", - text="Allow Fallback") - sub = col.column(align=True) - sub.active = settings.use_fallback_reconstruction - sub.prop(settings, "reconstruction_success_threshold") - class CLIP_PT_tools_cleanup(CLIP_PT_tracking_panel, Panel): bl_space_type = 'CLIP_EDITOR' @@ -507,7 +499,7 @@ class CLIP_PT_objects(CLIP_PT_clip_view_panel, Panel): row = layout.row() row.template_list("CLIP_UL_tracking_objects", "", tracking, "objects", - tracking, "active_object_index", rows=3) + tracking, "active_object_index", rows=1) sub = row.column(align=True) @@ -577,6 +569,8 @@ class CLIP_PT_track(CLIP_PT_tracking_panel, Panel): if act_track.use_custom_color: row.prop(act_track, "color", text="") + layout.prop(act_track, "weight") + if act_track.has_bundle: label_text = "Average Error: %.4f" % (act_track.average_error) layout.label(text=label_text) @@ -783,7 +777,7 @@ class CLIP_PT_stabilization(CLIP_PT_reconstruction_panel, Panel): row = layout.row() row.template_list("UI_UL_list", "stabilization_tracks", stab, "tracks", - stab, "active_track_index", rows=3) + stab, "active_track_index", rows=2) sub = row.column(align=True) diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py index 2d0b1c93d13..61e2f10a057 100644 --- a/release/scripts/startup/bl_ui/space_graph.py +++ b/release/scripts/startup/bl_ui/space_graph.py @@ -46,6 +46,11 @@ class GRAPH_HT_header(Header): dopesheet_filter(layout, context) + layout.prop(st, "use_normalization", text="Normalize") + row = layout.row() + row.active = st.use_normalization + row.prop(st, "use_auto_normalization", text="Auto") + layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", text="", icon_only=True) diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 17ed7b44cf1..397b74116c2 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -106,7 +106,6 @@ class IMAGE_MT_select(Menu): layout.operator("uv.select_all").action = 'TOGGLE' layout.operator("uv.select_all", text="Inverse").action = 'INVERT' - layout.operator("uv.select_split") layout.separator() @@ -728,7 +727,7 @@ class IMAGE_PT_tools_brush_overlay(BrushButtonsPanel, Panel): tex_slot_mask = brush.mask_texture_slot col = layout.column() - + col.label(text="Curve:") row = col.row(align=True) diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index 5a570d18312..a7a648e3c44 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -37,7 +37,6 @@ class INFO_HT_header(Header): if context.area.show_menus: sub = row.row(align=True) sub.menu("INFO_MT_file") - sub.menu("INFO_MT_add") if rd.use_game_engine: sub.menu("INFO_MT_game") else: @@ -79,35 +78,6 @@ class INFO_HT_header(Header): row.operator("wm.splash", text="", icon='BLENDER', emboss=False) row.label(text=scene.statistics(), translate=False) - # XXX: BEFORE RELEASE, MOVE FILE MENU OUT OF INFO!!! - """ - sinfo = context.space_data - row = layout.row(align=True) - row.prop(sinfo, "show_report_debug", text="Debug") - row.prop(sinfo, "show_report_info", text="Info") - row.prop(sinfo, "show_report_operator", text="Operators") - row.prop(sinfo, "show_report_warning", text="Warnings") - row.prop(sinfo, "show_report_error", text="Errors") - - row = layout.row() - row.enabled = sinfo.show_report_operator - row.operator("info.report_replay") - - row.menu("INFO_MT_report") - """ - - -class INFO_MT_report(Menu): - bl_label = "Report" - - def draw(self, context): - layout = self.layout - - layout.operator("console.select_all_toggle") - layout.operator("console.select_border") - layout.operator("console.report_delete") - layout.operator("console.report_copy") - class INFO_MT_file(Menu): bl_label = "File" @@ -199,132 +169,6 @@ class INFO_MT_file_external_data(Menu): layout.operator("file.find_missing_files") -class INFO_MT_mesh_add(Menu): - bl_idname = "INFO_MT_mesh_add" - bl_label = "Mesh" - - def draw(self, context): - layout = self.layout - - layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane") - layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube") - layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle") - layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere") - layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere") - layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder") - layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone") - layout.separator() - layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") - layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") - layout.operator("mesh.primitive_torus_add", icon='MESH_TORUS', text="Torus") - - -class INFO_MT_curve_add(Menu): - bl_idname = "INFO_MT_curve_add" - bl_label = "Curve" - - def draw(self, context): - layout = self.layout - - layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier") - layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle") - layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve") - layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle") - layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") - - -class INFO_MT_surface_add(Menu): - bl_idname = "INFO_MT_surface_add" - bl_label = "Surface" - - def draw(self, context): - layout = self.layout - - layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve") - layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle") - layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface") - layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder") - layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere") - layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus") - - -class INFO_MT_edit_curve_add(Menu): - bl_idname = "INFO_MT_edit_curve_add" - bl_label = "Add" - - def draw(self, context): - is_surf = context.active_object.type == 'SURFACE' - - layout = self.layout - layout.operator_context = 'EXEC_REGION_WIN' - - if is_surf: - INFO_MT_surface_add.draw(self, context) - else: - INFO_MT_curve_add.draw(self, context) - - -class INFO_MT_armature_add(Menu): - bl_idname = "INFO_MT_armature_add" - bl_label = "Armature" - - def draw(self, context): - layout = self.layout - - layout.operator_context = 'EXEC_REGION_WIN' - layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA') - - -class INFO_MT_add(Menu): - bl_label = "Add" - - def draw(self, context): - layout = self.layout - - # note, don't use 'EXEC_SCREEN' or operators wont get the 'v3d' context. - - # Note: was EXEC_AREA, but this context does not have the 'rv3d', which prevents - # "align_view" to work on first call (see [#32719]). - layout.operator_context = 'EXEC_REGION_WIN' - - #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH') - layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH') - - #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE') - layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE') - #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') - layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE') - layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META') - layout.operator_context = 'EXEC_REGION_WIN' - layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT') - layout.separator() - - layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE') - layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE' - layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY') - layout.separator() - - layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER') - layout.separator() - - layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA') - layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP') - layout.separator() - - layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY') - layout.separator() - - if len(bpy.data.groups) > 10: - layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY') - else: - layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY') - - class INFO_MT_game(Menu): bl_label = "Game" @@ -394,22 +238,21 @@ class INFO_MT_help(Menu): layout = self.layout layout.operator("wm.url_open", text="Manual", icon='HELP').url = "http://wiki.blender.org/index.php/Doc:2.6/Manual" - layout.operator("wm.url_open", text="Release Log", icon='URL').url = "http://www.blender.org/development/release-logs/blender-269" + layout.operator("wm.url_open", text="Release Log", icon='URL').url = "http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.70" layout.separator() layout.operator("wm.url_open", text="Blender Website", icon='URL').url = "http://www.blender.org" layout.operator("wm.url_open", text="Blender e-Shop", icon='URL').url = "http://www.blender.org/e-shop" - layout.operator("wm.url_open", text="Developer Community", icon='URL').url = "http://www.blender.org/community/get-involved" + layout.operator("wm.url_open", text="Developer Community", icon='URL').url = "http://www.blender.org/get-involved/" layout.operator("wm.url_open", text="User Community", icon='URL').url = "http://www.blender.org/community/user-community" layout.separator() - layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = "http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse" + layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = "http://developer.blender.org/maniphest/task/create/?project=2&type=Bug" layout.separator() layout.operator("wm.url_open", text="Python API Reference", icon='URL').url = bpy.types.WM_OT_doc_view._prefix layout.operator("wm.operator_cheat_sheet", icon='TEXT') layout.operator("wm.sysinfo", icon='TEXT') layout.separator() - layout.operator("anim.update_data_paths", text="FCurve/Driver Version fix", icon='HELP') layout.operator("logic.texface_convert", text="TexFace to Material Convert", icon='GAME') layout.separator() diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index 1721eacd8ac..46234b638eb 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -105,7 +105,7 @@ class NODE_HT_header(Header): row = layout.row(align=True) row.prop(toolsettings, "use_snap", text="") row.prop(toolsettings, "snap_node_element", text="", icon_only=True) - if toolsettings.snap_node_element != 'INCREMENT': + if toolsettings.snap_node_element != 'GRID': row.prop(toolsettings, "snap_target", text="") row = layout.row(align=True) @@ -169,6 +169,7 @@ class NODE_MT_select(Menu): layout = self.layout layout.operator("node.select_border") + layout.operator("node.select_circle") layout.separator() layout.operator("node.select_all").action = 'TOGGLE' @@ -233,7 +234,6 @@ class NODE_MT_node(Menu): layout.separator() - layout.operator("node.show_cyclic_dependencies") layout.operator("node.read_renderlayers") layout.operator("node.read_fullsamplelayers") @@ -364,7 +364,7 @@ class NODE_PT_backdrop(Panel): col.prop(snode, "backdrop_x", text="X") col.prop(snode, "backdrop_y", text="Y") col.operator("node.backimage_move", text="Move") - + layout.operator("node.backimage_fit", text="Fit") diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index ea88d35b4e9..6f28bcb2225 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -416,6 +416,10 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel): sub.prop(strip, "blend_alpha", text="Opacity", slider=True) row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="") row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="") + else: + row = layout.row(align=True) + row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF') + row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED') col = layout.column() sub = col.column() diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py index 41ded2fe768..32cb1009492 100644 --- a/release/scripts/startup/bl_ui/space_text.py +++ b/release/scripts/startup/bl_ui/space_text.py @@ -49,7 +49,7 @@ class TEXT_HT_header(Header): sub.alert = True sub.operator("text.resolve_conflict", text="", icon='HELP') - row.template_ID(st, "text", new="text.new", unlink="text.unlink") + row.template_ID(st, "text", new="text.new", unlink="text.unlink", open="text.open") row = layout.row(align=True) row.prop(st, "show_line_numbers", text="") diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py index de8be9dff99..4cb67181fdb 100644 --- a/release/scripts/startup/bl_ui/space_time.py +++ b/release/scripts/startup/bl_ui/space_time.py @@ -40,7 +40,9 @@ class TIME_HT_header(Header): row.menu("TIME_MT_frame") row.menu("TIME_MT_playback") - layout.prop(scene, "use_preview_range", text="", toggle=True) + row = layout.row(align=True) + row.prop(scene, "use_preview_range", text="", toggle=True) + row.prop(scene, "lock_frame_selection_to_range", text="", toggle=True) row = layout.row(align=True) if not scene.use_preview_range: @@ -227,6 +229,11 @@ def marker_menu_generic(layout): layout.operator("marker.rename", text="Rename Marker") layout.operator("marker.move", text="Grab/Move Marker") + layout.separator() + + layout.operator("screen.marker_jump", text="Jump to Next Marker").next = True + layout.operator("screen.marker_jump", text="Jump to Previous Marker").next = False + if __name__ == "__main__": # only for live edit. bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 1e9c9e7ff7e..e21656c3259 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -268,12 +268,16 @@ class USERPREF_PT_edit(Panel): col = row.column() col.label(text="Grease Pencil:") + col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") + col.separator() col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") - col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius") + col.separator() col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke") col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke") col.separator() + col.prop(edit, "grease_pencil_default_color", text="Default Color") + col.separator() col.separator() col.separator() col.label(text="Playback:") @@ -1251,15 +1255,15 @@ class USERPREF_PT_addons(Panel): split.label(text=' ' + info["warning"], icon='ERROR') user_addon = USERPREF_PT_addons.is_user_addon(mod, user_addon_paths) - tot_row = bool(info["wiki_url"]) + bool(info["tracker_url"]) + bool(user_addon) + tot_row = bool(info["wiki_url"]) + bool(user_addon) if tot_row: split = colsub.row().split(percentage=0.15) split.label(text="Internet:") if info["wiki_url"]: split.operator("wm.url_open", text="Documentation", icon='HELP').url = info["wiki_url"] - if info["tracker_url"]: - split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"] + tracker_url = "http://developer.blender.org/maniphest/task/create/?project=3&type=Bug" + split.operator("wm.url_open", text="Report a Bug", icon='URL').url = tracker_url if user_addon: split.operator("wm.addon_remove", text="Remove", icon='CANCEL').module = mod.__name__ diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 056859af3b4..81da0c3edde 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -54,6 +54,17 @@ class VIEW3D_HT_header(Header): elif mode_string not in {'EDIT_TEXT', 'SCULPT'}: sub.menu("VIEW3D_MT_select_%s" % mode_string.lower()) + if mode_string == 'OBJECT': + sub.menu("INFO_MT_add", text="Add") + elif mode_string == 'EDIT_MESH': + sub.menu("INFO_MT_mesh_add", text="Add") + elif mode_string == 'EDIT_CURVE': + sub.menu("INFO_MT_curve_add", text="Add") + elif mode_string == 'EDIT_SURFACE': + sub.menu("INFO_MT_surface_add", text="Add") + elif mode_string == 'EDIT_METABALL': + sub.menu("INFO_MT_metaball_add", text="Add") + if edit_object: sub.menu("VIEW3D_MT_edit_%s" % edit_object.type.lower()) elif obj: @@ -132,6 +143,7 @@ class VIEW3D_HT_header(Header): # ********** Menu ********** + # ********** Utilities ********** @@ -167,8 +179,9 @@ class VIEW3D_MT_transform_base(Menu): layout.operator("transform.tosphere", text="To Sphere") layout.operator("transform.shear", text="Shear") - layout.operator("transform.warp", text="Warp") + layout.operator("transform.bend", text="Bend") layout.operator("transform.push_pull", text="Push/Pull") + layout.operator("object.vertex_warp", text="Warp") # Generic transform menu - geometry types @@ -528,7 +541,7 @@ class VIEW3D_MT_select_pose(Menu): layout.operator("pose.select_all").action = 'TOGGLE' layout.operator("pose.select_all", text="Inverse").action = 'INVERT' - layout.operator("pose.select_flip_active", text="Flip Active") + layout.operator("pose.select_mirror", text="Flip Active") layout.operator("pose.select_constraint_target", text="Constraint Target") layout.operator("pose.select_linked", text="Linked") @@ -716,6 +729,10 @@ class VIEW3D_MT_select_edit_metaball(Menu): layout.operator("mball.select_random_metaelems") + layout.separator() + + layout.operator_menu_enum("mball.select_similar", "type", text="Similar") + class VIEW3D_MT_select_edit_lattice(Menu): bl_label = "Select" @@ -750,6 +767,7 @@ class VIEW3D_MT_select_edit_armature(Menu): layout.operator("armature.select_all").action = 'TOGGLE' layout.operator("armature.select_all", text="Inverse").action = 'INVERT' + layout.operator("armature.select_mirror", text="Mirror").extend = False layout.separator() @@ -812,6 +830,145 @@ class VIEW3D_MT_select_paint_mask_vertex(Menu): layout.operator("paint.vert_select_ungrouped", text="Ungrouped Verts") +# ********** Add menu ********** + +# XXX: INFO_MT_ names used to keep backwards compatibility (Addons etc that hook into the menu) + + +class INFO_MT_mesh_add(Menu): + bl_idname = "INFO_MT_mesh_add" + bl_label = "Mesh" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane") + layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube") + layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle") + layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere") + layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere") + layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder") + layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone") + layout.separator() + layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid") + layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey") + layout.operator("mesh.primitive_torus_add", icon='MESH_TORUS', text="Torus") + + +class INFO_MT_curve_add(Menu): + bl_idname = "INFO_MT_curve_add" + bl_label = "Curve" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier") + layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle") + layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve") + layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle") + layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path") + + +class INFO_MT_surface_add(Menu): + bl_idname = "INFO_MT_surface_add" + bl_label = "Surface" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve") + layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle") + layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface") + layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder") + layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere") + layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus") + + +class INFO_MT_metaball_add(Menu): + bl_idname = "INFO_MT_metaball_add" + bl_label = "Metaball" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator_enum("object.metaball_add", "type") + + +class INFO_MT_edit_curve_add(Menu): + bl_idname = "INFO_MT_edit_curve_add" + bl_label = "Add" + + def draw(self, context): + is_surf = context.active_object.type == 'SURFACE' + + layout = self.layout + layout.operator_context = 'EXEC_REGION_WIN' + + if is_surf: + INFO_MT_surface_add.draw(self, context) + else: + INFO_MT_curve_add.draw(self, context) + + +class INFO_MT_armature_add(Menu): + bl_idname = "INFO_MT_armature_add" + bl_label = "Armature" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'EXEC_REGION_WIN' + layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA') + + +class INFO_MT_add(Menu): + bl_label = "Add" + + def draw(self, context): + layout = self.layout + + # note, don't use 'EXEC_SCREEN' or operators wont get the 'v3d' context. + + # Note: was EXEC_AREA, but this context does not have the 'rv3d', which prevents + # "align_view" to work on first call (see [#32719]). + layout.operator_context = 'EXEC_REGION_WIN' + + #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH') + layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH') + + #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE') + layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE') + #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE') + layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE') + layout.menu("INFO_MT_metaball_add", text="Metaball", icon='OUTLINER_OB_META') + layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT') + layout.separator() + + layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE') + layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE' + layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY') + layout.separator() + + layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER') + layout.separator() + + layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA') + layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP') + layout.separator() + + layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY') + layout.separator() + + if len(bpy.data.groups) > 10: + layout.operator_context = 'INVOKE_REGION_WIN' + layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY') + else: + layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY') + # ********** Object menu ********** @@ -1364,6 +1521,7 @@ class VIEW3D_MT_paint_weight(Menu): layout.operator("object.vertex_group_mirror", text="Mirror") layout.operator("object.vertex_group_invert", text="Invert") layout.operator("object.vertex_group_clean", text="Clean") + layout.operator("object.vertex_group_quantize", text="Quantize") layout.operator("object.vertex_group_levels", text="Levels") layout.operator("object.vertex_group_blend", text="Blend") layout.operator("object.vertex_group_transfer_weight", text="Transfer Weights") @@ -1442,6 +1600,9 @@ class VIEW3D_MT_hide_mask(Menu): props.mode = 'VALUE' props.value = 0 + props = layout.operator("view3d.select_border", text="Box Mask") + props = layout.operator("paint.mask_lasso_gesture", text="Lasso Mask") + # ********** Particle menu ********** @@ -1909,10 +2070,16 @@ class VIEW3D_MT_edit_mesh_extrude(Menu): bl_label = "Extrude" _extrude_funcs = { - 'VERT': lambda layout: layout.operator("mesh.extrude_vertices_move", text="Vertices Only"), - 'EDGE': lambda layout: layout.operator("mesh.extrude_edges_move", text="Edges Only"), - 'FACE': lambda layout: layout.operator("mesh.extrude_faces_move", text="Individual Faces"), - 'REGION': lambda layout: layout.operator("view3d.edit_mesh_extrude_move_normal", text="Region"), + 'VERT': lambda layout: + layout.operator("mesh.extrude_vertices_move", text="Vertices Only"), + 'EDGE': lambda layout: + layout.operator("mesh.extrude_edges_move", text="Edges Only"), + 'FACE': lambda layout: + layout.operator("mesh.extrude_faces_move", text="Individual Faces"), + 'REGION': lambda layout: + layout.operator("view3d.edit_mesh_extrude_move_normal", text="Region"), + 'REGION_VERT_NORMAL': lambda layout: + layout.operator("view3d.edit_mesh_extrude_move_shrink_fatten", text="Region (Vertex Normals)"), } @staticmethod @@ -1922,7 +2089,7 @@ class VIEW3D_MT_edit_mesh_extrude(Menu): menu = [] if mesh.total_face_sel: - menu += ['REGION', 'FACE'] + menu += ['REGION', 'REGION_VERT_NORMAL', 'FACE'] if mesh.total_edge_sel and (select_mode[0] or select_mode[1]): menu += ['EDGE'] if mesh.total_vert_sel and select_mode[0]: @@ -2379,6 +2546,7 @@ class VIEW3D_MT_edit_armature(Menu): layout.operator("armature.merge") layout.operator("armature.fill") layout.operator("armature.delete") + layout.operator("armature.split") layout.operator("armature.separate") layout.separator() @@ -2634,10 +2802,14 @@ class VIEW3D_PT_view3d_shading(Panel): if not scene.render.use_shading_nodes: col.prop(gs, "material_mode", text="") col.prop(view, "show_textured_solid") + if view.viewport_shade == 'SOLID': col.prop(view, "use_matcap") if view.use_matcap: col.template_icon_view(view, "matcap_icon") + elif view.viewport_shade == 'TEXTURED': + col.prop(view, "show_textured_shadeless") + col.prop(view, "show_backface_culling") if obj and obj.mode == 'EDIT' and view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'}: col.prop(view, "show_occlude_wire") diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 0bb31f51c1b..cd3c238fe86 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -135,6 +135,7 @@ class VIEW3D_PT_tools_rigidbody(View3DPanel, Panel): col.operator("rigidbody.shape_change", text="Change Shape") col.operator("rigidbody.mass_calculate", text="Calculate Mass") col.operator("rigidbody.object_settings_copy", text="Copy from Active") + col.operator("object.visual_transform_apply", text="Apply Transformation") col.operator("rigidbody.bake_to_keyframes", text="Bake To Keyframes") col.label(text="Constraints:") col.operator("rigidbody.connect", text="Connect") @@ -739,6 +740,7 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel): col.prop(brush, "vertex_tool", text="Blend") + class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel): bl_label = "Overlay" bl_options = {'DEFAULT_CLOSED'} @@ -752,8 +754,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel): context.vertex_paint_object or context.weight_paint_object or context.image_paint_object)) - - + def draw(self, context): layout = self.layout @@ -763,7 +764,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel): tex_slot_mask = brush.mask_texture_slot col = layout.column() - + col.label(text="Curve:") row = col.row(align=True) @@ -777,7 +778,7 @@ class VIEW3D_PT_tools_brush_overlay(Panel, View3DPaintPanel): sub.prop(brush, "use_cursor_overlay_override", toggle=True, text="", icon='BRUSH_DATA') col.active = brush.brush_capabilities.has_overlay - + if context.image_paint_object or context.sculpt_object or context.vertex_paint_object: col.label(text="Texture:") row = col.row(align=True) @@ -1114,6 +1115,7 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel): col.operator("object.vertex_group_mirror", text="Mirror") col.operator("object.vertex_group_invert", text="Invert") col.operator("object.vertex_group_clean", text="Clean") + col.operator("object.vertex_group_quantize", text="Quantize") col.operator("object.vertex_group_levels", text="Levels") col.operator("object.vertex_group_blend", text="Blend") col.operator("object.vertex_group_transfer_weight", text="Transfer Weights") diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index 71ff547f6da..fdda753372f 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -141,6 +141,8 @@ shader_node_categories = [ NodeItem("ShaderNodeSqueeze"), NodeItem("ShaderNodeSeparateRGB"), NodeItem("ShaderNodeCombineRGB"), + NodeItem("ShaderNodeSeparateHSV"), + NodeItem("ShaderNodeCombineHSV"), ]), ShaderOldNodeCategory("SH_GROUP", "Group", items=node_group_items), ShaderOldNodeCategory("SH_LAYOUT", "Layout", items=[ |