static int zarch_zui_load_content(zui_t *zui, unsigned i) { int ret = menu_common_load_content(zui->pick_cores[i].path, zui->pick_content, false, CORE_TYPE_PLAIN); layout = LAY_HOME; return ret; }
static int archive_load(void) { int ret = 0; menu_displaylist_info_t info = {0}; const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; size_t entry_idx = 0; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); size_t selected = menu_navigation_get_current_selection(); menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); if (!menu || !menu_list) return -1; menu_list_pop_stack(menu_list); menu_list_get_last_stack(menu_list, &menu_path, &menu_label, NULL, NULL); if (menu_list_get_size(menu_list) == 0) return 0; menu_list_get_at_offset(menu_list->selection_buf, selected, &path, NULL, NULL, &entry_idx); ret = rarch_defer_core(global->core_info, menu_path, path, menu_label, menu->deferred_path, sizeof(menu->deferred_path)); fill_pathname_join(detect_content_path, menu_path, path, sizeof(detect_content_path)); switch (ret) { case -1: event_command(EVENT_CMD_LOAD_CORE); menu_common_load_content(false, CORE_TYPE_PLAIN); break; case 0: info.list = menu_list->menu_stack; info.type = 0; info.directory_ptr = selected; strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); strlcpy(info.label, menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST), sizeof(info.label)); ret = menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); break; } return ret; }
static int menu_archive_load(void) { int ret; const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; unsigned int type = 0; menu_list_pop_stack(driver.menu->menu_list); menu_list_get_last_stack(driver.menu->menu_list, &menu_path, &menu_label, NULL); if (menu_list_get_size(driver.menu->menu_list) == 0) return 0; menu_list_get_at_offset(driver.menu->menu_list->selection_buf, driver.menu->selection_ptr, &path, NULL, &type); ret = rarch_defer_core(g_extern.core_info, menu_path, path, driver.menu->deferred_path, sizeof(driver.menu->deferred_path)); switch (ret) { case -1: rarch_main_command(RARCH_CMD_LOAD_CORE); menu_common_load_content(); break; case 0: menu_list_push_stack_refresh( driver.menu->menu_list, g_settings.libretro_directory, "deferred_core_list", 0, driver.menu->selection_ptr); break; } return 0; }
static int menu_action_ok(const char *menu_path, const char *menu_label, unsigned menu_type) { const char *label = NULL; const char *path = NULL; unsigned type = 0; rarch_setting_t *setting_data = (rarch_setting_t *)driver.menu->list_settings; rarch_setting_t *setting = (rarch_setting_t*) setting_data_find_setting(setting_data, menu_label); (void)hack_shader_pass; if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); #if 0 RARCH_LOG("menu label: %s\n", menu_label); RARCH_LOG("type : %d\n", type == MENU_FILE_USE_DIRECTORY); RARCH_LOG("type id : %d\n", type); #endif while (true) { switch (type) { case MENU_FILE_PLAYLIST_ENTRY: rarch_playlist_load_content(g_defaults.history, driver.menu->selection_ptr); menu_flush_stack_type(driver.menu->menu_stack, MENU_SETTINGS); return -1; #ifdef HAVE_COMPRESSION case MENU_FILE_IN_CARCHIVE: #endif case MENU_FILE_PLAIN: if (!strcmp(menu_label, "detect_core_list")) { int ret = rarch_defer_core(g_extern.core_info, menu_path, path, driver.menu->deferred_path, sizeof(driver.menu->deferred_path)); if (ret == -1) { rarch_main_command(RARCH_CMD_LOAD_CORE); menu_common_load_content(); return -1; } else if (ret == 0) menu_entries_push(driver.menu->menu_stack, g_settings.libretro_directory, "deferred_core_list", 0, driver.menu->selection_ptr); } else if ((setting && setting->type == ST_PATH)) { menu_action_setting_set_current_string_path(setting, menu_path, path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); } else if (!strcmp(menu_label, "disk_image_append")) { char image[PATH_MAX]; fill_pathname_join(image, menu_path, path, sizeof(image)); rarch_disk_control_append_image(image); rarch_main_command(RARCH_CMD_RESUME); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); return -1; } else { if (type == MENU_FILE_IN_CARCHIVE) { fill_pathname_join_delim(g_extern.fullpath, menu_path, path, '#',sizeof(g_extern.fullpath)); } else { fill_pathname_join(g_extern.fullpath, menu_path, path, sizeof(g_extern.fullpath)); } menu_common_load_content(); rarch_main_command(RARCH_CMD_LOAD_CONTENT_PERSIST); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); driver.menu->msg_force = true; return -1; } return 0; case MENU_FILE_CONFIG: { char config[PATH_MAX]; fill_pathname_join(config, menu_path, path, sizeof(config)); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); driver.menu->msg_force = true; if (rarch_replace_config(config)) { menu_clear_navigation(driver.menu); return -1; } } return 0; case MENU_FILE_FONT: case MENU_FILE_OVERLAY: case MENU_FILE_AUDIOFILTER: case MENU_FILE_VIDEOFILTER: menu_action_setting_set_current_string_path(setting, menu_path, path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); return 0; case MENU_FILE_SHADER_PRESET: #ifdef HAVE_SHADER_MANAGER { char shader_path[PATH_MAX]; fill_pathname_join(shader_path, menu_path, path, sizeof(shader_path)); menu_shader_manager_set_preset(driver.menu->shader, gfx_shader_parse_type(shader_path, RARCH_SHADER_NONE), shader_path); menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); } #endif return 0; case MENU_FILE_SHADER: #ifdef HAVE_SHADER_MANAGER fill_pathname_join(driver.menu->shader->pass[hack_shader_pass].source.path, menu_path, path, sizeof(driver.menu->shader->pass[hack_shader_pass].source.path)); /* This will reset any changed parameters. */ gfx_shader_resolve_parameters(NULL, driver.menu->shader); menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); #endif return 0; case MENU_FILE_CORE: if (!strcmp(menu_label, "deferred_core_list")) { strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); strlcpy(g_extern.fullpath, driver.menu->deferred_path, sizeof(g_extern.fullpath)); menu_common_load_content(); return -1; } else if (!strcmp(menu_label, "core_list")) { fill_pathname_join(g_settings.libretro, menu_path, path, sizeof(g_settings.libretro)); rarch_main_command(RARCH_CMD_LOAD_CORE); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); #if defined(HAVE_DYNAMIC) /* No content needed for this core, load core immediately. */ if (driver.menu->load_no_content) { *g_extern.fullpath = '\0'; menu_common_load_content(); return -1; } /* Core selection on non-console just updates directory listing. * Will take effect on new content load. */ #elif defined(RARCH_CONSOLE) rarch_main_command(RARCH_CMD_RESTART_RETROARCH); return -1; #endif } return 0; case MENU_FILE_USE_DIRECTORY: if (setting && setting->type == ST_DIR) { menu_action_setting_set_current_string(setting, menu_path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); } return 0; case MENU_FILE_DIRECTORY: case MENU_FILE_CARCHIVE: { char cat_path[PATH_MAX]; if (type == MENU_FILE_CARCHIVE && !strcmp(menu_label, "detect_core_list")) { file_list_push(driver.menu->menu_stack, path, "load_open_zip", 0, driver.menu->selection_ptr); return 0; } fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } return 0; } break; } if (menu_parse_check(label, type) == 0) { char cat_path[PATH_MAX]; fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } return 0; }
static int menu_load_or_open_zip_iterate(unsigned action) { char msg[PATH_MAX]; snprintf(msg, sizeof(msg), "Opening compressed file\n" " \n" " - OK to open as Folder\n" " - Cancel/Back to Load \n"); if (driver.video_data && driver.menu_ctx && driver.menu_ctx->render_messagebox) { if (*msg && msg[0] != '\0') driver.menu_ctx->render_messagebox(msg); } if (action == MENU_ACTION_OK) { char cat_path[PATH_MAX]; const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; const char* label = NULL; unsigned int menu_type = 0, type = 0; menu_entries_pop(driver.menu->menu_stack); file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, &menu_type); if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } else if (action == MENU_ACTION_CANCEL) { const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; const char* label = NULL; unsigned int menu_type = 0, type = 0; menu_entries_pop(driver.menu->menu_stack); file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, &menu_type); if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); int ret = rarch_defer_core(g_extern.core_info, menu_path, path, driver.menu->deferred_path, sizeof(driver.menu->deferred_path)); if (ret == -1) { rarch_main_command(RARCH_CMD_LOAD_CORE); menu_common_load_content(); return -1; } else if (ret == 0) menu_entries_push(driver.menu->menu_stack, g_settings.libretro_directory, "deferred_core_list", 0, driver.menu->selection_ptr); } return 0; }