Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Sun, 1 Apr 2018 09:14:09 +0000 (11:14 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 1 Apr 2018 09:14:09 +0000 (11:14 +0200)
1  2 
release/scripts/startup/bl_ui/space_view3d.py

index a4c452857f26552ab956d4f4d41b21937a577b20,a618ef7fd4e2af8a6d32f9d2b38bec28f19a074f..41dfd360ff45736c27f696d2afe06ebffaaf0a00
@@@ -48,7 -48,7 +48,7 @@@ class VIEW3D_HT_header(Header)
          layout.template_header_3D()
  
          if obj:
 -            mode = obj.mode
 +            mode = context.workspace.object_mode
              # Particle edit
              if mode == 'PARTICLE_EDIT':
                  row.prop(toolsettings.particle_edit, "select_mode", text="", expand=True)
@@@ -301,12 -301,6 +301,12 @@@ class VIEW3D_MT_transform_object(VIEW3D
          layout.operator("object.randomize_transform")
          layout.operator("object.align")
  
 +        # TODO: there is a strange context bug here.
 +        """
 +        layout.operator_context = 'INVOKE_REGION_WIN'
 +        layout.operator("object.transform_axis_target")
 +        """
 +
  
  # Armature EditMode extensions to Transform menu
  class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base):
          VIEW3D_MT_transform_base.draw(self, context)
  
          # armature specific extensions follow...
 +        workspace = context.workspace
          obj = context.object
 -        if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'}:
 +        if obj.type == 'ARMATURE' and workspace.object_mode in {'EDIT', 'POSE'}:
              if obj.data.draw_type == 'BBONE':
                  layout.separator()
  
@@@ -458,6 -451,7 +458,6 @@@ class VIEW3D_MT_view(Menu)
              layout.operator("view3d.view_selected", text="View Selected (Quad View)").use_all_regions = True
  
          layout.operator("view3d.view_all").center = False
 -        layout.operator("view3d.localview", text="View Global/Local")
          layout.operator("view3d.view_persportho")
  
          layout.separator()
@@@ -670,8 -664,12 +670,8 @@@ class VIEW3D_MT_select_object(Menu)
  
          layout.operator("object.select_all").action = 'TOGGLE'
          layout.operator("object.select_all", text="Inverse").action = 'INVERT'
 -
 -        layout.separator()
 -
          layout.operator("object.select_random", text="Random")
          layout.operator("object.select_mirror", text="Mirror")
 -        layout.operator("object.select_by_layer", text="Select All by Layer")
          layout.operator_menu_enum("object.select_by_type", "type", text="Select All by Type...")
          layout.operator("object.select_camera", text="Select Camera")
  
@@@ -1280,17 -1278,6 +1280,17 @@@ class INFO_MT_lamp_add(Menu)
          layout.operator_enum("object.lamp_add", "type")
  
  
 +class INFO_MT_lightprobe_add(Menu):
 +    bl_idname = "INFO_MT_lightprobe_add"
 +    bl_label = "Light Probe"
 +
 +    def draw(self, context):
 +        layout = self.layout
 +
 +        layout.operator_context = 'INVOKE_REGION_WIN'
 +        layout.operator_enum("object.lightprobe_add", "type")
 +
 +
  class INFO_MT_camera_add(Menu):
      bl_idname = "INFO_MT_camera_add"
      bl_label = "Camera"
@@@ -1339,8 -1326,6 +1339,8 @@@ class INFO_MT_add(Menu)
  
          layout.menu("INFO_MT_lamp_add", icon='OUTLINER_OB_LAMP')
          layout.separator()
 +        layout.menu("INFO_MT_lightprobe_add")
 +        layout.separator()
  
          layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_FORCE_FIELD')
          layout.separator()
@@@ -1399,6 -1384,8 +1399,6 @@@ class VIEW3D_MT_object(Menu)
  
      def draw(self, context):
          layout = self.layout
 -        view = context.space_data
 -        is_local_view = (view.local_view is not None)
  
          layout.menu("VIEW3D_MT_undo_redo")
  
          layout.operator("object.duplicate_move")
          layout.operator("object.duplicate_move_linked")
          layout.operator("object.join")
 -        if is_local_view:
 -            layout.operator_context = 'EXEC_REGION_WIN'
 -            layout.operator("object.move_to_layer", text="Move out of Local View")
 -            layout.operator_context = 'INVOKE_REGION_WIN'
 -        else:
 -            layout.operator("object.move_to_layer", text="Move to Layer...")
 -
          layout.separator()
          layout.menu("VIEW3D_MT_make_links", text="Make Links...")
          layout.menu("VIEW3D_MT_object_relations")
  
          layout.separator()
  
 -        layout.menu("VIEW3D_MT_object_showhide")
 -
          layout.operator_menu_enum("object.convert", "target")
  
  
@@@ -1552,9 -1548,8 +1552,9 @@@ class VIEW3D_MT_object_specials(Menu)
              lamp = obj.data
  
              layout.operator_context = 'INVOKE_REGION_WIN'
 +            use_shading_nodes = context.view_render.use_shading_nodes
  
 -            if scene.render.use_shading_nodes:
 +            if use_shading_nodes:
                  emission_node = None
                  if lamp.node_tree:
                      for node in lamp.node_tree.nodes:
                  props.input_scale = -0.01
                  props.header_text = "Spot Blend: %.2f"
  
 -                if not scene.render.use_shading_nodes:
 +                if not use_shading_nodes:
                      props = layout.operator("wm.context_modal_mouse", text="Clip Start")
                      props.data_path_iter = "selected_editable_objects"
                      props.data_path_item = "data.shadow_buffer_clip_start"
@@@ -1760,6 -1755,20 +1760,6 @@@ class VIEW3D_MT_object_quick_effects(Me
          layout.operator("object.quick_fluid")
  
  
 -class VIEW3D_MT_object_showhide(Menu):
 -    bl_label = "Show/Hide"
 -
 -    def draw(self, context):
 -        layout = self.layout
 -
 -        layout.operator("object.hide_view_clear", text="Show Hidden")
 -
 -        layout.separator()
 -
 -        layout.operator("object.hide_view_set", text="Hide Selected").unselected = False
 -        layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True
 -
 -
  class VIEW3D_MT_make_single_user(Menu):
      bl_label = "Make Single User"
  
@@@ -1956,10 -1965,7 +1956,10 @@@ class VIEW3D_MT_vertex_group(Menu)
          layout.operator("object.vertex_group_assign_new")
  
          ob = context.active_object
 -        if ob.mode == 'EDIT' or (ob.mode == 'WEIGHT_PAINT' and ob.type == 'MESH' and ob.data.use_paint_mask_vertex):
 +        workspace = context.workspace
 +        if ((workspace.object_mode == 'EDIT') or
 +            (workspace.object_mode == 'WEIGHT_PAINT' and ob.type == 'MESH' and ob.data.use_paint_mask_vertex)
 +        ):
              if ob.vertex_groups.active:
                  layout.separator()
  
@@@ -2662,8 -2668,8 +2662,8 @@@ class VIEW3D_MT_edit_mesh_vertices(Menu
          layout.operator("object.vertex_parent_set")
  
  
- class VIEW3D_MT_edit_mesh_edges(Menu):
-     bl_label = "Edges"
+ class VIEW3D_MT_edit_mesh_edges_data(Menu):
+     bl_label = "Edge Data"
  
      def draw(self, context):
          layout = self.layout
  
          layout.operator_context = 'INVOKE_REGION_WIN'
  
-         layout.operator("mesh.edge_face_add")
-         layout.operator("mesh.subdivide")
-         layout.operator("mesh.subdivide_edgering")
-         layout.operator("mesh.unsubdivide")
-         layout.separator()
          layout.operator("transform.edge_crease")
          layout.operator("transform.edge_bevelweight")
  
              layout.operator("mesh.mark_freestyle_edge", text="Clear Freestyle Edge").clear = True
              layout.separator()
  
+ class VIEW3D_MT_edit_mesh_edges(Menu):
+     bl_label = "Edges"
+     def draw(self, context):
+         layout = self.layout
+         layout.operator_context = 'INVOKE_REGION_WIN'
+         layout.operator("mesh.edge_face_add")
+         layout.operator("mesh.subdivide")
+         layout.operator("mesh.subdivide_edgering")
+         layout.operator("mesh.unsubdivide")
+         layout.separator()
+         layout.menu("VIEW3D_MT_edit_mesh_edges_data")
+         layout.separator()
          layout.operator("mesh.edge_rotate", text="Rotate Edge CW").use_ccw = False
          layout.operator("mesh.edge_rotate", text="Rotate Edge CCW").use_ccw = True
  
@@@ -3392,7 -3411,7 +3405,7 @@@ class VIEW3D_PT_view3d_properties(Panel
          if lock_object:
              if lock_object.type == 'ARMATURE':
                  col.prop_search(view, "lock_bone", lock_object.data,
 -                                "edit_bones" if lock_object.mode == 'EDIT'
 +                                "edit_bones" if context.mode == 'EDIT_ARMATURE'
                                  else "bones",
                                  text="")
          else:
@@@ -3445,13 -3464,12 +3458,13 @@@ class VIEW3D_PT_view3d_name(Panel)
      def draw(self, context):
          layout = self.layout
  
 +        workspace = context.workspace
          ob = context.active_object
          row = layout.row()
          row.label(text="", icon='OBJECT_DATA')
          row.prop(ob, "name", text="")
  
 -        if ob.type == 'ARMATURE' and ob.mode in {'EDIT', 'POSE'}:
 +        if ob.type == 'ARMATURE' and workspace.object_mode in {'EDIT', 'POSE'}:
              bone = context.active_bone
              if bone:
                  row = layout.row()
@@@ -3480,9 -3498,6 +3493,9 @@@ class VIEW3D_PT_view3d_display(Panel)
          col.prop(view, "show_only_render")
          col.prop(view, "show_world")
  
 +        if context.mode in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}:
 +            col.prop(view, "show_mode_shade_override")
 +
          col = layout.column()
          display_all = not view.show_only_render
          col.active = display_all
@@@ -3566,6 -3581,56 +3579,6 @@@ class VIEW3D_PT_view3d_stereo(Panel)
          split.prop(view, "stereo_3d_volume_alpha", text="Alpha")
  
  
 -class VIEW3D_PT_view3d_shading(Panel):
 -    bl_space_type = 'VIEW_3D'
 -    bl_region_type = 'UI'
 -    bl_label = "Shading"
 -
 -    def draw(self, context):
 -        layout = self.layout
 -
 -        view = context.space_data
 -        scene = context.scene
 -        gs = scene.game_settings
 -        obj = context.object
 -
 -        col = layout.column()
 -
 -        if not scene.render.use_shading_nodes:
 -            col.prop(gs, "material_mode", text="")
 -
 -        if view.viewport_shade == 'SOLID':
 -            col.prop(view, "show_textured_solid")
 -            col.prop(view, "use_matcap")
 -            if view.use_matcap:
 -                col.template_icon_view(view, "matcap_icon")
 -        if view.viewport_shade == 'TEXTURED' or context.mode == 'PAINT_TEXTURE':
 -            if scene.render.use_shading_nodes or gs.material_mode != 'GLSL':
 -                col.prop(view, "show_textured_shadeless")
 -
 -        col.prop(view, "show_backface_culling")
 -
 -        if view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'}:
 -            if obj and obj.mode == 'EDIT':
 -                col.prop(view, "show_occlude_wire")
 -
 -        fx_settings = view.fx_settings
 -
 -        if view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'}:
 -            sub = col.column()
 -            sub.active = view.region_3d.view_perspective == 'CAMERA'
 -            sub.prop(fx_settings, "use_dof")
 -            col.prop(fx_settings, "use_ssao", text="Ambient Occlusion")
 -            if fx_settings.use_ssao:
 -                ssao_settings = fx_settings.ssao
 -                subcol = col.column(align=True)
 -                subcol.prop(ssao_settings, "factor")
 -                subcol.prop(ssao_settings, "distance_max")
 -                subcol.prop(ssao_settings, "attenuation")
 -                subcol.prop(ssao_settings, "samples")
 -                subcol.prop(ssao_settings, "color")
 -
 -
  class VIEW3D_PT_view3d_motion_tracking(Panel):
      bl_space_type = 'VIEW_3D'
      bl_region_type = 'UI'
@@@ -3732,6 -3797,113 +3745,6 @@@ class VIEW3D_PT_view3d_curvedisplay(Pan
          col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
  
  
 -class VIEW3D_PT_background_image(Panel):
 -    bl_space_type = 'VIEW_3D'
 -    bl_region_type = 'UI'
 -    bl_label = "Background Images"
 -    bl_options = {'DEFAULT_CLOSED'}
 -
 -    def draw_header(self, context):
 -        view = context.space_data
 -
 -        self.layout.prop(view, "show_background_images", text="")
 -
 -    def draw(self, context):
 -        layout = self.layout
 -
 -        view = context.space_data
 -        use_multiview = context.scene.render.use_multiview
 -
 -        col = layout.column()
 -        col.operator("view3d.background_image_add", text="Add Image")
 -
 -        for i, bg in enumerate(view.background_images):
 -            layout.active = view.show_background_images
 -            box = layout.box()
 -            row = box.row(align=True)
 -            row.prop(bg, "show_expanded", text="", emboss=False)
 -            if bg.source == 'IMAGE' and bg.image:
 -                row.prop(bg.image, "name", text="", emboss=False)
 -            elif bg.source == 'MOVIE_CLIP' and bg.clip:
 -                row.prop(bg.clip, "name", text="", emboss=False)
 -            else:
 -                row.label(text="Not Set")
 -
 -            if bg.show_background_image:
 -                row.prop(bg, "show_background_image", text="", emboss=False, icon='RESTRICT_VIEW_OFF')
 -            else:
 -                row.prop(bg, "show_background_image", text="", emboss=False, icon='RESTRICT_VIEW_ON')
 -
 -            row.operator("view3d.background_image_remove", text="", emboss=False, icon='X').index = i
 -
 -            box.prop(bg, "view_axis", text="Axis")
 -
 -            if bg.show_expanded:
 -                row = box.row()
 -                row.prop(bg, "source", expand=True)
 -
 -                has_bg = False
 -                if bg.source == 'IMAGE':
 -                    row = box.row()
 -                    row.template_ID(bg, "image", open="image.open")
 -                    if bg.image is not None:
 -                        box.template_image(bg, "image", bg.image_user, compact=True)
 -                        has_bg = True
 -
 -                        if use_multiview and bg.view_axis in {'CAMERA', 'ALL'}:
 -                            box.prop(bg.image, "use_multiview")
 -
 -                            column = box.column()
 -                            column.active = bg.image.use_multiview
 -
 -                            column.label(text="Views Format:")
 -                            column.row().prop(bg.image, "views_format", expand=True)
 -
 -                            sub = column.box()
 -                            sub.active = bg.image.views_format == 'STEREO_3D'
 -                            sub.template_image_stereo_3d(bg.image.stereo_3d_format)
 -
 -                elif bg.source == 'MOVIE_CLIP':
 -                    box.prop(bg, "use_camera_clip")
 -
 -                    column = box.column()
 -                    column.active = not bg.use_camera_clip
 -                    column.template_ID(bg, "clip", open="clip.open")
 -
 -                    if bg.clip:
 -                        column.template_movieclip(bg, "clip", compact=True)
 -
 -                    if bg.use_camera_clip or bg.clip:
 -                        has_bg = True
 -
 -                    column = box.column()
 -                    column.active = has_bg
 -                    column.prop(bg.clip_user, "proxy_render_size", text="")
 -                    column.prop(bg.clip_user, "use_render_undistorted")
 -
 -                if has_bg:
 -                    col = box.column()
 -                    col.prop(bg, "opacity", slider=True)
 -                    col.row().prop(bg, "draw_depth", expand=True)
 -
 -                    if bg.view_axis in {'CAMERA', 'ALL'}:
 -                        col.row().prop(bg, "frame_method", expand=True)
 -
 -                    box = col.box()
 -                    row = box.row()
 -                    row.prop(bg, "offset_x", text="X")
 -                    row.prop(bg, "offset_y", text="Y")
 -
 -                    row = box.row()
 -                    row.prop(bg, "use_flip_x")
 -                    row.prop(bg, "use_flip_y")
 -
 -                    row = box.row()
 -                    if bg.view_axis != 'CAMERA':
 -                        row.prop(bg, "rotation")
 -                        row.prop(bg, "size")
 -
 -
  class VIEW3D_PT_transform_orientations(Panel):
      bl_space_type = 'VIEW_3D'
      bl_region_type = 'UI'
@@@ -3769,8 -3941,7 +3782,8 @@@ class VIEW3D_PT_etch_a_ton(Panel)
      def poll(cls, context):
          scene = context.space_data
          ob = context.active_object
 -        return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT'
 +        workspace = context.workspace
 +        return scene and ob and (ob.type == 'ARMATURE') and (workspace.object_mode == 'EDIT')
  
      def draw_header(self, context):
          layout = self.layout
@@@ -3826,8 -3997,7 +3839,8 @@@ class VIEW3D_PT_context_properties(Pane
      def _active_context_member(context):
          obj = context.object
          if obj:
 -            mode = obj.mode
 +            workspace = context.workspace
 +            mode = workspace.object_mode
              if mode == 'POSE':
                  return "active_pose_bone"
              elif mode == 'EDIT' and obj.type == 'ARMATURE':
@@@ -3903,7 -4073,6 +3916,7 @@@ classes = 
      INFO_MT_edit_armature_add,
      INFO_MT_armature_add,
      INFO_MT_lamp_add,
 +    INFO_MT_lightprobe_add,
      INFO_MT_camera_add,
      INFO_MT_add,
      VIEW3D_MT_undo_redo,
      VIEW3D_MT_object_group,
      VIEW3D_MT_object_constraints,
      VIEW3D_MT_object_quick_effects,
 -    VIEW3D_MT_object_showhide,
      VIEW3D_MT_make_single_user,
      VIEW3D_MT_make_links,
      VIEW3D_MT_object_game,
      VIEW3D_MT_edit_mesh_extrude,
      VIEW3D_MT_edit_mesh_vertices,
      VIEW3D_MT_edit_mesh_edges,
+     VIEW3D_MT_edit_mesh_edges_data,
      VIEW3D_MT_edit_mesh_faces,
      VIEW3D_MT_edit_mesh_normals,
      VIEW3D_MT_edit_mesh_clean,
      VIEW3D_PT_view3d_name,
      VIEW3D_PT_view3d_display,
      VIEW3D_PT_view3d_stereo,
 -    VIEW3D_PT_view3d_shading,
      VIEW3D_PT_view3d_motion_tracking,
      VIEW3D_PT_view3d_meshdisplay,
      VIEW3D_PT_view3d_meshstatvis,
      VIEW3D_PT_view3d_curvedisplay,
 -    VIEW3D_PT_background_image,
      VIEW3D_PT_transform_orientations,
      VIEW3D_PT_etch_a_ton,
      VIEW3D_PT_context_properties,