Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/view3d_header.c
| Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | |||||
| #define B_SEL_VERT 110 | #define B_SEL_VERT 110 | ||||
| #define B_SEL_EDGE 111 | #define B_SEL_EDGE 111 | ||||
| #define B_SEL_FACE 112 | #define B_SEL_FACE 112 | ||||
| /* XXX quickly ported across */ | /* XXX quickly ported across */ | ||||
| static void handle_view3d_lock(bContext *C) | static void handle_view3d_lock(bContext *C) | ||||
| { | { | ||||
| Main *bmain = CTX_data_main(C); | |||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| ScrArea *sa = CTX_wm_area(C); | ScrArea *sa = CTX_wm_area(C); | ||||
| View3D *v3d = CTX_wm_view3d(C); | View3D *v3d = CTX_wm_view3d(C); | ||||
| if (v3d != NULL && sa != NULL) { | if (v3d != NULL && sa != NULL) { | ||||
| if (v3d->localvd == NULL && v3d->scenelock && sa->spacetype == SPACE_VIEW3D) { | if (v3d->localvd == NULL && v3d->scenelock && sa->spacetype == SPACE_VIEW3D) { | ||||
| /* copy to scene */ | /* copy to scene */ | ||||
| scene->lay = v3d->lay; | scene->lay = v3d->lay; | ||||
| scene->layact = v3d->layact; | scene->layact = v3d->layact; | ||||
| scene->camera = v3d->camera; | scene->camera = v3d->camera; | ||||
| /* not through notifier, listener don't have context | |||||
| * and non-open screens or spaces need to be updated too */ | |||||
| BKE_screen_view3d_main_sync(&bmain->screen, scene); | |||||
| /* notifiers for scene update */ | /* notifiers for scene update */ | ||||
| WM_event_add_notifier(C, NC_SCENE | ND_LAYER, scene); | WM_event_add_notifier(C, NC_SCENE | ND_LAYER, scene); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * layer code is on three levels actually: | * layer code is on three levels actually: | ||||
| ▲ Show 20 Lines • Show All 189 Lines • ▼ Show 20 Lines | void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) | ||||
| SceneLayer *sl = CTX_data_scene_layer(C); | SceneLayer *sl = CTX_data_scene_layer(C); | ||||
| ToolSettings *ts = CTX_data_tool_settings(C); | ToolSettings *ts = CTX_data_tool_settings(C); | ||||
| PointerRNA v3dptr, toolsptr, sceneptr; | PointerRNA v3dptr, toolsptr, sceneptr; | ||||
| Object *ob = OBACT_NEW; | Object *ob = OBACT_NEW; | ||||
| Object *obedit = CTX_data_edit_object(C); | Object *obedit = CTX_data_edit_object(C); | ||||
| bGPdata *gpd = CTX_data_gpencil_data(C); | bGPdata *gpd = CTX_data_gpencil_data(C); | ||||
| uiBlock *block; | uiBlock *block; | ||||
| uiLayout *row; | uiLayout *row; | ||||
| bool is_paint = false; | bool is_paint = ob && !(gpd && (gpd->flag & GP_DATA_STROKE_EDITMODE)) && | ||||
| int modeselect; | ELEM(ob->mode, OB_MODE_SCULPT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, OB_MODE_TEXTURE_PAINT); | ||||
| RNA_pointer_create(&screen->id, &RNA_SpaceView3D, v3d, &v3dptr); | RNA_pointer_create(&screen->id, &RNA_SpaceView3D, v3d, &v3dptr); | ||||
| RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); | RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); | ||||
| RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr); | RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr); | ||||
| block = uiLayoutGetBlock(layout); | block = uiLayoutGetBlock(layout); | ||||
| UI_block_func_handle_set(block, do_view3d_header_buttons, NULL); | UI_block_func_handle_set(block, do_view3d_header_buttons, NULL); | ||||
| /* other buttons: */ | /* other buttons: */ | ||||
| UI_block_emboss_set(block, UI_EMBOSS); | UI_block_emboss_set(block, UI_EMBOSS); | ||||
| /* mode */ | |||||
| if ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)) { | |||||
| modeselect = OB_MODE_GPENCIL; | |||||
| } | |||||
| else if (ob) { | |||||
| modeselect = ob->mode; | |||||
| is_paint = ELEM(ob->mode, OB_MODE_SCULPT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, OB_MODE_TEXTURE_PAINT); | |||||
| } | |||||
| else { | |||||
| modeselect = OB_MODE_OBJECT; | |||||
| } | |||||
| row = uiLayoutRow(layout, false); | |||||
| { | |||||
| EnumPropertyItem *item = rna_enum_object_mode_items; | |||||
| const char *name = ""; | |||||
| int icon = ICON_OBJECT_DATAMODE; | |||||
| while (item->identifier) { | |||||
| if (item->value == modeselect && item->identifier[0]) { | |||||
| name = IFACE_(item->name); | |||||
| icon = item->icon; | |||||
| break; | |||||
| } | |||||
| item++; | |||||
| } | |||||
| uiItemMenuEnumO(row, C, "OBJECT_OT_mode_set", "mode", name, icon); | |||||
| } | |||||
| if (IS_VIEWPORT_LEGACY(v3d)) { | if (IS_VIEWPORT_LEGACY(v3d)) { | ||||
| /* Draw type */ | /* Draw type */ | ||||
| uiItemR(layout, &v3dptr, "viewport_shade", UI_ITEM_R_ICON_ONLY, "", ICON_NONE); | uiItemR(layout, &v3dptr, "viewport_shade", UI_ITEM_R_ICON_ONLY, "", ICON_NONE); | ||||
| } | } | ||||
| row = uiLayoutRow(layout, true); | row = uiLayoutRow(layout, true); | ||||
| uiItemR(row, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY, "", ICON_NONE); | uiItemR(row, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY, "", ICON_NONE); | ||||
| if (!ob || ELEM(ob->mode, OB_MODE_OBJECT, OB_MODE_POSE, OB_MODE_WEIGHT_PAINT)) { | if (!ob || ELEM(ob->mode, OB_MODE_OBJECT, OB_MODE_POSE, OB_MODE_WEIGHT_PAINT)) { | ||||
| Show All 37 Lines | |||||