Merge pull request #4241 from libretro/load_content

Load content refactors
This commit is contained in:
Twinaphex 2016-12-14 12:02:00 +01:00 committed by GitHub
commit dd553e067f
34 changed files with 591 additions and 409 deletions

View File

@ -22,6 +22,8 @@
#include <lists/dir_list.h> #include <lists/dir_list.h>
#include <file/archive_file.h> #include <file/archive_file.h>
#include <retro_stat.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
@ -87,10 +89,7 @@ static void core_info_list_resolve_all_firmware(
core_info_t *info = (core_info_t*)&core_info_list->list[i]; core_info_t *info = (core_info_t*)&core_info_list->list[i];
config_file_t *config = (config_file_t*)info->config_data; config_file_t *config = (config_file_t*)info->config_data;
if (!config) if (!config || !config_get_uint(config, "firmware_count", &count))
continue;
if (!config_get_uint(config, "firmware_count", &count))
continue; continue;
info->firmware = (core_info_firmware_t*) info->firmware = (core_info_firmware_t*)
@ -101,9 +100,11 @@ static void core_info_list_resolve_all_firmware(
for (c = 0; c < count; c++) for (c = 0; c < count; c++)
{ {
char path_key[64] = {0}; char path_key[64];
char desc_key[64] = {0}; char desc_key[64];
char opt_key[64] = {0}; char opt_key[64];
path_key[0] = desc_key[0] = opt_key[0] = '\0';
snprintf(path_key, sizeof(path_key), "firmware%u_path", c); snprintf(path_key, sizeof(path_key), "firmware%u_path", c);
snprintf(desc_key, sizeof(desc_key), "firmware%u_desc", c); snprintf(desc_key, sizeof(desc_key), "firmware%u_desc", c);
@ -162,21 +163,24 @@ static void core_info_list_free(core_info_list_t *core_info_list)
free(core_info_list); free(core_info_list);
} }
static config_file_t *core_info_list_iterate( static bool core_info_list_iterate(
char *s, size_t len,
struct string_list *contents, size_t i) struct string_list *contents, size_t i)
{ {
char info_path_base[PATH_MAX_LENGTH] = {0}; char info_path_base[PATH_MAX_LENGTH];
char info_path[PATH_MAX_LENGTH] = {0}; char *substr = NULL;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (!contents->elems[i].data) if (!contents || !contents->elems[i].data)
return NULL; return false;
info_path_base[0] = '\0';
fill_pathname_base_noext(info_path_base, contents->elems[i].data, fill_pathname_base_noext(info_path_base, contents->elems[i].data,
sizeof(info_path_base)); sizeof(info_path_base));
#if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA)) #if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA))
char *substr = strrchr(info_path_base, '_'); substr = strrchr(info_path_base, '_');
if (substr) if (substr)
*substr = '\0'; *substr = '\0';
#endif #endif
@ -185,28 +189,21 @@ static config_file_t *core_info_list_iterate(
file_path_str(FILE_PATH_CORE_INFO_EXTENSION), file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
sizeof(info_path_base)); sizeof(info_path_base));
fill_pathname_join(info_path, fill_pathname_join(s,
(!string_is_empty(settings->path.libretro_info)) ? (!string_is_empty(settings->path.libretro_info)) ?
settings->path.libretro_info : settings->directory.libretro, settings->path.libretro_info : settings->directory.libretro,
info_path_base, sizeof(info_path)); info_path_base, len);
return config_file_new(info_path); return true;
} }
static core_info_list_t *core_info_list_new(void) static core_info_list_t *core_info_list_new(const char *path)
{ {
size_t i; size_t i;
core_info_t *core_info = NULL; core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL; core_info_list_t *core_info_list = NULL;
struct string_list *contents = NULL; struct string_list *contents = dir_list_new_special(
settings_t *settings = config_get_ptr(); path, DIR_LIST_CORES, NULL);
if (!settings)
return NULL;
contents = dir_list_new_special(
settings->directory.libretro,
DIR_LIST_CORES, NULL);
if (!contents) if (!contents)
return NULL; return NULL;
@ -219,17 +216,23 @@ static core_info_list_t *core_info_list_new(void)
if (!core_info) if (!core_info)
goto error; goto error;
core_info_list->list = core_info; core_info_list->list = core_info;
core_info_list->count = contents->size; core_info_list->count = contents->size;
for (i = 0; i < contents->size; i++) for (i = 0; i < contents->size; i++)
{ {
config_file_t *conf = core_info_list_iterate(contents, i); char info_path[PATH_MAX_LENGTH];
if (conf) info_path[0] = '\0';
if (
core_info_list_iterate(info_path, sizeof(info_path),
contents, i)
&& path_is_valid(info_path))
{ {
bool tmp_bool = false; bool tmp_bool = false;
unsigned count = 0; unsigned count = 0;
config_file_t *conf = config_file_new(info_path);
config_get_string(conf, "display_name", config_get_string(conf, "display_name",
&core_info[i].display_name); &core_info[i].display_name);
@ -403,20 +406,22 @@ static bool core_info_list_update_missing_firmware_internal(
const char *systemdir) const char *systemdir)
{ {
size_t i; size_t i;
char path[PATH_MAX_LENGTH] = {0}; char path[PATH_MAX_LENGTH];
core_info_t *info = NULL; core_info_t *info = NULL;
if (!core_info_list || !core) if (!core_info_list || !core)
return false; return false;
info = core_info_find_internal(core_info_list, core); path[0] = '\0';
info = core_info_find_internal(core_info_list, core);
if (!info) if (!info)
return false; return false;
runloop_ctl(RUNLOOP_CTL_UNSET_MISSING_BIOS, NULL); runloop_ctl(RUNLOOP_CTL_UNSET_MISSING_BIOS, NULL);
for (i = 0; i < info->firmware_count; i++) for (i = 0; i < info->firmware_count; i++)
{ {
if (!info->firmware[i].path) if (string_is_empty(info->firmware[i].path))
continue; continue;
fill_pathname_join(path, systemdir, fill_pathname_join(path, systemdir,
@ -452,12 +457,13 @@ static void core_info_list_get_missing_firmware(
const core_info_firmware_t **firmware, size_t *num_firmware) const core_info_firmware_t **firmware, size_t *num_firmware)
{ {
size_t i; size_t i;
char path[PATH_MAX_LENGTH] = {0}; char path[PATH_MAX_LENGTH];
core_info_t *info = NULL; core_info_t *info = NULL;
if (!core_info_list || !core) if (!core_info_list || !core)
return; return;
path[0] = '\0';
*firmware = NULL; *firmware = NULL;
*num_firmware = 0; *num_firmware = 0;
@ -511,7 +517,10 @@ void core_info_deinit_list(void)
bool core_info_init_list(void) bool core_info_init_list(void)
{ {
core_info_curr_list = core_info_list_new(); settings_t *settings = config_get_ptr();
if (settings)
core_info_curr_list = core_info_list_new(settings->directory.libretro);
if (!core_info_curr_list) if (!core_info_curr_list)
return false; return false;
@ -625,58 +634,43 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list,
void core_info_get_name(const char *path, char *s, size_t len) void core_info_get_name(const char *path, char *s, size_t len)
{ {
size_t i; size_t i;
core_info_t *core_info = NULL;
core_info_list_t *core_info_list = NULL;
struct string_list *contents = NULL;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
struct string_list *contents = dir_list_new_special(
if (!settings)
return;
contents = dir_list_new_special(
settings->directory.libretro, settings->directory.libretro,
DIR_LIST_CORES, NULL); DIR_LIST_CORES, NULL);
if (!contents) if (!contents)
return; return;
core_info_list = (core_info_list_t*)calloc(1, sizeof(*core_info_list));
if (!core_info_list)
goto error;
core_info = (core_info_t*)calloc(contents->size, sizeof(*core_info));
if (!core_info)
goto error;
core_info_list->list = core_info;
core_info_list->count = contents->size;
for (i = 0; i < contents->size; i++) for (i = 0; i < contents->size; i++)
{ {
config_file_t *conf = NULL; char info_path[PATH_MAX_LENGTH];
config_file_t *conf = NULL;
char *new_core_name = NULL;
info_path[0] = '\0';
if (!string_is_equal(contents->elems[i].data, path)) if (!string_is_equal(contents->elems[i].data, path))
continue; continue;
conf = core_info_list_iterate(contents, i); if (!core_info_list_iterate(info_path,
sizeof(info_path), contents, i)
&& path_is_valid(info_path))
continue;
if (conf) conf = config_file_new(info_path);
{
config_get_string(conf, "corename",
&core_info[i].core_name);
core_info[i].config_data = (void*)conf;
}
core_info[i].path = strdup(contents->elems[i].data); config_get_string(conf, "corename",
&new_core_name);
strlcpy(s, new_core_name, len);
strlcpy(s, core_info[i].core_name, len); config_file_free(conf);
break;
} }
error:
if (contents) if (contents)
dir_list_free(contents); dir_list_free(contents);
contents = NULL; contents = NULL;
core_info_list_free(core_info_list);
} }
size_t core_info_list_num_info_files(core_info_list_t *core_info_list) size_t core_info_list_num_info_files(core_info_list_t *core_info_list)
@ -699,10 +693,8 @@ size_t core_info_list_num_info_files(core_info_list_t *core_info_list)
bool core_info_unsupported_content_path(const char *path) bool core_info_unsupported_content_path(const char *path)
{ {
size_t i; size_t i;
const char *delim;
const char *archive_path = NULL; const char *archive_path = NULL;
const char *delim = path_get_archive_delim(path);
delim = path_get_archive_delim(path);
if (delim) if (delim)
archive_path = delim - 1; archive_path = delim - 1;
@ -718,18 +710,19 @@ bool core_info_unsupported_content_path(const char *path)
{ {
const core_info_t *info = &core_info_curr_list->list[i]; const core_info_t *info = &core_info_curr_list->list[i];
if (string_list_find_elem(info->supported_extensions_list, "zip") || if ( !string_list_find_elem(info->supported_extensions_list, "zip")
string_list_find_elem(info->supported_extensions_list, "7z")) && !string_list_find_elem(info->supported_extensions_list, "7z"))
return false; continue;
return false;
} }
} }
for (i = 0; i < core_info_curr_list->count; i++) for (i = 0; i < core_info_curr_list->count; i++)
{ {
const core_info_t *info = &core_info_curr_list->list[i]; const core_info_t *info = &core_info_curr_list->list[i];
bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path));
if (path_in_ext_list) if (string_list_find_elem(info->supported_extensions_list, path_get_extension(path)))
return false; return false;
} }
@ -739,8 +732,8 @@ bool core_info_unsupported_content_path(const char *path)
bool core_info_database_supports_content_path(const char *database_path, const char *path) bool core_info_database_supports_content_path(const char *database_path, const char *path)
{ {
size_t i; size_t i;
char *database; char *database = NULL;
const char *delim; const char *delim = NULL;
const char *archive_path = NULL; const char *archive_path = NULL;
if (!core_info_curr_list) if (!core_info_curr_list)
@ -763,31 +756,30 @@ bool core_info_database_supports_content_path(const char *database_path, const c
{ {
const core_info_t *info = &core_info_curr_list->list[i]; const core_info_t *info = &core_info_curr_list->list[i];
if (string_list_find_elem(info->databases_list, database)) if (!string_list_find_elem(info->databases_list, database))
{ continue;
if (string_list_find_elem(info->supported_extensions_list, "zip") ||
string_list_find_elem(info->supported_extensions_list, "7z")) if ( !string_list_find_elem(info->supported_extensions_list, "zip")
{ && !string_list_find_elem(info->supported_extensions_list, "7z"))
free(database); continue;
return false;
} free(database);
} return false;
} }
} }
for (i = 0; i < core_info_curr_list->count; i++) for (i = 0; i < core_info_curr_list->count; i++)
{ {
const core_info_t *info = &core_info_curr_list->list[i]; const core_info_t *info = &core_info_curr_list->list[i];
bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path));
if (path_in_ext_list) if (!string_list_find_elem(info->supported_extensions_list, path_get_extension(path)))
{ continue;
if (string_list_find_elem(info->databases_list, database))
{ if (!string_list_find_elem(info->databases_list, database))
free(database); continue;
return true;
} free(database);
} return true;
} }
free(database); free(database);
@ -805,12 +797,15 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list,
for (i = 0; i < core_info_list->count; i++) for (i = 0; i < core_info_list->count; i++)
{ {
const core_info_t *info = &core_info_list->list[i]; const core_info_t *info = &core_info_list->list[i];
if (string_is_equal(path_basename(info->path), path_basename(path))
&& info->display_name) if (!string_is_equal(path_basename(info->path), path_basename(path)))
{ continue;
strlcpy(s, info->display_name, len);
return true; if (!info->display_name)
} continue;
strlcpy(s, info->display_name, len);
return true;
} }
return false; return false;
@ -818,40 +813,25 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list,
bool core_info_get_display_name(const char *path, char *s, size_t len) bool core_info_get_display_name(const char *path, char *s, size_t len)
{ {
char *core_name = NULL; bool ret = true;
char *display_name = NULL; char *display_name = NULL;
config_file_t *conf = NULL; config_file_t *conf = config_file_new(path);
if (!path_file_exists(path))
return false;
conf = config_file_new(path);
if (!conf) if (!conf)
return false; {
ret = false;
config_get_string(conf, "corename",
&core_name);
config_get_string(conf, "display_name",
&display_name);
if (!core_name || !display_name)
goto error; goto error;
}
config_file_free(conf); config_get_string(conf, "display_name", &display_name);
snprintf(s, len,"%s",display_name); if (display_name)
snprintf(s, len, "%s", display_name);
free(core_name);
free(display_name);
return true;
error: error:
config_file_free(conf); config_file_free(conf);
if (core_name)
free(core_name);
if (display_name) if (display_name)
free(display_name); free(display_name);
return false;
return ret;
} }

View File

@ -390,7 +390,10 @@ static int frontend_ctr_parse_drive_list(void *data)
return -1; return -1;
menu_entries_append_enum(list, menu_entries_append_enum(list,
"sdmc:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "sdmc:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
return 0; return 0;

View File

@ -640,9 +640,14 @@ static int frontend_darwin_parse_drive_list(void *data)
CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf)); CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf));
menu_entries_append_enum(list, menu_entries_append_enum(list,
home_dir_buf, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); home_dir_buf,
menu_entries_append_enum(list, "/", "", msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, "/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
ret = 0; ret = 0;

View File

@ -472,14 +472,26 @@ static int frontend_gx_parse_drive_list(void *data)
file_list_t *list = (file_list_t*)data; file_list_t *list = (file_list_t*)data;
#ifdef HW_RVL #ifdef HW_RVL
menu_entries_append_enum(list, menu_entries_append_enum(list,
"sd:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "sd:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"usb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "usb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
menu_entries_append_enum(list, menu_entries_append_enum(list,
"carda:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "carda:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"cardb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "cardb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
return 0; return 0;

View File

@ -61,6 +61,7 @@
#include "platform_linux.h" #include "platform_linux.h"
#ifdef HAVE_MENU #ifdef HAVE_MENU
#include "../../menu/menu_driver.h"
#include "../../menu/menu_display.h" #include "../../menu/menu_display.h"
#include "../../menu/menu_entries.h" #include "../../menu/menu_entries.h"
#endif #endif
@ -1857,24 +1858,29 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list, menu_entries_append_enum(list,
app_dir, app_dir,
msg_hash_to_str(MSG_APPLICATION_DIR), msg_hash_to_str(MSG_APPLICATION_DIR),
MSG_APPLICATION_DIR, FILE_TYPE_DIRECTORY, 0, 0); MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
internal_storage_app_path, internal_storage_app_path,
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MSG_EXTERNAL_APPLICATION_DIR, MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
FILE_TYPE_DIRECTORY, 0, 0); MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
internal_storage_path, internal_storage_path,
msg_hash_to_str(MSG_INTERNAL_STORAGE), msg_hash_to_str(MSG_INTERNAL_STORAGE),
MSG_INTERNAL_STORAGE, FILE_TYPE_DIRECTORY, 0, 0); MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/storage", "/storage",
msg_hash_to_str(MSG_REMOVABLE_STORAGE), msg_hash_to_str(MSG_REMOVABLE_STORAGE),
MSG_REMOVABLE_STORAGE, FILE_TYPE_DIRECTORY, 0, 0); MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
menu_entries_append_enum(list, "/", "", menu_entries_append_enum(list, "/",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
return 0; return 0;

View File

@ -497,29 +497,65 @@ static int frontend_ps3_parse_drive_list(void *data)
file_list_t *list = (file_list_t*)data; file_list_t *list = (file_list_t*)data;
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/app_home/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/app_home/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_hdd0/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_hdd0/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_hdd1/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_hdd1/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_bdvd/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_bdvd/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/host_root/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/host_root/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb000/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb000/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb001/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb001/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb002/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb002/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb003/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb003/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb004/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb004/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb005/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb005/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"/dev_usb006/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "/dev_usb006/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
return 0; return 0;

View File

@ -468,18 +468,36 @@ static int frontend_psp_parse_drive_list(void *data)
#ifdef VITA #ifdef VITA
menu_entries_append_enum(list, menu_entries_append_enum(list,
"app0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "app0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"ur0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "ur0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"ux0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "ux0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#else #else
menu_entries_append_enum(list, menu_entries_append_enum(list,
"ms0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "ms0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"ef0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "ef0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"host0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "host0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
#endif #endif

View File

@ -138,8 +138,10 @@ static int frontend_wiiu_parse_drive_list(void *data)
if (!list) if (!list)
return -1; return -1;
menu_entries_append_enum(list, menu_entries_append_enum(list, WIIU_SD_PATH,
WIIU_SD_PATH, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
return 0; return 0;
} }

View File

@ -236,7 +236,10 @@ static int frontend_win32_parse_drive_list(void *data)
drive[0] = 'A' + i; drive[0] = 'A' + i;
if (drives & (1 << i)) if (drives & (1 << i))
menu_entries_append_enum(list, menu_entries_append_enum(list,
drive, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); drive,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
} }
#endif #endif

View File

@ -1373,18 +1373,36 @@ static int frontend_xdk_parse_drive_list(void *data)
#if defined(_XBOX1) #if defined(_XBOX1)
menu_entries_append_enum(list, menu_entries_append_enum(list,
"C:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "C:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"D:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "D:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"E:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "E:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"F:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "F:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, menu_entries_append_enum(list,
"G:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "G:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#elif defined(_XBOX360) #elif defined(_XBOX360)
menu_entries_append_enum(list, menu_entries_append_enum(list,
"game:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); "game:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0);
#endif #endif
#endif #endif

View File

@ -2116,8 +2116,8 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg)
return "选择数据库"; return "选择数据库";
case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY: case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY:
return "移除"; return "移除";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "选择文件并探测核心"; return "选择文件并探测核心"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<游戏内容目录>"; return "<游戏内容目录>";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -2452,8 +2452,6 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg)
return "线性"; return "线性";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "使用核心加载压缩包"; return "使用核心加载压缩包";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "选择文件";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "加载最近的游戏内容"; return "加载最近的游戏内容";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -103,24 +103,6 @@ int menu_hash_get_help_de_enum(enum msg_hash_enums msg, char *s, size_t len)
break; break;
} }
break; break;
case MENU_ENUM_LABEL_LOAD_CONTENT:
snprintf(s, len,
"Lade Content. \n"
"Suche nach Content. \n"
" \n"
"Um Content zu laden benötigst du den passenden \n"
"Libretro-Core und die Content-Datei. \n"
" \n"
"Um einzustellen, welcher Ordner standardmäßig \n"
"geöffnet wird, um nach Content zu suchen, solltest \n"
"du das Content-Verzeichnis setzen. Wenn es nicht \n"
"gesetzt ist, wird es im Root-Verzeichen starten. \n"
" \n"
"Der Browser wird nur Dateierweiterungen des \n"
"zuletzt geladenen Cores zeigen und diesen Core \n"
"nutzen, wenn Content geladen wird."
);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
snprintf(s, len, snprintf(s, len,
"Lade Content aus dem Verlauf. \n" "Lade Content aus dem Verlauf. \n"

View File

@ -146,8 +146,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
"Datenbankmanager") "Datenbankmanager")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Von der Playlist löschen") "Von der Playlist löschen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Lade Content (Core erkennen)") /* FIXME */ "Lesezeichen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content-Verz.>") "<Content-Verz.>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -280,8 +280,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Lade Archiv") "Lade Archiv")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Lade Content") /* FIXME */
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Lade Content (Verlauf)") /* FIXME/UPDATE */ "Lade Content (Verlauf)") /* FIXME/UPDATE */
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection") "Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove") "Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Select File And Detect Core") "Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>") "<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core") "Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent") "Load Recent")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -1372,8 +1372,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Error:"; return "Error:";
case MSG_FAILED_TO_APPLY_SHADER: case MSG_FAILED_TO_APPLY_SHADER:
return "Error al aplicar shader."; return "Error al aplicar shader.";
case MSG_FAILED_TO_LOAD_CONTENT:
return "Error al cargar el contenido";
case MSG_FAILED_TO_LOAD_MOVIE_FILE: case MSG_FAILED_TO_LOAD_MOVIE_FILE:
return "Error al cargar el archivo de película"; return "Error al cargar el archivo de película";
case MSG_FAILED_TO_LOAD_OVERLAY: case MSG_FAILED_TO_LOAD_OVERLAY:
@ -1655,8 +1653,8 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Proporción personalizada"; return "Proporción personalizada";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Gestor de bases de datos"; return "Gestor de bases de datos";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleccionar archivo y detectar núcleo"; return "Seleccionar archivo y detectar núcleo"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "(Carpeta de contenido)"; return "(Carpeta de contenido)";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -1794,8 +1792,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg)
return "Nivel de registro del núcleo"; return "Nivel de registro del núcleo";
case MENU_ENUM_LABEL_VALUE_LINEAR: case MENU_ENUM_LABEL_VALUE_LINEAR:
return "Lineal"; return "Lineal";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleccionar archivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Cargar archivos recientes"; return "Cargar archivos recientes";
case MENU_ENUM_LABEL_VALUE_LOAD_STATE: case MENU_ENUM_LABEL_VALUE_LOAD_STATE:

View File

@ -480,8 +480,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection") "Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove") "Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Via les fichiers (détecter le coeur)") "Via les fichiers") /* TODO/FIXME - update */
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Dossier de contenu>") "<Dossier de contenu>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -812,8 +812,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linéaire") "Linéaire")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Charger l'archive") "Charger l'archive")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Via les fichiers")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Récemment ouvert") "Récemment ouvert")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -1611,8 +1611,8 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Abilita riavvolgi"; return "Abilita riavvolgi";
case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST: case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST:
return "Collezione"; return "Collezione";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleziona il file ed intercetta il core"; return "Seleziona il file ed intercetta il core"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST:
return "Scarica su directories"; return "Scarica su directories";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
@ -1729,8 +1729,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg)
return "Nessun oggetto."; return "Nessun oggetto.";
case MENU_ENUM_LABEL_VALUE_CORE_LIST: case MENU_ENUM_LABEL_VALUE_CORE_LIST:
return "Carica Core"; return "Carica Core";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleziona contenuto";
case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT: case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT:
return "Chiudi"; return "Chiudi";
case MENU_ENUM_LABEL_VALUE_MANAGEMENT: case MENU_ENUM_LABEL_VALUE_MANAGEMENT:

View File

@ -498,8 +498,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection") "Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"削除") "削除")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"ファイルを選択とコア検出") "ファイルを選択とコア検出") /* TODO/FIXME - update */
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>") "<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -834,8 +834,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"コアでアーカイブをロード") "コアでアーカイブをロード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"ファイル選択")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"最近のものをロード") "最近のものをロード")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -307,8 +307,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST,
"deferred_wifi_settings_list") "deferred_wifi_settings_list")
MSG_HASH(MENU_ENUM_LABEL_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_DELETE_ENTRY,
"delete_entry") "delete_entry")
MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_FAVORITES,
"detect_core_list") "favorites")
MSG_HASH(MENU_ENUM_LABEL_DIRECTORY_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_DIRECTORY_SETTINGS,
"directory_settings") "directory_settings")
MSG_HASH(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, MSG_HASH(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS,
@ -349,6 +349,8 @@ MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_DETECTED,
"file_browser_core_detected") "file_browser_core_detected")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION,
"file_browser_core_select_from_collection") "file_browser_core_select_from_collection")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE,
"file_browser_core_select_from_collection_current_core")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY,
"file_browser_directory") "file_browser_directory")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_IMAGE, MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_IMAGE,
@ -517,8 +519,6 @@ MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE,
"load_archive") "load_archive")
MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE, MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE,
"load_archive_detect_core") "load_archive_detect_core")
MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT,
"load_content_default")
MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY,
"load_recent") "load_recent")
MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_LIST,
@ -1109,6 +1109,8 @@ MSG_HASH(MENU_ENUM_LABEL_SECONDS, "seconds")
MSG_HASH(MENU_ENUM_LABEL_STATUS, "status") MSG_HASH(MENU_ENUM_LABEL_STATUS, "status")
MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK,
"detect_core_list_ok") "detect_core_list_ok")
MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE,
"detect_core_list_ok_current_core")
MSG_HASH(MENU_ENUM_LABEL_NO_DISK, MSG_HASH(MENU_ENUM_LABEL_NO_DISK,
"no_disk") "no_disk")
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS, MSG_HASH(MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS,
@ -1153,3 +1155,5 @@ MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_SNOW,
"shader_pipeline_snow") "shader_pipeline_snow")
MSG_HASH(MENU_ENUM_LABEL_INPUT_UNIFIED_MENU_CONTROLS, MSG_HASH(MENU_ENUM_LABEL_INPUT_UNIFIED_MENU_CONTROLS,
"unified_menu_controls") "unified_menu_controls")
MSG_HASH(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
"detect_core_list_push_dir")

View File

@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selectie") "Database Selectie")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Verwijderen") "Verwijderen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Selecteer Bestand En Detecteer Core") "Favorieten")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>") "<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Laad Archief Met Core") "Laad Archief Met Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Selecteer Bestand")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Recentelijk gebruikt") "Recentelijk gebruikt")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -176,7 +176,7 @@ const char *msg_hash_to_str_pl(enum msg_hash_enums msg)
return "Włąsny współczynnik"; return "Włąsny współczynnik";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Menedżer bazy danych"; return "Menedżer bazy danych";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES: /* TODO/FIXME - update */
return "Wybierz plik i dopasuj rdzeń"; return "Wybierz plik i dopasuj rdzeń";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Katalog treści>"; return "<Katalog treści>";
@ -312,8 +312,6 @@ const char *msg_hash_to_str_pl(enum msg_hash_enums msg)
return "Liniowe"; return "Liniowe";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Wczytaj archiwum"; return "Wczytaj archiwum";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Wybierz plik";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Wczytaj z ostatnio używanych"; return "Wczytaj z ostatnio używanych";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -90,26 +90,6 @@ int menu_hash_get_help_pt_enum(enum msg_hash_enums msg, char *s, size_t len)
break; break;
} }
break; break;
case MENU_ENUM_LABEL_LOAD_CONTENT:
snprintf(s, len,
"Carregar Conteúdo. \n"
"Busca conteúdo. \n"
" \n"
"Para carregar conteúdo, você precisa de \n"
"um core libretro para usar, e um arquivo \n"
"de conteúdo. \n"
" \n"
"Para controlar onde o menu começa a \n"
"buscar conteúdo, defina o Diretório \n"
"de Navegação. Se não estiver definido, \n"
"o Retroarch começará no diretório raiz. \n"
" \n"
"O navegador vai filtrar pelas extensões \n"
"do mais recente core definido em 'Core', \n"
"e o usará quando o conteúdo estiver \n"
"carregado."
);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
snprintf(s, len, snprintf(s, len,
"Carregando conteúdo do histórico. \n" "Carregando conteúdo do histórico. \n"
@ -1114,8 +1094,8 @@ const char *msg_hash_to_str_pt(enum msg_hash_enums msg)
return "Relação de Aspecto Personalizada"; return "Relação de Aspecto Personalizada";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Gerenciador de Databases"; return "Gerenciador de Databases";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Selecionar Arquivo e Detectar Core"; return "Selecionar Arquivo e Detectar Core"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Diretório de Conteúdo>"; return "<Diretório de Conteúdo>";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -1246,8 +1226,6 @@ const char *msg_hash_to_str_pt(enum msg_hash_enums msg)
return "Linear"; return "Linear";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Carregar Arquivo"; return "Carregar Arquivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Selecionar Arquivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Selecionar do Histórico"; return "Selecionar do Histórico";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection") "Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove") "Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Select File And Detect Core") "Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>") "<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core") "Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent") "Load Recent")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -488,8 +488,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection") "Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove") "Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Select File And Detect Core") "Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>") "<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -826,8 +826,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear") "Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core") "Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent") "Load Recent")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,

View File

@ -2162,8 +2162,8 @@ const char *msg_hash_to_str_vn(enum msg_hash_enums msg)
return "Database Selection"; return "Database Selection";
case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY: case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY:
return "Remove"; return "Remove";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Select File And Detect Core"; return "Favorites";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Content dir>"; return "<Content dir>";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT:
@ -2497,8 +2497,6 @@ const char *msg_hash_to_str_vn(enum msg_hash_enums msg)
return "Linear"; return "Linear";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Tải Archive With Core"; return "Tải Archive With Core";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Select File";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Tải Recent"; return "Tải Recent";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -533,12 +533,13 @@ static int general_push(menu_displaylist_info_t *info,
strlcpy(info->exts, list->all_ext, sizeof(info->exts)); strlcpy(info->exts, list->all_ext, sizeof(info->exts));
else if (system_menu->valid_extensions) else if (system_menu->valid_extensions)
{ {
if (*system_menu->valid_extensions) if (!string_is_empty(system_menu->valid_extensions))
strlcpy(info->exts, system_menu->valid_extensions, strlcpy(info->exts, system_menu->valid_extensions,
sizeof(info->exts)); sizeof(info->exts));
} }
else else
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
break; break;
case PUSH_ARCHIVE_OPEN: case PUSH_ARCHIVE_OPEN:
if (system_menu->valid_extensions) if (system_menu->valid_extensions)
@ -567,8 +568,14 @@ static int general_push(menu_displaylist_info_t *info,
} }
break; break;
case PUSH_DETECT_CORE_LIST: case PUSH_DETECT_CORE_LIST:
if (!string_is_empty(list->all_ext)) if (list && !string_is_empty(list->all_ext))
strlcpy(info->exts, list->all_ext, sizeof(info->exts)); strlcpy(info->exts, list->all_ext, sizeof(info->exts));
else if (system_menu->valid_extensions)
{
if (!string_is_empty(system_menu->valid_extensions))
strlcpy(info->exts, system_menu->valid_extensions,
sizeof(info->exts));
}
break; break;
} }
@ -1111,7 +1118,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list);
break; break;
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_DETECT_CORE_LIST: case MENU_ENUM_LABEL_FAVORITES:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list);
break; break;
default: default:
@ -1341,7 +1348,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_content_history_path); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_content_history_path);
break; break;
case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_LABEL_DETECT_CORE_LIST: case MENU_LABEL_FAVORITES:
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list); BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list);
break; break;
default: default:

View File

@ -1620,6 +1620,18 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
{ {
switch (cbs->enum_idx) switch (cbs->enum_idx)
{ {
case MENU_ENUM_LABEL_VIDEO_DRIVER:
case MENU_ENUM_LABEL_AUDIO_DRIVER:
case MENU_ENUM_LABEL_INPUT_DRIVER:
case MENU_ENUM_LABEL_JOYPAD_DRIVER:
case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
case MENU_ENUM_LABEL_RECORD_DRIVER:
case MENU_ENUM_LABEL_LOCATION_DRIVER:
case MENU_ENUM_LABEL_CAMERA_DRIVER:
case MENU_ENUM_LABEL_WIFI_DRIVER:
case MENU_ENUM_LABEL_MENU_DRIVER:
BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label);
break;
case MENU_ENUM_LABEL_STATE_SLOT: case MENU_ENUM_LABEL_STATE_SLOT:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_state); menu_action_setting_disp_set_label_state);
@ -1703,8 +1715,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
case MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST: case MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST:
case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_DETECT_CORE_LIST: case MENU_ENUM_LABEL_FAVORITES:
case MENU_ENUM_LABEL_LOAD_CONTENT:
case MENU_ENUM_LABEL_CORE_OPTIONS: case MENU_ENUM_LABEL_CORE_OPTIONS:
case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS:
case MENU_ENUM_LABEL_SHADER_OPTIONS: case MENU_ENUM_LABEL_SHADER_OPTIONS:
@ -1778,6 +1789,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_type(
menu_action_setting_disp_set_label_core_option_create); menu_action_setting_disp_set_label_core_option_create);
break; break;
case FILE_TYPE_CORE: case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
BIND_ACTION_GET_VALUE(cbs, BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_core); menu_action_setting_disp_set_label_menu_file_core);
break; break;

View File

@ -71,6 +71,7 @@ typedef struct
#endif #endif
/* FIXME - Global variables, refactor */ /* FIXME - Global variables, refactor */
static char filebrowser_label[PATH_MAX_LENGTH];
static char detect_content_path[PATH_MAX_LENGTH]; static char detect_content_path[PATH_MAX_LENGTH];
unsigned rpl_entry_selection_ptr = 0; unsigned rpl_entry_selection_ptr = 0;
unsigned rdb_entry_start_game_selection_ptr = 0; unsigned rdb_entry_start_game_selection_ptr = 0;
@ -294,7 +295,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_AUDIO_DSP_PLUGIN: case ACTION_OK_DL_AUDIO_DSP_PLUGIN:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.audio_filter; info_path = settings->directory.audio_filter;
info_label = msg_hash_to_str(MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN); info_label = msg_hash_to_str(MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN);
@ -302,7 +303,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
break; break;
case ACTION_OK_DL_SHADER_PASS: case ACTION_OK_DL_SHADER_PASS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.video_shader; info_path = settings->directory.video_shader;
@ -326,7 +327,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_FILE_BROWSER_SELECT_DIR: case ACTION_OK_DL_FILE_BROWSER_SELECT_DIR:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_SELECT_DIR;
if (path) if (path)
strlcpy(menu->deferred_path, path, strlcpy(menu->deferred_path, path,
sizeof(menu->deferred_path)); sizeof(menu->deferred_path));
@ -344,7 +345,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_SHADER_PRESET: case ACTION_OK_DL_SHADER_PRESET:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.video_shader; info_path = settings->directory.video_shader;
@ -352,7 +353,6 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
break; break;
case ACTION_OK_DL_CONTENT_LIST: case ACTION_OK_DL_CONTENT_LIST:
menu_displaylist_reset_filebrowser();
info.type = FILE_TYPE_DIRECTORY; info.type = FILE_TYPE_DIRECTORY;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = new_path; info_path = new_path;
@ -360,6 +360,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_SCAN_DIR_LIST: case ACTION_OK_DL_SCAN_DIR_LIST:
filebrowser_types = FILEBROWSER_SCAN_DIR;
info.type = FILE_TYPE_DIRECTORY; info.type = FILE_TYPE_DIRECTORY;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = new_path; info_path = new_path;
@ -367,7 +368,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SCAN_DIR; dl_type = DISPLAYLIST_FILE_BROWSER_SCAN_DIR;
break; break;
case ACTION_OK_DL_REMAP_FILE: case ACTION_OK_DL_REMAP_FILE:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.input_remapping; info_path = settings->directory.input_remapping;
@ -377,7 +378,7 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_RECORD_CONFIGFILE: case ACTION_OK_DL_RECORD_CONFIGFILE:
{ {
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = global->record.config_dir; info_path = global->record.config_dir;
@ -386,7 +387,7 @@ int generic_action_ok_displaylist_push(const char *path,
} }
break; break;
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST: case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.menu_content; info_path = settings->directory.menu_content;
@ -394,7 +395,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
break; break;
case ACTION_OK_DL_PLAYLIST_COLLECTION: case ACTION_OK_DL_PLAYLIST_COLLECTION:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = path; info_path = path;
@ -402,7 +403,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_CHEAT_FILE: case ACTION_OK_DL_CHEAT_FILE:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->path.cheat_database; info_path = settings->path.cheat_database;
@ -410,7 +411,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE;
break; break;
case ACTION_OK_DL_CORE_LIST: case ACTION_OK_DL_CORE_LIST:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.libretro; info_path = settings->directory.libretro;
@ -418,7 +419,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_CORE; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_CORE;
break; break;
case ACTION_OK_DL_CONTENT_COLLECTION_LIST: case ACTION_OK_DL_CONTENT_COLLECTION_LIST:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_SELECT_COLLECTION;
info.type = type; info.type = type;
info.directory_ptr = idx; info.directory_ptr = idx;
info_path = settings->directory.playlist; info_path = settings->directory.playlist;
@ -426,7 +427,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION; dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION;
break; break;
case ACTION_OK_DL_RDB_ENTRY: case ACTION_OK_DL_RDB_ENTRY:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join_delim(tmp, fill_pathname_join_delim(tmp,
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL), msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL),
path, '|', sizeof(tmp)); path, '|', sizeof(tmp));
@ -500,7 +501,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_DATABASE_MANAGER_LIST: case ACTION_OK_DL_DATABASE_MANAGER_LIST:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join(tmp, fill_pathname_join(tmp,
settings->path.content_database, settings->path.content_database,
path, sizeof(tmp)); path, sizeof(tmp));
@ -513,7 +514,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC; dl_type = DISPLAYLIST_GENERIC;
break; break;
case ACTION_OK_DL_CURSOR_MANAGER_LIST: case ACTION_OK_DL_CURSOR_MANAGER_LIST:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join(tmp, settings->directory.cursor, fill_pathname_join(tmp, settings->directory.cursor,
path, sizeof(tmp)); path, sizeof(tmp));
@ -1424,6 +1425,18 @@ static int generic_action_ok(const char *path,
command_event(CMD_EVENT_RESUME, NULL); command_event(CMD_EVENT_RESUME, NULL);
break; break;
case ACTION_OK_SET_DIRECTORY: case ACTION_OK_SET_DIRECTORY:
flush_type = MENU_SETTINGS;
{
rarch_setting_t *setting = menu_setting_find(filebrowser_label);
if (setting)
{
setting_set_with_string_representation(
setting, action_path);
ret = menu_setting_generic(setting, false);
}
}
break;
case ACTION_OK_SET_PATH: case ACTION_OK_SET_PATH:
flush_type = MENU_SETTINGS; flush_type = MENU_SETTINGS;
{ {
@ -1816,6 +1829,7 @@ static int action_ok_remap_file_save_game(const char *path,
int action_ok_path_use_directory(const char *path, int action_ok_path_use_directory(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
filebrowser_types = FILEBROWSER_NONE;
return generic_action_ok(NULL, label, type, idx, entry_idx, return generic_action_ok(NULL, label, type, idx, entry_idx,
ACTION_OK_SET_DIRECTORY, MSG_UNKNOWN); ACTION_OK_SET_DIRECTORY, MSG_UNKNOWN);
} }
@ -1875,6 +1889,47 @@ static int action_ok_core_deferred_set(const char *path,
return menu_cbs_exit(); return menu_cbs_exit();
} }
static int action_ok_core_deferred_set_current_core(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
size_t selection;
char core_display_name[PATH_MAX_LENGTH];
const char *entry_path = NULL;
const char *entry_label = NULL;
const char *entry_crc32 = NULL;
const char *db_name = NULL;
playlist_t *playlist = NULL;
core_display_name[0] = '\0';
if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection))
return menu_cbs_exit();
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist);
retro_assert(playlist != NULL);
core_info_get_name(path, core_display_name, sizeof(core_display_name));
idx = rdb_entry_start_game_selection_ptr;
playlist_get_index(playlist, idx,
&entry_path, &entry_label, NULL, NULL, &entry_crc32, &db_name);
playlist_update(playlist, idx,
entry_path, entry_label,
path , core_display_name,
entry_crc32,
db_name);
playlist_write_file(playlist);
menu_entries_pop_stack(&selection, 0, 1);
menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection);
return 0;
}
static int action_ok_deferred_list_stub(const char *path, static int action_ok_deferred_list_stub(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
@ -1944,6 +1999,13 @@ static int action_ok_file_load_imageviewer(const char *path,
CONTENT_MODE_LOAD_CONTENT_WITH_IMAGEVIEWER_CORE_FROM_MENU); CONTENT_MODE_LOAD_CONTENT_WITH_IMAGEVIEWER_CORE_FROM_MENU);
} }
static int action_ok_file_load_current_core(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
return generic_action_ok_file_load(path, detect_content_path,
CORE_TYPE_FFMPEG, CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU);
}
static int action_ok_file_load_detect_core(const char *path, static int action_ok_file_load_detect_core(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
@ -2693,7 +2755,6 @@ static int action_ok_shader_apply_changes(const char *path,
static int action_ok_lookup_setting(const char *path, static int action_ok_lookup_setting(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
menu_displaylist_reset_filebrowser();
return menu_setting_set(type, label, MENU_ACTION_OK, false); return menu_setting_set(type, label, MENU_ACTION_OK, false);
} }
@ -3099,13 +3160,23 @@ static int action_ok_scan_directory_list(const char *path,
entry_idx, ACTION_OK_DL_SCAN_DIR_LIST); entry_idx, ACTION_OK_DL_SCAN_DIR_LIST);
} }
static int action_ok_push_random_dir(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
settings_t *settings = config_get_ptr();
return generic_action_ok_displaylist_push(path, path,
msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
type, idx,
entry_idx, ACTION_OK_DL_CONTENT_LIST);
}
static int action_ok_push_downloads_dir(const char *path, static int action_ok_push_downloads_dir(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
return generic_action_ok_displaylist_push(path, settings->directory.core_assets, return generic_action_ok_displaylist_push(path, settings->directory.core_assets,
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST), msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
type, idx, type, idx,
entry_idx, ACTION_OK_DL_CONTENT_LIST); entry_idx, ACTION_OK_DL_CONTENT_LIST);
} }
@ -3127,6 +3198,7 @@ int action_ok_push_generic_list(const char *path,
int action_ok_push_filebrowser_list_dir_select(const char *path, int action_ok_push_filebrowser_list_dir_select(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
strlcpy(filebrowser_label, label, sizeof(filebrowser_label));
return generic_action_ok_displaylist_push(path, NULL, label, type, idx, return generic_action_ok_displaylist_push(path, NULL, label, type, idx,
entry_idx, ACTION_OK_DL_FILE_BROWSER_SELECT_DIR); entry_idx, ACTION_OK_DL_FILE_BROWSER_SELECT_DIR);
} }
@ -3134,6 +3206,7 @@ int action_ok_push_filebrowser_list_dir_select(const char *path,
static int action_ok_push_default(const char *path, static int action_ok_push_default(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
filebrowser_types = FILEBROWSER_NONE;
return generic_action_ok_displaylist_push(path, NULL, label, type, idx, return generic_action_ok_displaylist_push(path, NULL, label, type, idx,
entry_idx, ACTION_OK_DL_PUSH_DEFAULT); entry_idx, ACTION_OK_DL_PUSH_DEFAULT);
} }
@ -3611,6 +3684,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION: case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION:
BIND_ACTION_OK(cbs, action_ok_core_deferred_set); BIND_ACTION_OK(cbs, action_ok_core_deferred_set);
break; break;
case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE:
BIND_ACTION_OK(cbs, action_ok_core_deferred_set_current_core);
break;
case MENU_ENUM_LABEL_START_CORE: case MENU_ENUM_LABEL_START_CORE:
BIND_ACTION_OK(cbs, action_ok_start_core); BIND_ACTION_OK(cbs, action_ok_start_core);
break; break;
@ -3789,16 +3865,21 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
BIND_ACTION_OK(cbs, action_ok_scan_directory_list); BIND_ACTION_OK(cbs, action_ok_scan_directory_list);
break; break;
case MENU_ENUM_LABEL_SCAN_FILE: case MENU_ENUM_LABEL_SCAN_FILE:
case MENU_ENUM_LABEL_LOAD_CONTENT: case MENU_ENUM_LABEL_FAVORITES:
case MENU_ENUM_LABEL_DETECT_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_push_content_list); BIND_ACTION_OK(cbs, action_ok_push_content_list);
break; break;
case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR:
BIND_ACTION_OK(cbs, action_ok_push_random_dir);
break;
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_push_downloads_dir); BIND_ACTION_OK(cbs, action_ok_push_downloads_dir);
break; break;
case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK: case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK:
BIND_ACTION_OK(cbs, action_ok_file_load_detect_core); BIND_ACTION_OK(cbs, action_ok_file_load_detect_core);
break; break;
case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE:
BIND_ACTION_OK(cbs, action_ok_file_load_current_core);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST: case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST:
case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST: case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST:
@ -3994,8 +4075,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
break; break;
case MENU_LABEL_SCAN_FILE: case MENU_LABEL_SCAN_FILE:
case MENU_LABEL_SCAN_DIRECTORY: case MENU_LABEL_SCAN_DIRECTORY:
case MENU_LABEL_LOAD_CONTENT: case MENU_LABEL_FAVORITES:
case MENU_LABEL_DETECT_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_push_content_list); BIND_ACTION_OK(cbs, action_ok_push_content_list);
break; break;
case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
@ -4130,7 +4210,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
case FILE_TYPE_CARCHIVE: case FILE_TYPE_CARCHIVE:
switch (menu_label_hash) switch (menu_label_hash)
{ {
case MENU_LABEL_DETECT_CORE_LIST: case MENU_LABEL_FAVORITES:
BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core); BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core);
break; break;
case MENU_LABEL_SCAN_FILE: case MENU_LABEL_SCAN_FILE:
@ -4242,7 +4322,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
break; break;
#endif #endif
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_DETECT_CORE_LIST: case MENU_ENUM_LABEL_FAVORITES:
case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE: case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE:
#ifdef HAVE_COMPRESSION #ifdef HAVE_COMPRESSION
if (type == FILE_TYPE_IN_CARCHIVE) if (type == FILE_TYPE_IN_CARCHIVE)
@ -4273,7 +4353,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
break; break;
#endif #endif
case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_LABEL_DETECT_CORE_LIST: case MENU_LABEL_FAVORITES:
case MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE: case MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE:
#ifdef HAVE_COMPRESSION #ifdef HAVE_COMPRESSION
if (type == FILE_TYPE_IN_CARCHIVE) if (type == FILE_TYPE_IN_CARCHIVE)
@ -4306,6 +4386,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
/* TODO/FIXME - handle scan case */ /* TODO/FIXME - handle scan case */
BIND_ACTION_OK(cbs, action_ok_file_load_imageviewer); BIND_ACTION_OK(cbs, action_ok_file_load_imageviewer);
break; break;
case FILE_TYPE_DIRECT_LOAD:
BIND_ACTION_OK(cbs, action_ok_file_load);
break;
case MENU_SETTINGS: case MENU_SETTINGS:
case MENU_SETTING_GROUP: case MENU_SETTING_GROUP:
case MENU_SETTING_SUBGROUP: case MENU_SETTING_SUBGROUP:

View File

@ -229,7 +229,7 @@ default_title_generic_macro(action_get_title_list_rdb_entry_database_info,MENU_E
static int action_get_title_default(const char *path, const char *label, static int action_get_title_default(const char *path, const char *label,
unsigned menu_type, char *s, size_t len) unsigned menu_type, char *s, size_t len)
{ {
snprintf(s, len, "%s %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), path); snprintf(s, len, "%s %s", "Select File", path);
return 0; return 0;
} }

View File

@ -664,6 +664,7 @@ static void mui_render_label_value(mui_handle_t *mui,
case FILE_TYPE_COMPRESSED: case FILE_TYPE_COMPRESSED:
case FILE_TYPE_MORE: case FILE_TYPE_MORE:
case FILE_TYPE_CORE: case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
case FILE_TYPE_RDB: case FILE_TYPE_RDB:
case FILE_TYPE_CURSOR: case FILE_TYPE_CURSOR:
case FILE_TYPE_PLAIN: case FILE_TYPE_PLAIN:
@ -1673,21 +1674,16 @@ static int mui_list_push(void *data, void *userdata,
{ {
case DISPLAYLIST_LOAD_CONTENT_LIST: case DISPLAYLIST_LOAD_CONTENT_LIST:
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
menu_entries_append_enum(info->list, menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES),
msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT), msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
MENU_ENUM_LABEL_LOAD_CONTENT, MENU_ENUM_LABEL_FAVORITES,
MENU_SETTING_ACTION, 0, 0); MENU_SETTING_ACTION, 0, 0);
core_info_get_list(&list); core_info_get_list(&list);
if (core_info_list_num_info_files(list)) if (core_info_list_num_info_files(list))
{ {
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST),
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST),
MENU_ENUM_LABEL_DETECT_CORE_LIST,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(info->list, menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST),
msg_hash_to_str(MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), msg_hash_to_str(MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST),

View File

@ -1867,6 +1867,11 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE:
case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME:
return xmb->textures.list[XMB_TEXTURE_SAVESTATE]; return xmb->textures.list[XMB_TEXTURE_SAVESTATE];
case MENU_ENUM_LABEL_FAVORITES:
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
return xmb->textures.list[XMB_TEXTURE_FOLDER];
case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR:
return xmb->textures.list[XMB_TEXTURE_RDB];
default: default:
break; break;
} }
@ -1908,6 +1913,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case FILE_TYPE_MOVIE: case FILE_TYPE_MOVIE:
return xmb->textures.list[XMB_TEXTURE_MOVIE]; return xmb->textures.list[XMB_TEXTURE_MOVIE];
case FILE_TYPE_CORE: case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
return xmb->textures.list[XMB_TEXTURE_CORE]; return xmb->textures.list[XMB_TEXTURE_CORE];
case FILE_TYPE_RDB: case FILE_TYPE_RDB:
return xmb->textures.list[XMB_TEXTURE_RDB]; return xmb->textures.list[XMB_TEXTURE_RDB];
@ -2126,6 +2132,7 @@ static void xmb_draw_items(xmb_handle_t *xmb,
case FILE_TYPE_COMPRESSED: case FILE_TYPE_COMPRESSED:
case FILE_TYPE_MORE: case FILE_TYPE_MORE:
case FILE_TYPE_CORE: case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
case FILE_TYPE_RDB: case FILE_TYPE_RDB:
case FILE_TYPE_CURSOR: case FILE_TYPE_CURSOR:
case FILE_TYPE_PLAIN: case FILE_TYPE_PLAIN:

View File

@ -76,6 +76,11 @@
#include "../wifi/wifi_driver.h" #include "../wifi/wifi_driver.h"
#include "../tasks/tasks_internal.h" #include "../tasks/tasks_internal.h"
static char new_path_entry[4096] = {0};
static char new_lbl_entry[4096] = {0};
static char new_entry[4096] = {0};
enum menu_displaylist_ctl_state new_type = 0;
#ifdef HAVE_NETWORKING #ifdef HAVE_NETWORKING
static void print_buf_lines(file_list_t *list, char *buf, static void print_buf_lines(file_list_t *list, char *buf,
const char *label, int buf_size, const char *label, int buf_size,
@ -176,16 +181,20 @@ static void print_buf_lines(file_list_t *list, char *buf,
path_remove_extension(core_path); path_remove_extension(core_path);
last = (char*)strrchr(core_path, '_'); last = (char*)strrchr(core_path, '_');
if (!string_is_empty(last)) if (!string_is_empty(last))
{ {
if (!string_is_equal(last, "_libretro")) if (!string_is_equal(last, "_libretro"))
*last = '\0'; *last = '\0';
} }
strlcat(core_path, strlcat(core_path,
file_path_str(FILE_PATH_CORE_INFO_EXTENSION), file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
sizeof(core_path)); sizeof(core_path));
if (core_info_get_display_name( if (
path_file_exists(core_path)
&& core_info_get_display_name(
core_path, display_name, sizeof(display_name))) core_path, display_name, sizeof(display_name)))
menu_entries_set_alt_at_offset(list, j, display_name); menu_entries_set_alt_at_offset(list, j, display_name);
} }
@ -3197,15 +3206,7 @@ static int menu_displaylist_parse_options_remappings(
return 0; return 0;
} }
enum filebrowser_enums unsigned filebrowser_types = 0;
{
FILEBROWSER_NONE = 0,
FILEBROWSER_SELECT_DIR,
FILEBROWSER_SCAN_DIR,
FILEBROWSER_SELECT_COLLECTION
};
static unsigned filebrowser_types = 0;
static int menu_displaylist_parse_playlists( static int menu_displaylist_parse_playlists(
menu_displaylist_info_t *info, bool horizontal) menu_displaylist_info_t *info, bool horizontal)
@ -3215,7 +3216,7 @@ static int menu_displaylist_parse_playlists(
unsigned items_found = 0; unsigned items_found = 0;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (!*info->path) if (string_is_empty(info->path))
{ {
if (frontend_driver_parse_drive_list(info->list) != 0) if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "", menu_entries_append_enum(info->list, "/", "",
@ -3304,12 +3305,8 @@ static int menu_displaylist_parse_playlists(
string_list_free(str_list); string_list_free(str_list);
if (items_found == 0) if (items_found == 0 && !horizontal)
{
if (horizontal)
return 0;
goto no_playlists; goto no_playlists;
}
return 0; return 0;
@ -3333,7 +3330,7 @@ static int menu_displaylist_parse_cores(
unsigned items_found = 0; unsigned items_found = 0;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (!*info->path) if (string_is_empty(info->path))
{ {
if (frontend_driver_parse_drive_list(info->list) != 0) if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "", menu_entries_append_enum(info->list, "/", "",
@ -3423,7 +3420,7 @@ static int menu_displaylist_parse_cores(
/* Need to preserve slash first time. */ /* Need to preserve slash first time. */
path = str_list->elems[i].data; path = str_list->elems[i].data;
if (*info->path) if (!string_is_empty(info->path))
path = path_basename(path); path = path_basename(path);
#ifndef HAVE_DYNAMIC #ifndef HAVE_DYNAMIC
@ -3532,7 +3529,7 @@ static int menu_displaylist_parse_generic(
unsigned items_found = 0; unsigned items_found = 0;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (!*info->path) if (string_is_empty(info->path))
{ {
if (frontend_driver_parse_drive_list(info->list) != 0) if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "", menu_entries_append_enum(info->list, "/", "",
@ -3558,7 +3555,7 @@ static int menu_displaylist_parse_generic(
true, settings->show_hidden_files, true, false); true, settings->show_hidden_files, true, false);
#ifdef HAVE_LIBRETRODB #ifdef HAVE_LIBRETRODB
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) if (filebrowser_types == FILEBROWSER_SCAN_DIR)
menu_entries_prepend(info->list, menu_entries_prepend(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY),
msg_hash_to_str(MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY),
@ -3566,7 +3563,7 @@ static int menu_displaylist_parse_generic(
FILE_TYPE_SCAN_DIRECTORY, 0 ,0); FILE_TYPE_SCAN_DIRECTORY, 0 ,0);
#endif #endif
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) if (filebrowser_types == FILEBROWSER_SELECT_DIR)
menu_entries_prepend(info->list, menu_entries_prepend(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY),
msg_hash_to_str(MENU_ENUM_LABEL_USE_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_USE_THIS_DIRECTORY),
@ -3638,19 +3635,19 @@ static int menu_displaylist_parse_generic(
if (!is_dir) if (!is_dir)
{ {
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) if (filebrowser_types == FILEBROWSER_SELECT_DIR)
continue; continue;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) if (filebrowser_types == FILEBROWSER_SCAN_DIR)
continue; continue;
} }
/* Need to preserve slash first time. */ /* Need to preserve slash first time. */
path = str_list->elems[i].data; path = str_list->elems[i].data;
if (*info->path && !path_is_compressed) if (!string_is_empty(info->path) && !path_is_compressed)
path = path_basename(path); path = path_basename(path);
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION)) if (filebrowser_types == FILEBROWSER_SELECT_COLLECTION)
{ {
if (is_dir) if (is_dir)
file_type = FILE_TYPE_DIRECTORY; file_type = FILE_TYPE_DIRECTORY;
@ -3735,9 +3732,9 @@ static int menu_displaylist_parse_generic(
} }
/* We don't want to show 'filter by extension' for this. */ /* We don't want to show 'filter by extension' for this. */
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) if (filebrowser_types == FILEBROWSER_SELECT_DIR)
goto end; goto end;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) if (filebrowser_types == FILEBROWSER_SCAN_DIR)
goto end; goto end;
if (!extensions_honored) if (!extensions_honored)
@ -3874,6 +3871,22 @@ static bool menu_displaylist_push_list_process(menu_displaylist_info_t *info)
} }
#endif #endif
if (!string_is_empty(new_entry))
{
menu_entries_prepend(info->list,
new_path_entry,
new_lbl_entry,
new_type,
FILE_TYPE_CORE, 0, 0);
menu_entries_set_alt_at_offset(info->list, 0,
new_entry);
new_type = 0;
new_lbl_entry[0] = '\0';
new_path_entry[0] = '\0';
new_entry[0] = '\0';
}
if (info->need_refresh) if (info->need_refresh)
menu_entries_ctl(MENU_ENTRIES_CTL_REFRESH, info->list); menu_entries_ctl(MENU_ENTRIES_CTL_REFRESH, info->list);
@ -3909,8 +3922,7 @@ static bool menu_displaylist_push_internal(
} }
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB))) else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB)))
{ {
filebrowser_types = FILEBROWSER_NONE;
menu_displaylist_reset_filebrowser();
info->type = 42; info->type = 42;
strlcpy(info->exts, strlcpy(info->exts,
file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT),
@ -3925,7 +3937,7 @@ static bool menu_displaylist_push_internal(
} }
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_TAB))) else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_TAB)))
{ {
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type = 42; info->type = 42;
strlcpy(info->exts, strlcpy(info->exts,
file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT),
@ -3941,7 +3953,7 @@ static bool menu_displaylist_push_internal(
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB))) else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB)))
{ {
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type = 42; info->type = 42;
strlcpy(info->exts, strlcpy(info->exts,
file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT),
@ -3976,7 +3988,7 @@ static bool menu_displaylist_push_internal(
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type = 42; info->type = 42;
strlcpy(info->exts, strlcpy(info->exts,
file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT),
@ -4065,11 +4077,6 @@ static bool menu_displaylist_push(menu_displaylist_ctx_entry_t *entry)
return true; return true;
} }
void menu_displaylist_reset_filebrowser(void)
{
BIT32_CLEAR_ALL(filebrowser_types);
}
static void menu_displaylist_parse_playlist_history( static void menu_displaylist_parse_playlist_history(
menu_handle_t *menu, menu_handle_t *menu,
menu_displaylist_info_t *info, menu_displaylist_info_t *info,
@ -4247,24 +4254,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
break; break;
} }
switch (type)
{
case DISPLAYLIST_FILE_BROWSER_SCAN_DIR:
menu_displaylist_reset_filebrowser();
BIT32_SET(filebrowser_types, FILEBROWSER_SCAN_DIR);
break;
case DISPLAYLIST_FILE_BROWSER_SELECT_DIR:
menu_displaylist_reset_filebrowser();
BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_DIR);
break;
case DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION:
menu_displaylist_reset_filebrowser();
BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION);
break;
default:
break;
}
switch (type) switch (type)
{ {
case DISPLAYLIST_NONE: case DISPLAYLIST_NONE:
@ -5535,20 +5524,21 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_refresh = true; info->need_refresh = true;
break; break;
case DISPLAYLIST_LOAD_CONTENT_LIST: case DISPLAYLIST_LOAD_CONTENT_LIST:
menu_entries_append_enum(info->list, if (frontend_driver_parse_drive_list(info->list) != 0)
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), menu_entries_append_enum(info->list, "/",
msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT), msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_LOAD_CONTENT, MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
MENU_SETTING_ACTION, 0, 0); MENU_SETTING_ACTION, 0, 0);
if (!string_is_empty(settings->directory.menu_content))
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES),
msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
MENU_ENUM_LABEL_FAVORITES,
MENU_SETTING_ACTION, 0, 0);
if (core_info_list_num_info_files(list)) if (core_info_list_num_info_files(list))
{ {
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST),
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST),
MENU_ENUM_LABEL_DETECT_CORE_LIST,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(info->list, menu_entries_append_enum(info->list,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST),
@ -5908,15 +5898,46 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
if (cores_names_size == 0) if (cores_names_size == 0)
{ {
menu_entries_append_enum(info->list, if (!path_is_empty(RARCH_PATH_CORE))
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE), {
msg_hash_to_str(MENU_ENUM_LABEL_NO_CORES_AVAILABLE),
MENU_ENUM_LABEL_NO_CORES_AVAILABLE, menu_entries_append_enum(info->list,
0, 0, 0); path_get(RARCH_PATH_CORE),
info->download_core = true; path_get(RARCH_PATH_CORE),
MENU_ENUM_LABEL_DETECT_CORE_LIST_OK,
FILE_TYPE_DIRECT_LOAD,
0,
0);
{
const char *core_name = NULL;
struct retro_system_info *system = NULL;
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET,
&system);
if (system)
core_name = system->library_name;
if (!string_is_empty(core_name))
menu_entries_set_alt_at_offset(info->list, 0,
core_name);
}
}
else
{
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE),
msg_hash_to_str(MENU_ENUM_LABEL_NO_CORES_AVAILABLE),
MENU_ENUM_LABEL_NO_CORES_AVAILABLE,
0, 0, 0);
info->download_core = true;
}
} }
else
if (cores_names_size != 0)
{ {
unsigned j = 0;
struct string_list *cores_paths = struct string_list *cores_paths =
string_list_new_special(STRING_LIST_SUPPORTED_CORES_PATHS, string_list_new_special(STRING_LIST_SUPPORTED_CORES_PATHS,
(void*)menu->deferred_path, (void*)menu->deferred_path,
@ -5924,29 +5945,50 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
for (i = 0; i < cores_names_size; i++) for (i = 0; i < cores_names_size; i++)
{ {
switch (type) if ( !path_is_empty(RARCH_PATH_CORE) &&
string_is_equal(cores_paths->elems[i].data, path_get(RARCH_PATH_CORE)))
{ {
case DISPLAYLIST_CORES_COLLECTION_SUPPORTED: strlcpy(new_path_entry, cores_paths->elems[i].data, sizeof(new_path_entry));
menu_entries_append_enum(info->list, cores_paths->elems[i].data, "", snprintf(new_entry, sizeof(new_entry), "Current core (%s)", cores_names->elems[i].data);
MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, if (type == DISPLAYLIST_CORES_COLLECTION_SUPPORTED)
FILE_TYPE_CORE, 0, 0); {
break; new_lbl_entry[0] = '\0';
default: new_type = MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE;
menu_entries_append_enum(info->list, cores_paths->elems[i].data, }
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK), else
MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, {
FILE_TYPE_CORE, 0, 0); strlcpy(new_lbl_entry, cores_paths->elems[i].data, sizeof(new_lbl_entry));
break; new_type = MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE;
}
} }
else
{
switch (type)
{
case DISPLAYLIST_CORES_COLLECTION_SUPPORTED:
menu_entries_append_enum(info->list, cores_paths->elems[i].data, "",
MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION,
FILE_TYPE_CORE, 0, 0);
break;
default:
menu_entries_append_enum(info->list, cores_paths->elems[i].data,
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK),
MENU_ENUM_LABEL_DETECT_CORE_LIST_OK,
FILE_TYPE_CORE, 0, 0);
break;
}
menu_entries_set_alt_at_offset(info->list, i, menu_entries_set_alt_at_offset(info->list, j,
cores_names->elems[i].data); cores_names->elems[i].data);
j++;
}
} }
string_list_free(cores_paths); string_list_free(cores_paths);
} }
string_list_free(cores_names); string_list_free(cores_names);
} }
break; break;
case DISPLAYLIST_CORE_INFO: case DISPLAYLIST_CORE_INFO:
@ -6009,7 +6051,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_push = true; info->need_push = true;
break; break;
case DISPLAYLIST_DATABASES: case DISPLAYLIST_DATABASES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_RDB; info->type_default = FILE_TYPE_RDB;
strlcpy(info->exts, strlcpy(info->exts,
file_path_str(FILE_PATH_RDB_EXTENSION), file_path_str(FILE_PATH_RDB_EXTENSION),
@ -6048,7 +6090,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_push = true; info->need_push = true;
break; break;
case DISPLAYLIST_DATABASE_CURSORS: case DISPLAYLIST_DATABASE_CURSORS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CURSOR; info->type_default = FILE_TYPE_CURSOR;
strlcpy(info->exts, "dbc", sizeof(info->exts)); strlcpy(info->exts, "dbc", sizeof(info->exts));
strlcpy(info->path, settings->directory.cursor, sizeof(info->path)); strlcpy(info->path, settings->directory.cursor, sizeof(info->path));
@ -6059,14 +6101,14 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
ext_name[0] = '\0'; ext_name[0] = '\0';
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_PLAIN; info->type_default = FILE_TYPE_PLAIN;
if (frontend_driver_get_core_extension(ext_name, sizeof(ext_name))) if (frontend_driver_get_core_extension(ext_name, sizeof(ext_name)))
strlcpy(info->exts, ext_name, sizeof(info->exts)); strlcpy(info->exts, ext_name, sizeof(info->exts));
} }
break; break;
case DISPLAYLIST_CONFIG_FILES: case DISPLAYLIST_CONFIG_FILES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CONFIG; info->type_default = FILE_TYPE_CONFIG;
strlcpy(info->exts, "cfg", sizeof(info->exts)); strlcpy(info->exts, "cfg", sizeof(info->exts));
break; break;
@ -6077,7 +6119,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
(void)attr; (void)attr;
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_SHADER_PRESET; info->type_default = FILE_TYPE_SHADER_PRESET;
#ifdef HAVE_CG #ifdef HAVE_CG
@ -6098,7 +6140,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
union string_list_elem_attr attr = {0}; union string_list_elem_attr attr = {0};
struct string_list *str_list = string_list_new(); struct string_list *str_list = string_list_new();
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_SHADER; info->type_default = FILE_TYPE_SHADER;
(void)attr; (void)attr;
@ -6117,12 +6159,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
} }
break; break;
case DISPLAYLIST_VIDEO_FILTERS: case DISPLAYLIST_VIDEO_FILTERS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_VIDEOFILTER; info->type_default = FILE_TYPE_VIDEOFILTER;
strlcpy(info->exts, "filt", sizeof(info->exts)); strlcpy(info->exts, "filt", sizeof(info->exts));
break; break;
case DISPLAYLIST_IMAGES: case DISPLAYLIST_IMAGES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_IMAGE; info->type_default = FILE_TYPE_IMAGE;
{ {
union string_list_elem_attr attr = {0}; union string_list_elem_attr attr = {0};
@ -6146,37 +6188,37 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
} }
break; break;
case DISPLAYLIST_AUDIO_FILTERS: case DISPLAYLIST_AUDIO_FILTERS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_AUDIOFILTER; info->type_default = FILE_TYPE_AUDIOFILTER;
strlcpy(info->exts, "dsp", sizeof(info->exts)); strlcpy(info->exts, "dsp", sizeof(info->exts));
break; break;
case DISPLAYLIST_CHEAT_FILES: case DISPLAYLIST_CHEAT_FILES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CHEAT; info->type_default = FILE_TYPE_CHEAT;
strlcpy(info->exts, "cht", sizeof(info->exts)); strlcpy(info->exts, "cht", sizeof(info->exts));
break; break;
case DISPLAYLIST_CONTENT_HISTORY: case DISPLAYLIST_CONTENT_HISTORY:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_PLAIN; info->type_default = FILE_TYPE_PLAIN;
strlcpy(info->exts, "lpl", sizeof(info->exts)); strlcpy(info->exts, "lpl", sizeof(info->exts));
break; break;
case DISPLAYLIST_FONTS: case DISPLAYLIST_FONTS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_FONT; info->type_default = FILE_TYPE_FONT;
strlcpy(info->exts, "ttf", sizeof(info->exts)); strlcpy(info->exts, "ttf", sizeof(info->exts));
break; break;
case DISPLAYLIST_OVERLAYS: case DISPLAYLIST_OVERLAYS:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_OVERLAY; info->type_default = FILE_TYPE_OVERLAY;
strlcpy(info->exts, "cfg", sizeof(info->exts)); strlcpy(info->exts, "cfg", sizeof(info->exts));
break; break;
case DISPLAYLIST_RECORD_CONFIG_FILES: case DISPLAYLIST_RECORD_CONFIG_FILES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_RECORD_CONFIG; info->type_default = FILE_TYPE_RECORD_CONFIG;
strlcpy(info->exts, "cfg", sizeof(info->exts)); strlcpy(info->exts, "cfg", sizeof(info->exts));
break; break;
case DISPLAYLIST_REMAP_FILES: case DISPLAYLIST_REMAP_FILES:
menu_displaylist_reset_filebrowser(); filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_REMAP; info->type_default = FILE_TYPE_REMAP;
strlcpy(info->exts, "rmp", sizeof(info->exts)); strlcpy(info->exts, "rmp", sizeof(info->exts));
break; break;

View File

@ -159,6 +159,14 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_PENDING_CLEAR DISPLAYLIST_PENDING_CLEAR
}; };
enum filebrowser_enums
{
FILEBROWSER_NONE = 0,
FILEBROWSER_SELECT_DIR,
FILEBROWSER_SCAN_DIR,
FILEBROWSER_SELECT_COLLECTION
};
typedef struct menu_displaylist_info typedef struct menu_displaylist_info
{ {
bool need_sort; bool need_sort;
@ -205,6 +213,8 @@ void menu_displaylist_reset_filebrowser(void);
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data); bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data);
extern unsigned filebrowser_types;
RETRO_END_DECLS RETRO_END_DECLS
#endif #endif

View File

@ -125,6 +125,8 @@ enum msg_file_type
FILE_TYPE_ISO, FILE_TYPE_ISO,
FILE_TYPE_LUTRO, FILE_TYPE_LUTRO,
FILE_TYPE_DIRECT_LOAD,
FILE_TYPE_LAST FILE_TYPE_LAST
}; };
@ -672,6 +674,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_FILE_BROWSER_FONT, MENU_ENUM_LABEL_FILE_BROWSER_FONT,
MENU_ENUM_LABEL_FILE_BROWSER_RDB, MENU_ENUM_LABEL_FILE_BROWSER_RDB,
MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION,
MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE,
MENU_ENUM_LABEL_FILE_BROWSER_CORE_DETECTED, MENU_ENUM_LABEL_FILE_BROWSER_CORE_DETECTED,
MENU_ENUM_LABEL_FILE_BROWSER_IMAGE, MENU_ENUM_LABEL_FILE_BROWSER_IMAGE,
MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER, MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER,
@ -831,6 +834,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST, MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST,
MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST, MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST,
MENU_LABEL(FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_LABEL(DOWNLOADED_FILE_DETECT_CORE_LIST), MENU_LABEL(DOWNLOADED_FILE_DETECT_CORE_LIST),
MENU_ENUM_LABEL_VALUE_SEARCH, MENU_ENUM_LABEL_VALUE_SEARCH,
@ -1166,10 +1170,10 @@ enum msg_hash_enums
MENU_LABEL(DUMMY_ON_CORE_SHUTDOWN), MENU_LABEL(DUMMY_ON_CORE_SHUTDOWN),
MENU_LABEL(CHECK_FOR_MISSING_FIRMWARE), MENU_LABEL(CHECK_FOR_MISSING_FIRMWARE),
MENU_LABEL(DETECT_CORE_LIST_OK_CURRENT_CORE),
MENU_LABEL(DETECT_CORE_LIST_OK), MENU_LABEL(DETECT_CORE_LIST_OK),
MENU_LABEL(DETECT_CORE_LIST), MENU_LABEL(FAVORITES),
MENU_LABEL(START_CORE), MENU_LABEL(START_CORE),
MENU_LABEL(LOAD_CONTENT),
MENU_LABEL(CORE_UPDATER_LIST), MENU_LABEL(CORE_UPDATER_LIST),
MENU_LABEL(CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), MENU_LABEL(CORE_UPDATER_AUTO_EXTRACT_ARCHIVE),
MENU_LABEL(CORE_UPDATER_BUILDBOT_URL), MENU_LABEL(CORE_UPDATER_BUILDBOT_URL),
@ -1692,6 +1696,7 @@ enum msg_hash_enums
#define MENU_LABEL_RDB_ENTRY_RELEASE_YEAR 0x14c9c6bfU #define MENU_LABEL_RDB_ENTRY_RELEASE_YEAR 0x14c9c6bfU
#define MENU_LABEL_RDB_ENTRY_MAX_USERS 0xfae91cc4U #define MENU_LABEL_RDB_ENTRY_MAX_USERS 0xfae91cc4U
#define MENU_LABEL_FAVORITES 0x67325138U
#define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U #define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U
#define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU #define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU
#define MENU_LABEL_CORE_LIST 0xa22bb14dU #define MENU_LABEL_CORE_LIST 0xa22bb14dU
@ -1749,7 +1754,6 @@ enum msg_hash_enums
#define MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd44d395cU #define MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd44d395cU
/* Main menu */ /* Main menu */
#define MENU_LABEL_LOAD_CONTENT 0x828943c3U
#define MENU_LABEL_LOAD_CONTENT_LIST 0x5745de1fU #define MENU_LABEL_LOAD_CONTENT_LIST 0x5745de1fU
#define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U #define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U
#define MENU_LABEL_ADD_CONTENT_LIST 0x046f4668U #define MENU_LABEL_ADD_CONTENT_LIST 0x046f4668U