Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/workspace_edit.c
| Show First 20 Lines • Show All 353 Lines • ▼ Show 20 Lines | WorkSpace *appended_workspace = (WorkSpace *)WM_file_append_datablock( | ||||
| CTX_data_view_layer(C), | CTX_data_view_layer(C), | ||||
| CTX_wm_view3d(C), | CTX_wm_view3d(C), | ||||
| filepath, | filepath, | ||||
| ID_WS, | ID_WS, | ||||
| idname, | idname, | ||||
| BLO_LIBLINK_APPEND_RECURSIVE); | BLO_LIBLINK_APPEND_RECURSIVE); | ||||
| if (appended_workspace) { | if (appended_workspace) { | ||||
| if (BLT_translate_new_dataname()) { | |||||
| /* Translate workspace name */ | |||||
| BKE_libblock_rename(bmain, &appended_workspace->id, CTX_DATA_(BLT_I18NCONTEXT_ID_WORKSPACE, idname)); | |||||
| } | |||||
| /* Set defaults. */ | /* Set defaults. */ | ||||
| BLO_update_defaults_workspace(appended_workspace, NULL); | BLO_update_defaults_workspace(appended_workspace, NULL); | ||||
| /* Reorder to last position. */ | /* Reorder to last position. */ | ||||
| BKE_id_reorder(&bmain->workspaces, &appended_workspace->id, NULL, true); | BKE_id_reorder(&bmain->workspaces, &appended_workspace->id, NULL, true); | ||||
| /* Changing workspace changes context. Do delayed! */ | /* Changing workspace changes context. Do delayed! */ | ||||
| WM_event_add_notifier(C, NC_SCREEN | ND_WORKSPACE_SET, appended_workspace); | WM_event_add_notifier(C, NC_SCREEN | ND_WORKSPACE_SET, appended_workspace); | ||||
| ▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | static void workspace_append_button(uiLayout *layout, | ||||
| if (strlen(filepath) == 0) { | if (strlen(filepath) == 0) { | ||||
| filepath = BLO_EMBEDDED_STARTUP_BLEND; | filepath = BLO_EMBEDDED_STARTUP_BLEND; | ||||
| } | } | ||||
| BLI_assert(STREQ(ot_append->idname, "WORKSPACE_OT_append_activate")); | BLI_assert(STREQ(ot_append->idname, "WORKSPACE_OT_append_activate")); | ||||
| PointerRNA opptr; | PointerRNA opptr; | ||||
| uiItemFullO_ptr( | uiItemFullO_ptr( | ||||
| layout, ot_append, workspace->id.name + 2, ICON_NONE, NULL, WM_OP_EXEC_DEFAULT, 0, &opptr); | layout, ot_append, CTX_DATA_(BLT_I18NCONTEXT_ID_WORKSPACE, workspace->id.name + 2), ICON_NONE, NULL, WM_OP_EXEC_DEFAULT, 0, &opptr); | ||||
| RNA_string_set(&opptr, "idname", id->name + 2); | RNA_string_set(&opptr, "idname", id->name + 2); | ||||
| RNA_string_set(&opptr, "filepath", filepath); | RNA_string_set(&opptr, "filepath", filepath); | ||||
| } | } | ||||
| static void workspace_add_menu(bContext *UNUSED(C), uiLayout *layout, void *template_v) | static void workspace_add_menu(bContext *UNUSED(C), uiLayout *layout, void *template_v) | ||||
| { | { | ||||
| const char *app_template = template_v; | const char *app_template = template_v; | ||||
| bool has_startup_items = false; | bool has_startup_items = false; | ||||
| Show All 36 Lines | static void workspace_add_menu(bContext *UNUSED(C), uiLayout *layout, void *template_v) | ||||
| } | } | ||||
| if (builtin_config) { | if (builtin_config) { | ||||
| BKE_blendfile_workspace_config_data_free(builtin_config); | BKE_blendfile_workspace_config_data_free(builtin_config); | ||||
| } | } | ||||
| } | } | ||||
| static int workspace_add_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | static int workspace_add_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | ||||
| { | { | ||||
| uiPopupMenu *pup = UI_popup_menu_begin(C, op->type->name, ICON_ADD); | uiPopupMenu *pup = UI_popup_menu_begin(C, CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, | ||||
| op->type->name), ICON_ADD); | |||||
| uiLayout *layout = UI_popup_menu_layout(pup); | uiLayout *layout = UI_popup_menu_layout(pup); | ||||
| uiItemMenuF(layout, IFACE_("General"), ICON_NONE, workspace_add_menu, NULL); | uiItemMenuF(layout, IFACE_("General"), ICON_NONE, workspace_add_menu, NULL); | ||||
| ListBase templates; | ListBase templates; | ||||
| BKE_appdir_app_templates(&templates); | BKE_appdir_app_templates(&templates); | ||||
| LISTBASE_FOREACH (LinkData *, link, &templates) { | LISTBASE_FOREACH (LinkData *, link, &templates) { | ||||
| char *template = link->data; | char *template = link->data; | ||||
| char display_name[FILE_MAX]; | char display_name[FILE_MAX]; | ||||
| BLI_path_to_display_name(display_name, sizeof(display_name), template); | BLI_path_to_display_name(display_name, sizeof(display_name), IFACE_(template)); | ||||
| /* Steals ownership of link data string. */ | /* Steals ownership of link data string. */ | ||||
| uiItemMenuFN(layout, display_name, ICON_NONE, workspace_add_menu, template); | uiItemMenuFN(layout, display_name, ICON_NONE, workspace_add_menu, template); | ||||
| } | } | ||||
| BLI_freelistN(&templates); | BLI_freelistN(&templates); | ||||
| uiItemS(layout); | uiItemS(layout); | ||||
| ▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines | |||||