Rename any instance of scene layer or render layer in code with view layer
[blender.git] / source / blender / makesrna / intern / rna_space.c
index ebbebb329744dd1ecba3007e69146332462e8b05..3a496d13429a448ee85293d711b924b4e948decd 100644 (file)
@@ -45,6 +45,7 @@
 #include "DNA_sequence_types.h"
 #include "DNA_mask_types.h"
 #include "DNA_view3d_types.h"
+#include "DNA_workspace_types.h"
 
 #include "RNA_access.h"
 #include "RNA_define.h"
@@ -196,7 +197,7 @@ 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_RENDER_LAYER, "RENDER_LAYER", ICON_RENDERLAYERS, "Render Layers", "Render layers"},
+       {BCONTEXT_VIEW_LAYER, "VIEW_LAYER", ICON_RENDERLAYERS, "View Layers", "View layers"},
        {BCONTEXT_WORLD, "WORLD", ICON_WORLD, "World", "World"},
        {BCONTEXT_OBJECT, "OBJECT", ICON_OBJECT_DATA, "Object", "Object"},
        {BCONTEXT_CONSTRAINT, "CONSTRAINT", ICON_CONSTRAINT, "Constraints", "Object constraints"},
@@ -208,6 +209,8 @@ 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}
 };
 
@@ -253,17 +256,23 @@ const EnumPropertyItem rna_enum_file_sort_items[] = {
 #include "BKE_brush.h"
 #include "BKE_colortools.h"
 #include "BKE_context.h"
-#include "BKE_depsgraph.h"
+#include "BKE_layer.h"
+#include "BKE_global.h"
 #include "BKE_nla.h"
 #include "BKE_paint.h"
 #include "BKE_scene.h"
 #include "BKE_screen.h"
 #include "BKE_icons.h"
+#include "BKE_workspace.h"
+
+#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
 
 #include "ED_buttons.h"
 #include "ED_fileselect.h"
 #include "ED_image.h"
 #include "ED_node.h"
+#include "ED_transform.h"
 #include "ED_screen.h"
 #include "ED_view3d.h"
 #include "ED_sequencer.h"
@@ -403,44 +412,64 @@ static void rna_Space_view2d_sync_update(Main *UNUSED(bmain), Scene *UNUSED(scen
        }
 }
 
-static PointerRNA rna_CurrentOrientation_get(PointerRNA *ptr)
+static int rna_View3D_transform_orientation_get(PointerRNA *ptr)
+{
+       const View3D *v3d = (View3D *)ptr->data;
+       /* convert to enum value */
+       return (v3d->twmode == V3D_MANIP_CUSTOM) ? (v3d->twmode + v3d->custom_orientation_index) : v3d->twmode;
+}
+
+void rna_View3D_transform_orientation_set(PointerRNA *ptr, int value)
+{
+       View3D *v3d = (View3D *)ptr->data;
+       BIF_selectTransformOrientationValue(v3d, value);
+}
+
+static PointerRNA rna_View3D_current_orientation_get(PointerRNA *ptr)
 {
-       Scene *scene = ((bScreen *)ptr->id.data)->scene;
        View3D *v3d = (View3D *)ptr->data;
+       TransformOrientation *orientation;
 
-       if (v3d->twmode < V3D_MANIP_CUSTOM)
-               return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, NULL);
-       else
-               return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation,
-                                                 BLI_findlink(&scene->transform_spaces, v3d->twmode - V3D_MANIP_CUSTOM));
+       if (v3d->twmode < V3D_MANIP_CUSTOM) {
+               orientation = NULL;
+       }
+       else {
+               WorkSpace *workspace;
+               bScreen *screen = ptr->id.data;
+
+               BKE_workspace_layout_find_global(G.main, screen, &workspace);
+               orientation = BKE_workspace_transform_orientation_find(workspace, v3d->custom_orientation_index);
+       }
+
+       return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, orientation);
 }
 
 const EnumPropertyItem *rna_TransformOrientation_itemf(
         bContext *C, PointerRNA *ptr, PropertyRNA *UNUSED(prop), bool *r_free)
 {
-       Scene *scene = NULL;
-       ListBase *transform_spaces;
-       TransformOrientation *ts = NULL;
+       WorkSpace *workspace;
+       ListBase *transform_orientations;
        EnumPropertyItem tmp = {0, "", 0, "", ""};
        EnumPropertyItem *item = NULL;
        int i = V3D_MANIP_CUSTOM, totitem = 0;
 
        RNA_enum_items_add(&item, &totitem, transform_orientation_items);
 
-       if (ptr->type == &RNA_SpaceView3D)
-               scene = ((bScreen *)ptr->id.data)->scene;
-       else
-               scene = CTX_data_scene(C);  /* can't use scene from ptr->id.data because that enum is also used by operators */
-
-       if (scene) {
-               transform_spaces = &scene->transform_spaces;
-               ts = transform_spaces->first;
+       if (ptr->type == &RNA_SpaceView3D) {
+               bScreen *screen = ptr->id.data;
+               BKE_workspace_layout_find_global(G.main, screen, &workspace);
+       }
+       else {
+               /* can't use scene from ptr->id.data because that enum is also used by operators */
+               workspace = C ? CTX_wm_workspace(C) : NULL;
        }
 
-       if (ts) {
+       transform_orientations = workspace ? BKE_workspace_transform_orientations_get(workspace) : NULL;
+
+       if (transform_orientations && (BLI_listbase_is_empty(transform_orientations) == false)) {
                RNA_enum_item_add_separator(&item, &totitem);
 
-               for (; ts; ts = ts->next) {
+               for (TransformOrientation *ts = transform_orientations->first; ts; ts = ts->next) {
                        tmp.identifier = ts->name;
                        tmp.name = ts->name;
                        tmp.value = i++;
@@ -459,8 +488,10 @@ static void rna_SpaceView3D_camera_update(Main *bmain, Scene *scene, PointerRNA
 {
        View3D *v3d = (View3D *)(ptr->data);
        if (v3d->scenelock) {
+               wmWindowManager *wm = bmain->wm.first;
+
                scene->camera = v3d->camera;
-               BKE_screen_view3d_main_sync(&bmain->screen, scene);
+               WM_windows_scene_data_sync(&wm->windows, scene);
        }
 }
 
@@ -472,8 +503,10 @@ static void rna_SpaceView3D_lock_camera_and_layers_set(PointerRNA *ptr, int valu
        v3d->scenelock = value;
 
        if (value) {
+               Scene *scene = ED_screen_scene_find(sc, G.main->wm.first);
                int bit;
-               v3d->lay = sc->scene->lay;
+
+               v3d->lay = scene->lay;
                /* seek for layact */
                bit = 0;
                while (bit < 32) {
@@ -483,15 +516,15 @@ static void rna_SpaceView3D_lock_camera_and_layers_set(PointerRNA *ptr, int valu
                        }
                        bit++;
                }
-               v3d->camera = sc->scene->camera;
+               v3d->camera = scene->camera;
        }
 }
 
 static void rna_View3D_CursorLocation_get(PointerRNA *ptr, float *values)
 {
        View3D *v3d = (View3D *)(ptr->data);
-       bScreen *sc = (bScreen *)ptr->id.data;
-       Scene *scene = (Scene *)sc->scene;
+       bScreen *screen = ptr->id.data;
+       Scene *scene = ED_screen_scene_find(screen, G.main->wm.first);
        const float *loc = ED_view3d_cursor3d_get(scene, v3d);
 
        copy_v3_v3(values, loc);
@@ -500,8 +533,8 @@ static void rna_View3D_CursorLocation_get(PointerRNA *ptr, float *values)
 static void rna_View3D_CursorLocation_set(PointerRNA *ptr, const float *values)
 {
        View3D *v3d = (View3D *)(ptr->data);
-       bScreen *sc = (bScreen *)ptr->id.data;
-       Scene *scene = (Scene *)sc->scene;
+       bScreen *screen = ptr->id.data;
+       Scene *scene = ED_screen_scene_find(screen, G.main->wm.first);
        float *cursor = ED_view3d_cursor3d_get(scene, v3d);
 
        copy_v3_v3(cursor, values);
@@ -510,8 +543,8 @@ static void rna_View3D_CursorLocation_set(PointerRNA *ptr, const float *values)
 static float rna_View3D_GridScaleUnit_get(PointerRNA *ptr)
 {
        View3D *v3d = (View3D *)(ptr->data);
-       bScreen *sc = (bScreen *)ptr->id.data;
-       Scene *scene = (Scene *)sc->scene;
+       bScreen *screen = ptr->id.data;
+       Scene *scene = ED_screen_scene_find(screen, G.main->wm.first);
 
        return ED_view3d_grid_scale(scene, v3d, NULL);
 }
@@ -520,7 +553,7 @@ static void rna_SpaceView3D_layer_set(PointerRNA *ptr, const int *values)
 {
        View3D *v3d = (View3D *)(ptr->data);
 
-       v3d->lay = ED_view3d_scene_layer_set(v3d->lay, values, &v3d->layact);
+       v3d->lay = ED_view3d_view_layer_set(v3d->lay, values, &v3d->layact);
 }
 
 static int rna_SpaceView3D_active_layer_get(PointerRNA *ptr)
@@ -532,7 +565,7 @@ static int rna_SpaceView3D_active_layer_get(PointerRNA *ptr)
 
 static void rna_SpaceView3D_layer_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
 {
-       DAG_on_visible_update(bmain, false);
+       DEG_on_visible_update(bmain, false);
 }
 
 static void rna_SpaceView3D_viewport_shade_update(Main *bmain, Scene *scene, PointerRNA *ptr)
@@ -695,12 +728,18 @@ static void rna_RegionView3D_view_matrix_set(PointerRNA *ptr, const float *value
 
 static int rna_SpaceView3D_viewport_shade_get(PointerRNA *ptr)
 {
-       Scene *scene = ((bScreen *)ptr->id.data)->scene;
-       RenderEngineType *type = RE_engines_find(scene->r.engine);
+       bScreen *screen = ptr->id.data;
+
+       Scene *scene = WM_windows_scene_get_from_screen(G.main->wm.first, screen);
+       WorkSpace *workspace = WM_windows_workspace_get_from_screen(G.main->wm.first, screen);
+
+       ViewRender *view_render = BKE_viewrender_get(scene, workspace);
+       RenderEngineType *type = RE_engines_find(view_render->engine_id);
+
        View3D *v3d = (View3D *)ptr->data;
        int drawtype = v3d->drawtype;
 
-       if (drawtype == OB_RENDER && !(type && type->view_draw))
+       if (drawtype == OB_RENDER && !(type && type->render_to_view))
                return OB_SOLID;
 
        return drawtype;
@@ -715,11 +754,14 @@ static void rna_SpaceView3D_viewport_shade_set(PointerRNA *ptr, int value)
        v3d->drawtype = value;
 }
 
-static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(bContext *UNUSED(C), PointerRNA *ptr,
+static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(bContext *C, PointerRNA *UNUSED(ptr),
                                                               PropertyRNA *UNUSED(prop), bool *r_free)
 {
-       Scene *scene = ((bScreen *)ptr->id.data)->scene;
-       RenderEngineType *type = RE_engines_find(scene->r.engine);
+       wmWindow *win = CTX_wm_window(C);
+       Scene *scene = WM_window_get_active_scene(win);
+       WorkSpace *workspace = WM_window_get_active_workspace(win);
+       ViewRender *view_render = BKE_viewrender_get(scene, workspace);
+       RenderEngineType *type = RE_engines_find(view_render->engine_id);
 
        EnumPropertyItem *item = NULL;
        int totitem = 0;
@@ -730,7 +772,7 @@ static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(bContext *UN
        RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_TEXTURE);
        RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_MATERIAL);
 
-       if (type && type->view_draw)
+       if (type && type->render_to_view)
                RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
 
        RNA_enum_item_end(&item, &totitem);
@@ -739,10 +781,10 @@ static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(bContext *UN
        return item;
 }
 
-static const EnumPropertyItem *rna_SpaceView3D_stereo3d_camera_itemf(bContext *UNUSED(C), PointerRNA *ptr,
+static const EnumPropertyItem *rna_SpaceView3D_stereo3d_camera_itemf(bContext *C, PointerRNA *UNUSED(ptr),
                                                                PropertyRNA *UNUSED(prop), bool *UNUSED(r_free))
 {
-       Scene *scene = ((bScreen *)ptr->id.data)->scene;
+       Scene *scene = CTX_data_scene(C);
 
        if (scene->r.views_format == SCE_VIEWS_FORMAT_MULTIVIEW)
                return multiview_camera_items;
@@ -810,22 +852,28 @@ static int rna_SpaceImageEditor_show_uvedit_get(PointerRNA *ptr)
 {
        SpaceImage *sima = (SpaceImage *)(ptr->data);
        bScreen *sc = (bScreen *)ptr->id.data;
-       return ED_space_image_show_uvedit(sima, sc->scene->obedit);
+       Scene *scene = ED_screen_scene_find(sc, G.main->wm.first);
+
+       return ED_space_image_show_uvedit(sima, scene->obedit);
 }
 
 static int rna_SpaceImageEditor_show_maskedit_get(PointerRNA *ptr)
 {
        SpaceImage *sima = (SpaceImage *)(ptr->data);
        bScreen *sc = (bScreen *)ptr->id.data;
-       return ED_space_image_check_show_maskedit(sc->scene, sima);
+       Scene *scene = ED_screen_scene_find(sc, G.main->wm.first);
+       ViewLayer *view_layer = BKE_view_layer_context_active_PLACEHOLDER(scene);
+
+       return ED_space_image_check_show_maskedit(view_layer, sima);
 }
 
 static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value)
 {
        SpaceImage *sima = (SpaceImage *)(ptr->data);
        bScreen *sc = (bScreen *)ptr->id.data;
+       Scene *scene = ED_screen_scene_find(sc, G.main->wm.first);
 
-       ED_space_image_set(sima, sc->scene, sc->scene->obedit, (Image *)value.data);
+       ED_space_image_set(sima, scene, scene->obedit, (Image *)value.data);
 }
 
 static void rna_SpaceImageEditor_mask_set(PointerRNA *ptr, PointerRNA value)
@@ -1071,8 +1119,8 @@ static const EnumPropertyItem *rna_SpaceProperties_context_itemf(bContext *UNUSE
                RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_RENDER);
        }
 
-       if (sbuts->pathflag & (1 << BCONTEXT_RENDER_LAYER)) {
-               RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_RENDER_LAYER);
+       if (sbuts->pathflag & (1 << BCONTEXT_VIEW_LAYER)) {
+               RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_VIEW_LAYER);
        }
 
        if (sbuts->pathflag & (1 << BCONTEXT_SCENE)) {
@@ -1083,6 +1131,14 @@ static const EnumPropertyItem *rna_SpaceProperties_context_itemf(bContext *UNUSE
                RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_WORLD);
        }
 
+       if (sbuts->pathflag & (1 << BCONTEXT_WORKSPACE)) {
+               RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_WORKSPACE);
+       }
+
+       if (sbuts->pathflag & (1 << BCONTEXT_COLLECTION)) {
+               RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_COLLECTION);
+       }
+
        if (sbuts->pathflag & (1 << BCONTEXT_OBJECT)) {
                RNA_enum_items_add_value(&item, &totitem, buttons_context_items, BCONTEXT_OBJECT);
        }
@@ -1264,10 +1320,12 @@ static void rna_SpaceDopeSheetEditor_action_set(PointerRNA *ptr, PointerRNA valu
        }
 }
 
-static void rna_SpaceDopeSheetEditor_action_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_SpaceDopeSheetEditor_action_update(bContext *C, PointerRNA *ptr)
 {
        SpaceAction *saction = (SpaceAction *)(ptr->data);
-       Object *obact = (scene->basact) ? scene->basact->object : NULL;
+       ViewLayer *view_layer = CTX_data_view_layer(C);
+       Main *bmain = CTX_data_main(C);
+       Object *obact = OBACT(view_layer);
 
        /* we must set this action to be the one used by active object (if not pinned) */
        if (obact /* && saction->pin == 0*/) {
@@ -1333,16 +1391,17 @@ static void rna_SpaceDopeSheetEditor_action_update(Main *bmain, Scene *scene, Po
                }
 
                /* force depsgraph flush too */
-               DAG_id_tag_update(&obact->id, OB_RECALC_OB | OB_RECALC_DATA);
+               DEG_id_tag_update(&obact->id, OB_RECALC_OB | OB_RECALC_DATA);
                /* Update relations as well, so new time source dependency is added. */
-               DAG_relations_tag_update(bmain);
+               DEG_relations_tag_update(bmain);
        }
 }
 
-static void rna_SpaceDopeSheetEditor_mode_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
+static void rna_SpaceDopeSheetEditor_mode_update(bContext *C, PointerRNA *ptr)
 {
        SpaceAction *saction = (SpaceAction *)(ptr->data);
-       Object *obact = (scene->basact) ? scene->basact->object : NULL;
+       ViewLayer *view_layer = CTX_data_view_layer(C);
+       Object *obact = OBACT(view_layer);
 
        /* special exceptions for ShapeKey Editor mode */
        if (saction->mode == SACTCONT_SHAPEKEY) {
@@ -1404,59 +1463,6 @@ static void rna_Sequencer_view_type_update(Main *UNUSED(bmain), Scene *UNUSED(sc
        ED_area_tag_refresh(sa);
 }
 
-static float rna_BackgroundImage_opacity_get(PointerRNA *ptr)
-{
-       BGpic *bgpic = (BGpic *)ptr->data;
-       return 1.0f - bgpic->blend;
-}
-
-static void rna_BackgroundImage_opacity_set(PointerRNA *ptr, float value)
-{
-       BGpic *bgpic = (BGpic *)ptr->data;
-       bgpic->blend = 1.0f - value;
-}
-
-/* radius internally (expose as a distance value) */
-static float rna_BackgroundImage_size_get(PointerRNA *ptr)
-{
-       BGpic *bgpic = ptr->data;
-       return bgpic->size * 2.0f;
-}
-
-static void rna_BackgroundImage_size_set(PointerRNA *ptr, float value)
-{
-       BGpic *bgpic = ptr->data;
-       bgpic->size = value * 0.5f;
-}
-
-static BGpic *rna_BackgroundImage_new(View3D *v3d)
-{
-       BGpic *bgpic = ED_view3D_background_image_new(v3d);
-
-       WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, v3d);
-
-       return bgpic;
-}
-
-static void rna_BackgroundImage_remove(View3D *v3d, ReportList *reports, PointerRNA *bgpic_ptr)
-{
-       BGpic *bgpic = bgpic_ptr->data;
-       if (BLI_findindex(&v3d->bgpicbase, bgpic) == -1) {
-               BKE_report(reports, RPT_ERROR, "Background image cannot be removed");
-       }
-
-       ED_view3D_background_image_remove(v3d, bgpic);
-       RNA_POINTER_INVALIDATE(bgpic_ptr);
-
-       WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, v3d);
-}
-
-static void rna_BackgroundImage_clear(View3D *v3d)
-{
-       ED_view3D_background_image_clear(v3d);
-       WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, v3d);
-}
-
 /* Space Node Editor */
 
 static void rna_SpaceNodeEditor_node_tree_set(PointerRNA *ptr, const PointerRNA value)
@@ -2104,6 +2110,9 @@ static void rna_def_space_outliner(BlenderRNA *brna)
                {SO_USERDEF, "USER_PREFERENCES", 0, "User Preferences", "Display user preference data"},
                {SO_ID_ORPHANS, "ORPHAN_DATA", 0, "Orphan Data",
                                "Display data-blocks which are unused and/or will be lost when the file is reloaded"},
+               {SO_ACT_LAYER, "ACT_LAYER", 0, "Active View Layer", "Display the collections of the active view layer"},
+               {SO_COLLECTIONS, "MASTER_COLLECTION", 0, "Master Collection Tree", "Display all collections based on the "
+                                "master collection hierarchy"},
                {0, NULL, 0, NULL, NULL}
        };
 
@@ -2144,194 +2153,6 @@ static void rna_def_space_outliner(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_OUTLINER, NULL);
 }
 
-static void rna_def_background_image(BlenderRNA *brna)
-{
-       StructRNA *srna;
-       PropertyRNA *prop;
-
-       /* note: combinations work but don't flip so arnt that useful */
-       static const EnumPropertyItem bgpic_axis_items[] = {
-               {0, "", 0, N_("X Axis"), ""},
-               {(1 << RV3D_VIEW_LEFT), "LEFT", 0, "Left", "Show background image while looking to the left"},
-               {(1 << RV3D_VIEW_RIGHT), "RIGHT", 0, "Right", "Show background image while looking to the right"},
-               /*{(1<<RV3D_VIEW_LEFT)|(1<<RV3D_VIEW_RIGHT), "LEFT_RIGHT", 0, "Left/Right", ""},*/
-               {0, "", 0, N_("Y Axis"), ""},
-               {(1 << RV3D_VIEW_BACK), "BACK", 0, "Back", "Show background image in back view"},
-               {(1 << RV3D_VIEW_FRONT), "FRONT", 0, "Front", "Show background image in front view"},
-               /*{(1<<RV3D_VIEW_BACK)|(1<<RV3D_VIEW_FRONT), "BACK_FRONT", 0, "Back/Front", ""},*/
-               {0, "", 0, N_("Z Axis"), ""},
-               {(1 << RV3D_VIEW_BOTTOM), "BOTTOM", 0, "Bottom", "Show background image in bottom view"},
-               {(1 << RV3D_VIEW_TOP), "TOP", 0, "Top", "Show background image in top view"},
-               /*{(1<<RV3D_VIEW_BOTTOM)|(1<<RV3D_VIEW_TOP), "BOTTOM_TOP", 0, "Top/Bottom", ""},*/
-               {0, "", 0, N_("Other"), ""},
-               {0, "ALL", 0, "All Views", "Show background image in all views"},
-               {(1 << RV3D_VIEW_CAMERA), "CAMERA", 0, "Camera", "Show background image in camera view"},
-               {0, NULL, 0, NULL, NULL}
-       };
-
-       static const EnumPropertyItem bgpic_source_items[] = {
-               {V3D_BGPIC_IMAGE, "IMAGE", 0, "Image", ""},
-               {V3D_BGPIC_MOVIE, "MOVIE_CLIP", 0, "Movie Clip", ""},
-               {0, NULL, 0, NULL, NULL}
-       };
-
-       static const EnumPropertyItem bgpic_camera_frame_items[] = {
-               {0, "STRETCH", 0, "Stretch", ""},
-               {V3D_BGPIC_CAMERA_ASPECT, "FIT", 0, "Fit", ""},
-               {V3D_BGPIC_CAMERA_ASPECT | V3D_BGPIC_CAMERA_CROP, "CROP", 0, "Crop", ""},
-               {0, NULL, 0, NULL, NULL}
-       };
-
-       static const EnumPropertyItem bgpic_draw_depth_items[] = {
-               {0, "BACK", 0, "Back", ""},
-               {V3D_BGPIC_FOREGROUND, "FRONT", 0, "Front", ""},
-               {0, NULL, 0, NULL, NULL}
-       };
-
-       srna = RNA_def_struct(brna, "BackgroundImage", NULL);
-       RNA_def_struct_sdna(srna, "BGpic");
-       RNA_def_struct_ui_text(srna, "Background Image", "Image and settings for display in the 3D View background");
-
-       prop = RNA_def_property(srna, "source", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "source");
-       RNA_def_property_enum_items(prop, bgpic_source_items);
-       RNA_def_property_ui_text(prop, "Background Source", "Data source used for background");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
-       RNA_def_property_pointer_sdna(prop, NULL, "ima");
-       RNA_def_property_ui_text(prop, "Image", "Image displayed and edited in this space");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
-       RNA_def_property_pointer_sdna(prop, NULL, "clip");
-       RNA_def_property_ui_text(prop, "MovieClip", "Movie clip displayed and edited in this space");
-       RNA_def_property_flag(prop, PROP_EDITABLE);
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "image_user", PROP_POINTER, PROP_NONE);
-       RNA_def_property_flag(prop, PROP_NEVER_NULL);
-       RNA_def_property_pointer_sdna(prop, NULL, "iuser");
-       RNA_def_property_ui_text(prop, "Image User",
-                                "Parameters defining which layer, pass and frame of the image is displayed");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "clip_user", PROP_POINTER, PROP_NONE);
-       RNA_def_property_flag(prop, PROP_NEVER_NULL);
-       RNA_def_property_struct_type(prop, "MovieClipUser");
-       RNA_def_property_pointer_sdna(prop, NULL, "cuser");
-       RNA_def_property_ui_text(prop, "Clip User", "Parameters defining which frame of the movie clip is displayed");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "xof");
-       RNA_def_property_ui_text(prop, "X Offset", "Offset image horizontally from the world origin");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "yof");
-       RNA_def_property_ui_text(prop, "Y Offset", "Offset image vertically from the world origin");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "size", PROP_FLOAT, PROP_DISTANCE);
-       RNA_def_property_float_sdna(prop, NULL, "size");
-       RNA_def_property_float_funcs(prop, "rna_BackgroundImage_size_get", "rna_BackgroundImage_size_set", NULL);
-       RNA_def_property_ui_text(prop, "Size", "Size of the background image (ortho view only)");
-       RNA_def_property_range(prop, 0.0, FLT_MAX);
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
-       RNA_def_property_float_sdna(prop, NULL, "rotation");
-       RNA_def_property_ui_text(prop, "Rotation", "Rotation for the background image (ortho view only)");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "use_flip_x", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_FLIP_X);
-       RNA_def_property_ui_text(prop, "Flip Horizontally", "Flip the background image horizontally");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "use_flip_y", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_FLIP_Y);
-       RNA_def_property_ui_text(prop, "Flip Vertically", "Flip the background image vertically");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "blend");
-       RNA_def_property_float_funcs(prop, "rna_BackgroundImage_opacity_get", "rna_BackgroundImage_opacity_set", NULL);
-       RNA_def_property_ui_text(prop, "Opacity", "Image opacity to blend the image against the background color");
-       RNA_def_property_range(prop, 0.0, 1.0);
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "view_axis", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_sdna(prop, NULL, "view");
-       RNA_def_property_enum_items(prop, bgpic_axis_items);
-       RNA_def_property_ui_text(prop, "Image Axis", "The axis to display the image on");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_EXPANDED);
-       RNA_def_property_ui_text(prop, "Show Expanded", "Show the expanded in the user interface");
-       RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
-
-       prop = RNA_def_property(srna, "use_camera_clip", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_CAMERACLIP);
-       RNA_def_property_ui_text(prop, "Camera Clip", "Use movie clip from active scene camera");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "show_background_image", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_BGPIC_DISABLED);
-       RNA_def_property_ui_text(prop, "Show Background Image", "Show this image as background");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       prop = RNA_def_property(srna, "show_on_foreground", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_FOREGROUND);
-       RNA_def_property_ui_text(prop, "Show On Foreground", "Show this image in front of objects in viewport");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       /* expose 1 flag as a enum of 2 items */
-       prop = RNA_def_property(srna, "draw_depth", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
-       RNA_def_property_enum_items(prop, bgpic_draw_depth_items);
-       RNA_def_property_ui_text(prop, "Depth", "Draw under or over everything");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
-       /* expose 2 flags as a enum of 3 items */
-       prop = RNA_def_property(srna, "frame_method", PROP_ENUM, PROP_NONE);
-       RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
-       RNA_def_property_enum_items(prop, bgpic_camera_frame_items);
-       RNA_def_property_ui_text(prop, "Frame Method", "How the image fits in the camera frame");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-}
-
-static void rna_def_backgroundImages(BlenderRNA *brna, PropertyRNA *cprop)
-{
-       StructRNA *srna;
-       FunctionRNA *func;
-       PropertyRNA *parm;
-
-       RNA_def_property_srna(cprop, "BackgroundImages");
-       srna = RNA_def_struct(brna, "BackgroundImages", NULL);
-       RNA_def_struct_sdna(srna, "View3D");
-       RNA_def_struct_ui_text(srna, "Background Images", "Collection of background images");
-
-       func = RNA_def_function(srna, "new", "rna_BackgroundImage_new");
-       RNA_def_function_ui_description(func, "Add new background image");
-       parm = RNA_def_pointer(func, "image", "BackgroundImage", "", "Image displayed as viewport background");
-       RNA_def_function_return(func, parm);
-
-       func = RNA_def_function(srna, "remove", "rna_BackgroundImage_remove");
-       RNA_def_function_ui_description(func, "Remove background image");
-       RNA_def_function_flag(func, FUNC_USE_REPORTS);
-       parm = RNA_def_pointer(func, "image", "BackgroundImage", "", "Image displayed as viewport background");
-       RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
-       RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
-
-       func = RNA_def_function(srna, "clear", "rna_BackgroundImage_clear");
-       RNA_def_function_ui_description(func, "Remove all background images");
-}
-
-
 static void rna_def_space_view3d(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -2576,9 +2397,9 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Backface Culling", "Use back face culling to hide the back side of faces");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-       prop = RNA_def_property(srna, "show_textured_shadeless", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SHADELESS_TEX);
-       RNA_def_property_ui_text(prop, "Shadeless", "Show shadeless texture without lighting in textured draw mode");
+       prop = RNA_def_property(srna, "show_mode_shade_override", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SHOW_MODE_SHADE_OVERRIDE);
+       RNA_def_property_ui_text(prop, "Full Shading", "Use full shading for mode drawing (to view final result)");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
        prop = RNA_def_property(srna, "show_occlude_wire", PROP_BOOLEAN, PROP_NONE);
@@ -2607,19 +2428,6 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_ui_icon(prop, ICON_ORTHO, 0);
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
-       prop = RNA_def_property(srna, "background_images", PROP_COLLECTION, PROP_NONE);
-       RNA_def_property_collection_sdna(prop, NULL, "bgpicbase", NULL);
-       RNA_def_property_struct_type(prop, "BackgroundImage");
-       RNA_def_property_ui_text(prop, "Background Images", "List of background images");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-       rna_def_backgroundImages(brna, prop);
-
-       prop = RNA_def_property(srna, "show_background_images", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPICS);
-       RNA_def_property_ui_text(prop, "Display Background Images",
-                                "Display reference images behind objects in the 3D View");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
-
        prop = RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "around");
        RNA_def_property_enum_items(prop, pivot_items_full);
@@ -2633,7 +2441,7 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_SpaceView3D_pivot_update");
 
        prop = RNA_def_property(srna, "show_manipulator", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR);
+       RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_MANIPULATOR_DRAW);
        RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms");
        RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0);
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
@@ -2648,13 +2456,14 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        prop = RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "twmode");
        RNA_def_property_enum_items(prop, transform_orientation_items);
-       RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_TransformOrientation_itemf");
+       RNA_def_property_enum_funcs(prop, "rna_View3D_transform_orientation_get", "rna_View3D_transform_orientation_set",
+                                   "rna_TransformOrientation_itemf");
        RNA_def_property_ui_text(prop, "Transform Orientation", "Transformation orientation");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
        prop = RNA_def_property(srna, "current_orientation", PROP_POINTER, PROP_NONE);
        RNA_def_property_struct_type(prop, "TransformOrientation");
-       RNA_def_property_pointer_funcs(prop, "rna_CurrentOrientation_get", NULL, NULL, NULL);
+       RNA_def_property_pointer_funcs(prop, "rna_View3D_current_orientation_get", NULL, NULL, NULL);
        RNA_def_property_ui_text(prop, "Current Transform Orientation", "Current transformation orientation");
 
        prop = RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
@@ -3398,7 +3207,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        PropertyRNA *prop;
 
        /* XXX: action-editor is currently for object-level only actions, so show that using object-icon hint */
-       static const EnumPropertyItem mode_items[] = {
+       static EnumPropertyItem mode_items[] = {
                {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"},
@@ -3419,6 +3228,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceDopeSheetEditor_action_set", NULL,
                                       "rna_Action_actedit_assign_poll");
        RNA_def_property_ui_text(prop, "Action", "Action displayed and edited in this space");
+       RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
        RNA_def_property_update(prop, NC_ANIMATION | ND_KEYFRAME | NA_EDITED, "rna_SpaceDopeSheetEditor_action_update");
 
        /* mode */
@@ -3426,6 +3236,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        RNA_def_property_enum_sdna(prop, NULL, "mode");
        RNA_def_property_enum_items(prop, mode_items);
        RNA_def_property_ui_text(prop, "Mode", "Editing context being displayed");
+       RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_DOPESHEET, "rna_SpaceDopeSheetEditor_mode_update");
 
        /* display */
@@ -3869,6 +3680,7 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
                               "Particles Settings", "Show/hide Particle Settings data-blocks"},
                {FILTER_ID_PAL, "PALETTE", ICON_COLOR, "Palettes", "Show/hide Palette data-blocks"},
                {FILTER_ID_PC, "PAINT_CURVE", ICON_CURVE_BEZCURVE, "Paint Curves", "Show/hide Paint Curve data-blocks"},
+               {FILTER_ID_LP, "LIGHT_PROBE", ICON_RADIO, "Light Probes", "Show/hide Light Probe data-blocks"},
                {FILTER_ID_SCE, "SCENE", ICON_SCENE_DATA, "Scenes", "Show/hide Scene data-blocks"},
                {FILTER_ID_SPK, "SPEAKER", ICON_SPEAKER, "Speakers", "Show/hide Speaker data-blocks"},
                {FILTER_ID_SO, "SOUND", ICON_SOUND, "Sounds", "Show/hide Sound data-blocks"},
@@ -3876,6 +3688,7 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
                {FILTER_ID_TXT, "TEXT", ICON_TEXT, "Texts", "Show/hide Text data-blocks"},
                {FILTER_ID_VF, "FONT", ICON_FONT_DATA, "Fonts", "Show/hide Font data-blocks"},
                {FILTER_ID_WO, "WORLD", ICON_WORLD_DATA, "Worlds", "Show/hide World data-blocks"},
+               {FILTER_ID_WS, "WORK_SPACE", ICON_NONE, "Workspaces", "Show/hide workspace data-blocks"},
                {0, NULL, 0, NULL, NULL}
        };
 
@@ -3893,7 +3706,7 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
             "Show/hide materials, nodetrees, textures and Freestyle's linestyles"},
                {FILTER_ID_IM | FILTER_ID_MC | FILTER_ID_MSK | FILTER_ID_SO,
             "IMAGE", ICON_IMAGE_DATA, "Images & Sounds", "Show/hide images, movie clips, sounds and masks"},
-               {FILTER_ID_CA | FILTER_ID_LA | FILTER_ID_SPK | FILTER_ID_WO,
+               {FILTER_ID_CA | FILTER_ID_LA | FILTER_ID_SPK | FILTER_ID_WO | FILTER_ID_WS,
             "ENVIRONMENT", ICON_WORLD_DATA, "Environment", "Show/hide worlds, lamps, cameras and speakers"},
                {FILTER_ID_BR | FILTER_ID_GD | FILTER_ID_PA | FILTER_ID_PAL | FILTER_ID_PC | FILTER_ID_TXT | FILTER_ID_VF | FILTER_ID_CF,
             "MISC", ICON_GREASEPENCIL, "Miscellaneous", "Show/hide other data types"},
@@ -4408,14 +4221,10 @@ static void rna_def_space_node(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Backdrop Zoom", "Backdrop zoom factor");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_NODE_VIEW, NULL);
 
-       prop = RNA_def_property(srna, "backdrop_x", PROP_FLOAT, PROP_NONE);
+       prop = RNA_def_property(srna, "backdrop_offset", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "xof");
-       RNA_def_property_ui_text(prop, "Backdrop X", "Backdrop X offset");
-       RNA_def_property_update(prop, NC_SPACE | ND_SPACE_NODE_VIEW, NULL);
-
-       prop = RNA_def_property(srna, "backdrop_y", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "yof");
-       RNA_def_property_ui_text(prop, "Backdrop Y", "Backdrop Y offset");
+       RNA_def_property_array(prop, 2);
+       RNA_def_property_ui_text(prop, "Backdrop Offset", "Backdrop offset");
        RNA_def_property_update(prop, NC_SPACE | ND_SPACE_NODE_VIEW, NULL);
 
        prop = RNA_def_property(srna, "backdrop_channels", PROP_ENUM, PROP_NONE);
@@ -4789,7 +4598,6 @@ void RNA_def_space(BlenderRNA *brna)
        rna_def_filemenu_entry(brna);
        rna_def_space_filebrowser(brna);
        rna_def_space_outliner(brna);
-       rna_def_background_image(brna);
        rna_def_space_view3d(brna);
        rna_def_space_buttons(brna);
        rna_def_space_dopesheet(brna);