Workbench: studiolight
[blender.git] / source / blender / makesrna / intern / rna_space.c
index 47ae2cb8951aba410e8cac1663e9ecf312c08f32..6feec3558089d0c2cafd85e944c208163db2eba5 100644 (file)
@@ -75,7 +75,7 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
 
        /* Animation */
        {0, "", ICON_NONE, "Animation", ""},
-       {SPACE_TIME, "TIMELINE", ICON_TIME, "Timeline", "Timeline and playback controls"},
+       //{SPACE_ACTION, "TIMELINE", ICON_TIME, "Timeline", "Timeline and playback controls (NOTE: Switch to 'Timeline' mode)"}, /* XXX */
        {SPACE_IPO, "GRAPH_EDITOR", ICON_IPO, "Graph Editor", "Edit drivers and keyframe interpolation"},
        {SPACE_ACTION, "DOPESHEET_EDITOR", ICON_ACTION, "Dope Sheet", "Adjust timing of keyframes"},
        {SPACE_NLA, "NLA_EDITOR", ICON_NLA, "NLA Editor", "Combine and layer Actions"},
@@ -87,6 +87,8 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
                        "advanced editing and script development"},
        {SPACE_INFO, "INFO", ICON_INFO, "Info", "Main menu bar and list of error messages "
                     "(drag down to expand and display)"},
+       /* Special case: Top-bar isn't supposed to be a regular editor for the user. */
+       {SPACE_TOPBAR, "TOPBAR", ICON_NONE, "Top Bar", "Global bar at the top of the screen for global per-window settings"},
 
        /* Data */
        {0, "", ICON_NONE, "Data", ""},
@@ -173,25 +175,19 @@ static const EnumPropertyItem autosnap_items[] = {
 };
 #endif
 
-const EnumPropertyItem rna_enum_viewport_shade_items[] = {
+const EnumPropertyItem rna_enum_shading_type_items[] = {
        {OB_WIRE, "WIREFRAME", ICON_WIRE, "Wireframe", "Display the object as wire edges"},
-       {OB_SOLID, "SOLID", ICON_SOLID, "Solid", "Display the object solid"},
+       {OB_SOLID, "SOLID", ICON_SOLID, "Single Color", "Display the object or material in a single color"},
        {OB_TEXTURE, "TEXTURED", ICON_POTATO, "Texture", "Display the object solid, with a texture"},
        {OB_MATERIAL, "MATERIAL", ICON_MATERIAL_DATA, "Material", "Display objects solid, with GLSL material"},
        {OB_RENDER, "RENDERED", ICON_SMOOTH, "Rendered", "Display render preview"},
        {0, NULL, 0, NULL, NULL}
 };
 
-const EnumPropertyItem rna_enum_viewport_shade_solid_items[] = {
-       {OB_LIGHTING_FLAT, "FLAT", ICON_SOLID, "Flat Lighting", "Display using flat lighting"},
-       {OB_LIGHTING_STUDIO, "STUDIO", ICON_SOLID, "Studio Lighting", "Display using studio lighting"},
-       // {OB_LIGHTING_SCENE, "SCENE", ICON_SOLID, "Scene Lighting", "Display using scene lighting"},
-       {0, NULL, 0, NULL, NULL}
-};
-const EnumPropertyItem rna_enum_viewport_shade_texture_items[] = {
-       {OB_LIGHTING_FLAT, "FLAT", ICON_POTATO, "Flat Lighting", "Display using flat lighting"},
-       {OB_LIGHTING_STUDIO, "STUDIO", ICON_POTATO, "Studio Lighting", "Display using studio lighting"},
-       // {OB_LIGHTING_SCENE, "SCENE", ICON_POTATO, "Scene Lighting", "Display using scene lighting"},
+const EnumPropertyItem rna_enum_viewport_lighting_items[] = {
+       {V3D_LIGHTING_FLAT,   "FLAT",   0, "Flat Lighting",   "Display using flat lighting"},
+       {V3D_LIGHTING_STUDIO, "STUDIO", 0, "Studio Lighting", "Display using studio lighting"},
+       /* {V3D_LIGHTING_SCENE, "SCENE", 0, "Scene Lighting", "Display using scene lighting"}, */
        {0, NULL, 0, NULL, NULL}
 };
 
@@ -205,7 +201,8 @@ const EnumPropertyItem rna_enum_clip_editor_mode_items[] = {
 static const EnumPropertyItem buttons_context_items[] = {
        {BCONTEXT_SCENE, "SCENE", ICON_SCENE_DATA, "Scene", "Scene"},
        {BCONTEXT_RENDER, "RENDER", ICON_SCENE, "Render", "Render"},
-       {BCONTEXT_VIEW_LAYER, "VIEW_LAYER", ICON_RENDERLAYERS, "View Layers", "View layers"},
+       {BCONTEXT_VIEW_LAYER, "VIEW_LAYER", ICON_RENDER_RESULT, "View Layer", "View layer"},
+       {BCONTEXT_COLLECTION, "COLLECTION", ICON_COLLAPSEMENU, "Collection", "Collection"},
        {BCONTEXT_WORLD, "WORLD", ICON_WORLD, "World", "World"},
        {BCONTEXT_OBJECT, "OBJECT", ICON_OBJECT_DATA, "Object", "Object"},
        {BCONTEXT_CONSTRAINT, "CONSTRAINT", ICON_CONSTRAINT, "Constraints", "Object constraints"},
@@ -217,24 +214,12 @@ static const EnumPropertyItem buttons_context_items[] = {
        {BCONTEXT_TEXTURE, "TEXTURE", ICON_TEXTURE, "Texture", "Texture"},
        {BCONTEXT_PARTICLE, "PARTICLES", ICON_PARTICLES, "Particles", "Particle"},
        {BCONTEXT_PHYSICS, "PHYSICS", ICON_PHYSICS, "Physics", "Physics"},
-       {BCONTEXT_COLLECTION, "COLLECTION", ICON_COLLAPSEMENU, "Collection", "Collection"},
-       {BCONTEXT_WORKSPACE, "WORKSPACE", ICON_RENDER_RESULT, "Workspace", "Workspace"},
-       {0, NULL, 0, NULL, NULL}
-};
-
-/* Actually populated dynamically trough a function, but helps for context-less access (e.g. doc, i18n...). */
-static const EnumPropertyItem buttons_texture_context_items[] = {
-       {SB_TEXC_MATERIAL, "MATERIAL", ICON_MATERIAL, "", "Show material textures"},
-       {SB_TEXC_WORLD, "WORLD", ICON_WORLD, "", "Show world textures"},
-       {SB_TEXC_LAMP, "LAMP", ICON_LAMP, "", "Show lamp textures"},
-       {SB_TEXC_PARTICLES, "PARTICLES", ICON_PARTICLES, "", "Show particles textures"},
-       {SB_TEXC_LINESTYLE, "LINESTYLE", ICON_LINE_DATA, "", "Show linestyle textures"},
-       {SB_TEXC_OTHER, "OTHER", ICON_TEXTURE, "", "Show other data textures"},
+       {BCONTEXT_WORKSPACE, "WORKSPACE", ICON_SPLITSCREEN, "Workspace", "Workspace"},
        {0, NULL, 0, NULL, NULL}
 };
 
 static const EnumPropertyItem buttons_collection_context_items[] = {
-       {SB_COLLECTION_CTX_VIEW_LAYER, "VIEW_LAYER", ICON_RENDERLAYERS, "", "Show material textures"},
+       {SB_COLLECTION_CTX_VIEW_LAYER, "VIEW_LAYER", ICON_RENDER_RESULT, "", "Show material textures"},
        {SB_COLLECTION_CTX_GROUP, "GROUP", ICON_GROUP, "", "Show world textures"},
        {0, NULL, 0, NULL, NULL}
 };
@@ -325,8 +310,6 @@ static StructRNA *rna_Space_refine(struct PointerRNA *ptr)
                        return &RNA_SpaceDopeSheetEditor;
                case SPACE_NLA:
                        return &RNA_SpaceNLA;
-               case SPACE_TIME:
-                       return &RNA_SpaceTimeline;
                case SPACE_NODE:
                        return &RNA_SpaceNodeEditor;
                case SPACE_CONSOLE:
@@ -508,7 +491,7 @@ static void rna_SpaceView3D_layer_update(Main *bmain, Scene *UNUSED(scene), Poin
        DEG_on_visible_update(bmain, false);
 }
 
-static void rna_SpaceView3D_viewport_shade_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
+static void rna_3DViewShading_type_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
 {
        View3D *v3d = (View3D *)(ptr->data);
        ScrArea *sa = rna_area_from_space(ptr);
@@ -666,7 +649,7 @@ static void rna_RegionView3D_view_matrix_set(PointerRNA *ptr, const float *value
        ED_view3d_from_m4(mat, rv3d->ofs, rv3d->viewquat, &rv3d->dist);
 }
 
-static int rna_SpaceView3D_viewport_shade_get(PointerRNA *ptr)
+static int rna_3DViewShading_type_get(PointerRNA *ptr)
 {
        bScreen *screen = ptr->id.data;
        Scene *scene = WM_windows_scene_get_from_screen(G.main->wm.first, screen);
@@ -687,7 +670,7 @@ static int rna_SpaceView3D_viewport_shade_get(PointerRNA *ptr)
        return v3d->drawtype;
 }
 
-static void rna_SpaceView3D_viewport_shade_set(PointerRNA *ptr, int value)
+static void rna_3DViewShading_type_set(PointerRNA *ptr, int value)
 {
        View3D *v3d = (View3D *)ptr->data;
        if (value != v3d->drawtype && value == OB_RENDER) {
@@ -696,7 +679,17 @@ static void rna_SpaceView3D_viewport_shade_set(PointerRNA *ptr, int value)
        v3d->drawtype = value;
 }
 
-static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(
+static void rna_View3DShading_single_color_mode_set(PointerRNA *ptr, int value) {
+       View3D *v3d = (View3D *)ptr->data;
+       v3d->drawtype_options = (v3d->drawtype_options &~ V3D_DRAWOPTION_SOLID_COLOR_MASK) + value;
+}
+
+static int rna_View3DShading_single_color_mode_get(PointerRNA *ptr) {
+       View3D *v3d = (View3D *)ptr->data;
+       return v3d->drawtype_options & V3D_DRAWOPTION_SOLID_COLOR_MASK;
+}
+
+static const EnumPropertyItem *rna_3DViewShading_type_itemf(
         bContext *C, PointerRNA *UNUSED(ptr),
         PropertyRNA *UNUSED(prop), bool *r_free)
 {
@@ -707,15 +700,15 @@ static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(
        EnumPropertyItem *item = NULL;
        int totitem = 0;
 
-       RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_SOLID);
+       RNA_enum_items_add_value(&item, &totitem, rna_enum_shading_type_items, OB_SOLID);
 
        if (BKE_scene_uses_blender_eevee(scene)) {
-               RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
+               RNA_enum_items_add_value(&item, &totitem, rna_enum_shading_type_items, OB_RENDER);
        }
        else {
-               RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_MATERIAL);
+               RNA_enum_items_add_value(&item, &totitem, rna_enum_shading_type_items, OB_MATERIAL);
                if (type && type->render_to_view) {
-                       RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
+                       RNA_enum_items_add_value(&item, &totitem, rna_enum_shading_type_items, OB_RENDER);
                }
        }
 
@@ -737,6 +730,26 @@ static const EnumPropertyItem *rna_SpaceView3D_stereo3d_camera_itemf(
                return stereo3d_camera_items;
 }
 
+static PointerRNA rna_SpaceView3D_shading_get(PointerRNA *ptr)
+{
+       return rna_pointer_inherit_refine(ptr, &RNA_View3DShading, ptr->data);
+}
+
+static char *rna_View3DShading_path(PointerRNA *UNUSED(ptr))
+{
+    return BLI_sprintfN("shading");
+}
+
+static PointerRNA rna_SpaceView3D_overlay_get(PointerRNA *ptr)
+{
+       return rna_pointer_inherit_refine(ptr, &RNA_View3DOverlay, ptr->data);
+}
+
+static char *rna_View3DOverlay_path(PointerRNA *UNUSED(ptr))
+{
+    return BLI_sprintfN("overlay");
+}
+
 /* Space Image Editor */
 
 static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr)
@@ -1153,50 +1166,6 @@ static void rna_SpaceProperties_align_set(PointerRNA *ptr, int value)
        sbuts->re_align = 1;
 }
 
-static const EnumPropertyItem *rna_SpaceProperties_texture_context_itemf(
-        bContext *C, PointerRNA *UNUSED(ptr),
-        PropertyRNA *UNUSED(prop), bool *r_free)
-{
-       EnumPropertyItem *item = NULL;
-       int totitem = 0;
-
-       if (ED_texture_context_check_world(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_WORLD);
-       }
-
-       if (ED_texture_context_check_lamp(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_LAMP);
-       }
-       else if (ED_texture_context_check_material(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_MATERIAL);
-       }
-
-       if (ED_texture_context_check_particles(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_PARTICLES);
-       }
-
-       if (ED_texture_context_check_linestyle(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_LINESTYLE);
-       }
-
-       if (ED_texture_context_check_others(C)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_texture_context_items, SB_TEXC_OTHER);
-       }
-
-       RNA_enum_item_end(&item, &totitem);
-       *r_free = true;
-
-       return item;
-}
-
-static void rna_SpaceProperties_texture_context_set(PointerRNA *ptr, int value)
-{
-       SpaceButs *sbuts = (SpaceButs *)(ptr->data);
-
-       /* User action, no need to keep "better" value in prev here! */
-       sbuts->texture_context = sbuts->texture_context_prev = value;
-}
-
 /* Space Console */
 static void rna_ConsoleLine_body_get(PointerRNA *ptr, char *value)
 {
@@ -1351,6 +1320,7 @@ static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr)
 static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr)
 {
        SpaceAction *saction = (SpaceAction *)(ptr->data);
+       ScrArea *sa = CTX_wm_area(C);
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Object *obact = OBACT(view_layer);
 
@@ -1379,7 +1349,25 @@ static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr)
                else
                        saction->action = NULL;
        }
-
+       
+       /* Collapse summary channel and hide channel list for timeline */
+       if (saction->mode == SACTCONT_TIMELINE) {
+               saction->ads.flag |= ADS_FLAG_SUMMARY_COLLAPSED;
+       }
+       
+       if (sa && sa->spacedata.first == saction) {
+               ARegion *channels_region = BKE_area_find_region_type(sa, RGN_TYPE_CHANNELS);
+               if (channels_region) {
+                       if (saction->mode == SACTCONT_TIMELINE) {
+                               channels_region->flag |= RGN_FLAG_HIDDEN;
+                       }
+                       else {
+                               channels_region->flag &= ~RGN_FLAG_HIDDEN;
+                       }
+                       ED_region_visibility_change_update(C, channels_region);
+               }
+       }
+       
        /* recalculate extents of channel list */
        saction->flag |= SACTION_TEMP_NEEDCHANSYNC;
 }
@@ -1867,6 +1855,7 @@ static void rna_def_space(BlenderRNA *brna)
        prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "spacetype");
        RNA_def_property_enum_items(prop, rna_enum_space_type_items);
+       /* When making this editable, take care for the special case of global areas (see rna_Area_type_set). */
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Type", "Space data type");
 
@@ -2048,10 +2037,8 @@ static void rna_def_space_outliner(BlenderRNA *brna)
        PropertyRNA *prop;
 
        static const EnumPropertyItem display_mode_items[] = {
-               {SO_VIEW_LAYER, "VIEW_LAYER", 0, "View Layer", "Display the collections of the active view layer"},
-               {SO_COLLECTIONS, "COLLECTIONS", 0, "Collections", "Display all collections based on the "
-                                "master collection hierarchy"},
-               {SO_SCENES, "SCENES", 0, "Scenes", "Display composition related data in all scenes"},
+               {SO_COLLECTIONS, "COLLECTIONS", 0, "Collections", "Display collections in the view layer"},
+               {SO_SCENES, "SCENES", 0, "Scenes", "Display scenes and their view layers, collections and objects"},
                {SO_GROUPS, "GROUPS", 0, "Groups", "Display groups and their data-blocks"},
                {SO_SEQUENCE, "SEQUENCE", 0, "Sequence", "Display sequence data-blocks"},
                {SO_LIBRARIES, "LIBRARIES", 0, "Blender File", "Display data of current file and linked libraries"},
@@ -2202,20 +2189,94 @@ static void rna_def_space_outliner(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_OUTLINER, NULL);
 }
 
-static void rna_def_space_view3d(BlenderRNA *brna)
+static void rna_def_space_view3d_shading(BlenderRNA *brna)
 {
        StructRNA *srna;
        PropertyRNA *prop;
 
-       static const EnumPropertyItem manipulators_items[] = {
-               {V3D_MANIP_TRANSLATE, "TRANSLATE", ICON_MAN_TRANS, "Translate",
-                                     "Use the manipulator for movement transformations"},
-               {V3D_MANIP_ROTATE, "ROTATE", ICON_MAN_ROT, "Rotate",
-                                  "Use the manipulator for rotation transformations"},
-               {V3D_MANIP_SCALE, "SCALE", ICON_MAN_SCALE, "Scale",
-                                 "Use the manipulator for scale transformations"},
+       static const EnumPropertyItem single_color_mode_items[] = {
+               {V3D_DRAWOPTION_SINGLE_COLOR,   "SINGLE",   0, "Single",   "Show scene in a single color"},
+               {V3D_DRAWOPTION_OBJECT_COLOR,   "OBJECT",   0, "Object",   "Show Object color"},
+               {V3D_DRAWOPTION_MATERIAL_COLOR, "MATERIAL", 0, "Material", "Show Material color"},
+               {V3D_DRAWOPTION_RANDOMIZE,      "RANDOM",   0, "Random",   "Show random object color"},
                {0, NULL, 0, NULL, NULL}
        };
+       static const EnumPropertyItem studio_lighting_items[] = {
+               {0, "01", ICON_STUDIOLIGHT_01, "", ""},
+               {1, "02", ICON_STUDIOLIGHT_02, "", ""},
+               {2, "03", ICON_STUDIOLIGHT_03, "", ""},
+               {3, "04", ICON_STUDIOLIGHT_04, "", ""},
+               {4, "05", ICON_STUDIOLIGHT_05, "", ""},
+               {0, NULL, 0, NULL, NULL}
+       };
+
+       srna = RNA_def_struct(brna, "View3DShading", NULL);
+       RNA_def_struct_sdna(srna, "View3D");
+       RNA_def_struct_nested(brna, srna, "SpaceView3D");
+       RNA_def_struct_path_func(srna, "rna_View3DShading_path");
+       RNA_def_struct_ui_text(srna, "3D View Shading Settings", "Settings for shading in the 3D viewport");
+
+       prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "drawtype");
+       RNA_def_property_enum_items(prop, rna_enum_shading_type_items);
+       RNA_def_property_enum_funcs(prop, "rna_3DViewShading_type_get", "rna_3DViewShading_type_set",
+                                   "rna_3DViewShading_type_itemf");
+       RNA_def_property_ui_text(prop, "Viewport Shading", "Method to display/shade objects in the 3D View");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+
+       prop = RNA_def_property(srna, "light", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "drawtype_lighting");
+       RNA_def_property_enum_items(prop, rna_enum_viewport_lighting_items);
+       RNA_def_property_ui_text(prop, "Lighting", "Lighting Method for Solid/Texture Viewport Shading");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+
+       prop = RNA_def_property(srna, "show_object_overlap", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "drawtype_options", V3D_DRAWOPTION_OBJECT_OVERLAP);
+       RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+       RNA_def_property_ui_text(prop, "Object Overlap", "Show Object Overlap");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+
+       prop = RNA_def_property(srna, "studiolight", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "drawtype_studiolight");
+       RNA_def_property_enum_items(prop, studio_lighting_items);
+       RNA_def_property_ui_text(prop, "Studiolight", "Studio lighting setup");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+
+       prop = RNA_def_property(srna, "single_color_mode", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_items(prop, single_color_mode_items);
+       RNA_def_property_enum_funcs(prop, "rna_View3DShading_single_color_mode_get",
+                                         "rna_View3DShading_single_color_mode_set",
+                                         NULL);
+       RNA_def_property_ui_text(prop, "Color", "Single Color Mode");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
+}
+
+static void rna_def_space_view3d_overlay(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "View3DOverlay", NULL);
+       RNA_def_struct_sdna(srna, "View3D");
+       RNA_def_struct_nested(brna, srna, "SpaceView3D");
+       RNA_def_struct_path_func(srna, "rna_View3DOverlay_path");
+       RNA_def_struct_ui_text(srna, "3D View Overlay Settings", "Settings for display of overlays in the 3D viewport");
+
+       prop = RNA_def_property(srna, "show_overlays", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_negative_sdna(prop, NULL, "flag2", V3D_RENDER_OVERRIDE);
+       RNA_def_property_ui_text(prop, "Show Overlays", "Display overlays like manipulators and outlines");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+       prop = RNA_def_property(srna, "show_3dcursor", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "overlays", V3D_OVERLAY_3DCURSOR);
+       RNA_def_property_ui_text(prop, "Show 3D Cursor", "Display 3D Cursor Overlay");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+}
+
+static void rna_def_space_view3d(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
 
        static const EnumPropertyItem rv3d_persp_items[] = {
                {RV3D_PERSP, "PERSP", 0, "Perspective", ""},
@@ -2322,25 +2383,11 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Lock to Cursor", "3D View center is locked to the cursor's position");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-       prop = RNA_def_property(srna, "viewport_shade", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "drawtype");
-       RNA_def_property_enum_items(prop, rna_enum_viewport_shade_items);
-       RNA_def_property_enum_funcs(prop, "rna_SpaceView3D_viewport_shade_get", "rna_SpaceView3D_viewport_shade_set",
-                                   "rna_SpaceView3D_viewport_shade_itemf");
-       RNA_def_property_ui_text(prop, "Viewport Shading", "Method to display/shade objects in the 3D View");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_SpaceView3D_viewport_shade_update");
-
-       prop = RNA_def_property(srna, "viewport_shade_solid", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "drawtype_solid");
-       RNA_def_property_enum_items(prop, rna_enum_viewport_shade_solid_items);
-       RNA_def_property_ui_text(prop, "Viewport Lighting (Solid)", "Lighting Method for Solid Viewport Shading");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_SpaceView3D_viewport_shade_update");
-
-       prop = RNA_def_property(srna, "viewport_shade_texture", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "drawtype_texture");
-       RNA_def_property_enum_items(prop, rna_enum_viewport_shade_texture_items);
-       RNA_def_property_ui_text(prop, "Viewport Lighting (Texture)", "Lighting Method for Texture Viewport Shading");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_SpaceView3D_viewport_shade_update");
+       prop = RNA_def_property(srna, "show_face_orientation_overlay", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "overlays", V3D_OVERLAY_FACE_ORIENTATION);
+       RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+       RNA_def_property_ui_text(prop, "Face Orientation", "Show the Face Orientation Overlay");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_3DViewShading_type_update");
 
        prop = RNA_def_property(srna, "local_view", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "localvd");
@@ -2473,11 +2520,6 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Lock Camera to View", "Enable view navigation within the camera view");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-       prop = RNA_def_property(srna, "show_only_render", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_RENDER_OVERRIDE);
-       RNA_def_property_ui_text(prop, "Only Render", "Display only objects which will be rendered");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
        prop = RNA_def_property(srna, "show_world", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag3", V3D_SHOW_WORLD);
        RNA_def_property_ui_text(prop, "World Background", "Display world colors in the background");
@@ -2507,13 +2549,6 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0);
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-       prop = RNA_def_property(srna, "transform_manipulators", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "twtype");
-       RNA_def_property_enum_items(prop, manipulators_items);
-       RNA_def_property_flag(prop, PROP_ENUM_FLAG);
-       RNA_def_property_ui_text(prop, "Transform Manipulators", "Transformation manipulators");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
        prop = RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1);
        RNA_def_property_boolean_funcs(prop, NULL, "rna_SpaceView3D_lock_camera_and_layers_set");
@@ -2642,6 +2677,22 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Volume Alpha", "Opacity (alpha) of the cameras' frustum volume");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
+       /* Nested Structs */
+       prop = RNA_def_property(srna, "shading", PROP_POINTER, PROP_NONE);
+       RNA_def_property_flag(prop, PROP_NEVER_NULL);
+       RNA_def_property_struct_type(prop, "View3DShading");
+       RNA_def_property_pointer_funcs(prop, "rna_SpaceView3D_shading_get", NULL, NULL, NULL);
+       RNA_def_property_ui_text(prop, "Shading Settings", "Settings for shading in the 3D viewport");
+
+       prop = RNA_def_property(srna, "overlay", PROP_POINTER, PROP_NONE);
+       RNA_def_property_flag(prop, PROP_NEVER_NULL);
+       RNA_def_property_struct_type(prop, "View3DOverlay");
+       RNA_def_property_pointer_funcs(prop, "rna_SpaceView3D_overlay_get", NULL, NULL, NULL);
+       RNA_def_property_ui_text(prop, "Overlay Settings", "Settings for display of overlays in the 3D viewport");
+
+       rna_def_space_view3d_shading(brna);
+       rna_def_space_view3d_overlay(brna);
+
        /* *** Animated *** */
        RNA_define_animate_sdna(true);
        /* region */
@@ -2779,18 +2830,6 @@ static void rna_def_space_buttons(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Align", "Arrangement of the panels");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_PROPERTIES, NULL);
 
-       prop = RNA_def_property(srna, "texture_context", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_items(prop, buttons_texture_context_items);
-       RNA_def_property_enum_funcs(prop, NULL, "rna_SpaceProperties_texture_context_set",
-                                   "rna_SpaceProperties_texture_context_itemf");
-       RNA_def_property_ui_text(prop, "Texture Context", "Type of texture data to display and edit");
-       RNA_def_property_update(prop, NC_TEXTURE, NULL);
-
-       prop = RNA_def_property(srna, "use_limited_texture_context", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", SB_TEX_USER_LIMITED);
-       RNA_def_property_ui_text(prop, "Limited Texture Context",
-                                "Use the limited version of texture user (for 'old shading' mode)");
-
        prop = RNA_def_property(srna, "collection_context", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_items(prop, buttons_collection_context_items);
        RNA_def_property_ui_text(prop, "Collection Context", "Which collection we want to show");
@@ -2969,7 +3008,7 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
        static const EnumPropertyItem view_type_items[] = {
                {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""},
                {SEQ_VIEW_PREVIEW,  "PREVIEW", ICON_SEQ_PREVIEW, "Image Preview", ""},
-               {SEQ_VIEW_SEQUENCE_PREVIEW,  "SEQUENCER_PREVIEW", ICON_SEQ_SPLITVIEW, "Sequencer and Image Preview", ""},
+               {SEQ_VIEW_SEQUENCE_PREVIEW,  "SEQUENCER_PREVIEW", ICON_SEQ_SPLITVIEW, "Sequencer/Preview", ""},
                {0, NULL, 0, NULL, NULL}
        };
 
@@ -3261,6 +3300,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
 
        /* XXX: action-editor is currently for object-level only actions, so show that using object-icon hint */
        static EnumPropertyItem mode_items[] = {
+               {SACTCONT_TIMELINE, "TIMELINE", ICON_TIME, "Timeline", "Timeline and playback controls"},
                {SACTCONT_DOPESHEET, "DOPESHEET", ICON_OOPS, "Dope Sheet", "Edit all keyframes in scene"},
                {SACTCONT_ACTION, "ACTION", ICON_OBJECT_DATA, "Action Editor", "Edit keyframes in active object's Object-level action"},
                {SACTCONT_SHAPEKEY, "SHAPEKEY", ICON_SHAPEKEY_DATA, "Shape Key Editor", "Edit keyframes in active object's Shape Keys action"},
@@ -3351,6 +3391,42 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        RNA_def_property_enum_items(prop, autosnap_items);
        RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_DOPESHEET, NULL);
+       
+       /* displaying cache status */
+       prop = RNA_def_property(srna, "show_cache", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_DISPLAY);
+       RNA_def_property_ui_text(prop, "Show Cache", "Show the status of cached frames in the timeline");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_softbody", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SOFTBODY);
+       RNA_def_property_ui_text(prop, "Softbody", "Show the active object's softbody point cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_particles", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_PARTICLES);
+       RNA_def_property_ui_text(prop, "Particles", "Show the active object's particle point cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_cloth", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_CLOTH);
+       RNA_def_property_ui_text(prop, "Cloth", "Show the active object's cloth point cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_smoke", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SMOKE);
+       RNA_def_property_ui_text(prop, "Smoke", "Show the active object's smoke cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_dynamicpaint", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_DYNAMICPAINT);
+       RNA_def_property_ui_text(prop, "Dynamic Paint", "Show the active object's Dynamic Paint cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
+
+       prop = RNA_def_property(srna, "cache_rigidbody", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_RIGIDBODY);
+       RNA_def_property_ui_text(prop, "Rigid Body", "Show the active object's Rigid Body cache");
+       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
 }
 
 static void rna_def_space_graph(BlenderRNA *brna)
@@ -3554,63 +3630,6 @@ static void rna_def_space_nla(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_NLA, NULL);
 }
 
-static void rna_def_space_time(BlenderRNA *brna)
-{
-       StructRNA *srna;
-       PropertyRNA *prop;
-
-       srna = RNA_def_struct(brna, "SpaceTimeline", "Space");
-       RNA_def_struct_sdna(srna, "SpaceTime");
-       RNA_def_struct_ui_text(srna, "Space Timeline Editor", "Timeline editor space data");
-
-       /* view settings */
-       prop = RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_CFRA_NUM);
-       RNA_def_property_ui_text(prop, "Show Frame Number Indicator",
-                                "Show frame number beside the current frame indicator line");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "show_seconds", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", TIME_DRAWFRAMES);
-       RNA_def_property_ui_text(prop, "Show Seconds", "Show timing in seconds not frames");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       /* displaying cache status */
-       prop = RNA_def_property(srna, "show_cache", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_DISPLAY);
-       RNA_def_property_ui_text(prop, "Show Cache", "Show the status of cached frames in the timeline");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_softbody", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SOFTBODY);
-       RNA_def_property_ui_text(prop, "Softbody", "Show the active object's softbody point cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_particles", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_PARTICLES);
-       RNA_def_property_ui_text(prop, "Particles", "Show the active object's particle point cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_cloth", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_CLOTH);
-       RNA_def_property_ui_text(prop, "Cloth", "Show the active object's cloth point cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_smoke", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_SMOKE);
-       RNA_def_property_ui_text(prop, "Smoke", "Show the active object's smoke cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_dynamicpaint", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_DYNAMICPAINT);
-       RNA_def_property_ui_text(prop, "Dynamic Paint", "Show the active object's Dynamic Paint cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-
-       prop = RNA_def_property(srna, "cache_rigidbody", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "cache_display", TIME_CACHE_RIGIDBODY);
-       RNA_def_property_ui_text(prop, "Rigid Body", "Show the active object's Rigid Body cache");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_TIME, NULL);
-}
 
 static void rna_def_console_line(BlenderRNA *brna)
 {
@@ -4154,7 +4173,6 @@ static void rna_def_space_node(BlenderRNA *brna)
        PropertyRNA *prop;
 
        static const EnumPropertyItem texture_id_type_items[] = {
-               {SNODE_TEX_OBJECT, "OBJECT", ICON_OBJECT_DATA, "Object", "Edit texture nodes from Object"},
                {SNODE_TEX_WORLD, "WORLD", ICON_WORLD_DATA, "World", "Edit texture nodes from World"},
                {SNODE_TEX_BRUSH, "BRUSH", ICON_BRUSH_DATA, "Brush", "Edit texture nodes from Brush"},
 #ifdef WITH_FREESTYLE
@@ -4587,7 +4605,6 @@ void RNA_def_space(BlenderRNA *brna)
        rna_def_space_dopesheet(brna);
        rna_def_space_graph(brna);
        rna_def_space_nla(brna);
-       rna_def_space_time(brna);
        rna_def_space_console(brna);
        rna_def_console_line(brna);
        rna_def_space_info(brna);