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 <file/archive_file.h>
#include <retro_stat.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#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];
config_file_t *config = (config_file_t*)info->config_data;
if (!config)
continue;
if (!config_get_uint(config, "firmware_count", &count))
if (!config || !config_get_uint(config, "firmware_count", &count))
continue;
info->firmware = (core_info_firmware_t*)
@ -101,9 +100,11 @@ static void core_info_list_resolve_all_firmware(
for (c = 0; c < count; c++)
{
char path_key[64] = {0};
char desc_key[64] = {0};
char opt_key[64] = {0};
char path_key[64];
char desc_key[64];
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(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);
}
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)
{
char info_path_base[PATH_MAX_LENGTH] = {0};
char info_path[PATH_MAX_LENGTH] = {0};
char info_path_base[PATH_MAX_LENGTH];
char *substr = NULL;
settings_t *settings = config_get_ptr();
if (!contents->elems[i].data)
return NULL;
if (!contents || !contents->elems[i].data)
return false;
info_path_base[0] = '\0';
fill_pathname_base_noext(info_path_base, contents->elems[i].data,
sizeof(info_path_base));
#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)
*substr = '\0';
#endif
@ -185,28 +189,21 @@ static config_file_t *core_info_list_iterate(
file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
sizeof(info_path_base));
fill_pathname_join(info_path,
fill_pathname_join(s,
(!string_is_empty(settings->path.libretro_info)) ?
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;
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();
if (!settings)
return NULL;
contents = dir_list_new_special(
settings->directory.libretro,
DIR_LIST_CORES, NULL);
struct string_list *contents = dir_list_new_special(
path, DIR_LIST_CORES, NULL);
if (!contents)
return NULL;
@ -219,17 +216,23 @@ static core_info_list_t *core_info_list_new(void)
if (!core_info)
goto error;
core_info_list->list = core_info;
core_info_list->list = core_info;
core_info_list->count = contents->size;
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;
unsigned count = 0;
bool tmp_bool = false;
unsigned count = 0;
config_file_t *conf = config_file_new(info_path);
config_get_string(conf, "display_name",
&core_info[i].display_name);
@ -403,20 +406,22 @@ static bool core_info_list_update_missing_firmware_internal(
const char *systemdir)
{
size_t i;
char path[PATH_MAX_LENGTH] = {0};
char path[PATH_MAX_LENGTH];
core_info_t *info = NULL;
if (!core_info_list || !core)
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)
return false;
runloop_ctl(RUNLOOP_CTL_UNSET_MISSING_BIOS, NULL);
for (i = 0; i < info->firmware_count; i++)
{
if (!info->firmware[i].path)
if (string_is_empty(info->firmware[i].path))
continue;
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)
{
size_t i;
char path[PATH_MAX_LENGTH] = {0};
char path[PATH_MAX_LENGTH];
core_info_t *info = NULL;
if (!core_info_list || !core)
return;
path[0] = '\0';
*firmware = NULL;
*num_firmware = 0;
@ -511,7 +517,10 @@ void core_info_deinit_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)
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)
{
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();
if (!settings)
return;
contents = dir_list_new_special(
struct string_list *contents = dir_list_new_special(
settings->directory.libretro,
DIR_LIST_CORES, NULL);
if (!contents)
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++)
{
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))
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)
{
config_get_string(conf, "corename",
&core_info[i].core_name);
core_info[i].config_data = (void*)conf;
}
conf = config_file_new(info_path);
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)
dir_list_free(contents);
contents = NULL;
core_info_list_free(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)
{
size_t i;
const char *delim;
const char *archive_path = NULL;
delim = path_get_archive_delim(path);
const char *delim = path_get_archive_delim(path);
if (delim)
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];
if (string_list_find_elem(info->supported_extensions_list, "zip") ||
string_list_find_elem(info->supported_extensions_list, "7z"))
return false;
if ( !string_list_find_elem(info->supported_extensions_list, "zip")
&& !string_list_find_elem(info->supported_extensions_list, "7z"))
continue;
return false;
}
}
for (i = 0; i < core_info_curr_list->count; 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;
}
@ -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)
{
size_t i;
char *database;
const char *delim;
char *database = NULL;
const char *delim = NULL;
const char *archive_path = NULL;
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];
if (string_list_find_elem(info->databases_list, database))
{
if (string_list_find_elem(info->supported_extensions_list, "zip") ||
string_list_find_elem(info->supported_extensions_list, "7z"))
{
free(database);
return false;
}
}
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"))
continue;
free(database);
return false;
}
}
for (i = 0; i < core_info_curr_list->count; 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->databases_list, database))
{
free(database);
return true;
}
}
if (!string_list_find_elem(info->supported_extensions_list, path_get_extension(path)))
continue;
if (!string_list_find_elem(info->databases_list, database))
continue;
free(database);
return true;
}
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++)
{
const core_info_t *info = &core_info_list->list[i];
if (string_is_equal(path_basename(info->path), path_basename(path))
&& info->display_name)
{
strlcpy(s, info->display_name, len);
return true;
}
if (!string_is_equal(path_basename(info->path), path_basename(path)))
continue;
if (!info->display_name)
continue;
strlcpy(s, info->display_name, len);
return true;
}
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)
{
char *core_name = NULL;
bool ret = true;
char *display_name = NULL;
config_file_t *conf = NULL;
if (!path_file_exists(path))
return false;
conf = config_file_new(path);
config_file_t *conf = config_file_new(path);
if (!conf)
return false;
config_get_string(conf, "corename",
&core_name);
config_get_string(conf, "display_name",
&display_name);
if (!core_name || !display_name)
{
ret = false;
goto error;
}
config_file_free(conf);
config_get_string(conf, "display_name", &display_name);
snprintf(s, len,"%s",display_name);
free(core_name);
free(display_name);
return true;
if (display_name)
snprintf(s, len, "%s", display_name);
error:
config_file_free(conf);
if (core_name)
free(core_name);
if (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;
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
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));
menu_entries_append_enum(list,
home_dir_buf, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
menu_entries_append_enum(list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
home_dir_buf,
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, "/",
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;

View File

@ -472,14 +472,26 @@ static int frontend_gx_parse_drive_list(void *data)
file_list_t *list = (file_list_t*)data;
#ifdef HW_RVL
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,
"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
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,
"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
return 0;

View File

@ -61,6 +61,7 @@
#include "platform_linux.h"
#ifdef HAVE_MENU
#include "../../menu/menu_driver.h"
#include "../../menu/menu_display.h"
#include "../../menu/menu_entries.h"
#endif
@ -1857,24 +1858,29 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
app_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,
internal_storage_app_path,
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MSG_EXTERNAL_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,
internal_storage_path,
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,
"/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
menu_entries_append_enum(list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 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);
#endif
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;
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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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,
"/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
return 0;

View File

@ -468,18 +468,36 @@ static int frontend_psp_parse_drive_list(void *data)
#ifdef VITA
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,
"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,
"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
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,
"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,
"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

View File

@ -138,8 +138,10 @@ static int frontend_wiiu_parse_drive_list(void *data)
if (!list)
return -1;
menu_entries_append_enum(list,
WIIU_SD_PATH, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
menu_entries_append_enum(list, WIIU_SD_PATH,
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;
}

View File

@ -236,7 +236,10 @@ static int frontend_win32_parse_drive_list(void *data)
drive[0] = 'A' + i;
if (drives & (1 << i))
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

View File

@ -1373,18 +1373,36 @@ static int frontend_xdk_parse_drive_list(void *data)
#if defined(_XBOX1)
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,
"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,
"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,
"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,
"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)
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

View File

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

View File

@ -146,8 +146,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER,
"Datenbankmanager")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Von der Playlist löschen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Lade Content (Core erkennen)") /* FIXME */
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Lesezeichen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content-Verz.>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -280,8 +280,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Lade Archiv")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Lade Content") /* FIXME */
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Lade Content (Verlauf)") /* FIXME/UPDATE */
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")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Select File And Detect Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent")
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:";
case MSG_FAILED_TO_APPLY_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:
return "Error al cargar el archivo de película";
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";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Gestor de bases de datos";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Seleccionar archivo y detectar núcleo";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleccionar archivo y detectar núcleo"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "(Carpeta de contenido)";
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";
case MENU_ENUM_LABEL_VALUE_LINEAR:
return "Lineal";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleccionar archivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Cargar archivos recientes";
case MENU_ENUM_LABEL_VALUE_LOAD_STATE:

View File

@ -480,8 +480,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Via les fichiers (détecter le coeur)")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Via les fichiers") /* TODO/FIXME - update */
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Dossier de contenu>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -812,8 +812,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linéaire")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Charger l'archive")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Via les fichiers")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Récemment ouvert")
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";
case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST:
return "Collezione";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Seleziona il file ed intercetta il core";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Seleziona il file ed intercetta il core"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST:
return "Scarica su directories";
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.";
case MENU_ENUM_LABEL_VALUE_CORE_LIST:
return "Carica Core";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Seleziona contenuto";
case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT:
return "Chiudi";
case MENU_ENUM_LABEL_VALUE_MANAGEMENT:

View File

@ -498,8 +498,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
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,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -834,8 +834,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
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_LIST,

View File

@ -307,8 +307,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST,
"deferred_wifi_settings_list")
MSG_HASH(MENU_ENUM_LABEL_DELETE_ENTRY,
"delete_entry")
MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST,
"detect_core_list")
MSG_HASH(MENU_ENUM_LABEL_FAVORITES,
"favorites")
MSG_HASH(MENU_ENUM_LABEL_DIRECTORY_SETTINGS,
"directory_settings")
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")
MSG_HASH(MENU_ENUM_LABEL_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,
"file_browser_directory")
MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_IMAGE,
@ -517,8 +519,6 @@ MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE,
"load_archive")
MSG_HASH(MENU_ENUM_LABEL_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,
"load_recent")
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_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,
"no_disk")
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS,
@ -1153,3 +1155,5 @@ MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_SNOW,
"shader_pipeline_snow")
MSG_HASH(MENU_ENUM_LABEL_INPUT_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")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Verwijderen")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Selecteer Bestand En Detecteer Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Favorieten")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Laad Archief Met Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Selecteer Bestand")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Recentelijk gebruikt")
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";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
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ń";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Katalog treści>";
@ -312,8 +312,6 @@ const char *msg_hash_to_str_pl(enum msg_hash_enums msg)
return "Liniowe";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Wczytaj archiwum";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Wybierz plik";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Wczytaj z ostatnio używanych";
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;
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:
snprintf(s, len,
"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";
case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER:
return "Gerenciador de Databases";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Selecionar Arquivo e Detectar Core";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Selecionar Arquivo e Detectar Core"; /* TODO/FIXME - update */
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Diretório de Conteúdo>";
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";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Carregar Arquivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Selecionar Arquivo";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Selecionar do Histórico";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST:

View File

@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION,
"Database Selection")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Select File And Detect Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent")
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")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY,
"Remove")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST,
"Select File And Detect Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES,
"Favorites")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT,
"<Content dir>")
MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
@ -826,8 +826,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR,
"Linear")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE,
"Load Archive With Core")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT,
"Select File")
MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY,
"Load Recent")
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";
case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY:
return "Remove";
case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST:
return "Select File And Detect Core";
case MENU_ENUM_LABEL_VALUE_FAVORITES:
return "Favorites";
case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT:
return "<Content dir>";
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";
case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE:
return "Tải Archive With Core";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT:
return "Select File";
case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY:
return "Tải Recent";
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));
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,
sizeof(info->exts));
}
else
strlcpy(info->exts, system->valid_extensions, sizeof(info->exts));
break;
case PUSH_ARCHIVE_OPEN:
if (system_menu->valid_extensions)
@ -567,8 +568,14 @@ static int general_push(menu_displaylist_info_t *info,
}
break;
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));
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;
}
@ -1111,7 +1118,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list);
break;
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);
break;
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);
break;
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);
break;
default:

View File

@ -1620,6 +1620,18 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
{
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:
BIND_ACTION_GET_VALUE(cbs,
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_LOAD_CONTENT_HISTORY:
case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_LOAD_CONTENT:
case MENU_ENUM_LABEL_FAVORITES:
case MENU_ENUM_LABEL_CORE_OPTIONS:
case MENU_ENUM_LABEL_CORE_CHEAT_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);
break;
case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_file_core);
break;

View File

@ -71,6 +71,7 @@ typedef struct
#endif
/* FIXME - Global variables, refactor */
static char filebrowser_label[PATH_MAX_LENGTH];
static char detect_content_path[PATH_MAX_LENGTH];
unsigned rpl_entry_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;
break;
case ACTION_OK_DL_AUDIO_DSP_PLUGIN:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.directory_ptr = idx;
info_path = settings->directory.audio_filter;
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;
break;
case ACTION_OK_DL_SHADER_PASS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
info_path = settings->directory.video_shader;
@ -326,7 +327,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_FILE_BROWSER_SELECT_DIR:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_SELECT_DIR;
if (path)
strlcpy(menu->deferred_path, path,
sizeof(menu->deferred_path));
@ -344,7 +345,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_SHADER_PRESET:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
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;
break;
case ACTION_OK_DL_CONTENT_LIST:
menu_displaylist_reset_filebrowser();
info.type = FILE_TYPE_DIRECTORY;
info.directory_ptr = idx;
info_path = new_path;
@ -360,6 +360,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_SCAN_DIR_LIST:
filebrowser_types = FILEBROWSER_SCAN_DIR;
info.type = FILE_TYPE_DIRECTORY;
info.directory_ptr = idx;
info_path = new_path;
@ -367,7 +368,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_FILE_BROWSER_SCAN_DIR;
break;
case ACTION_OK_DL_REMAP_FILE:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
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:
{
global_t *global = global_get_ptr();
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
info_path = global->record.config_dir;
@ -386,7 +387,7 @@ int generic_action_ok_displaylist_push(const char *path,
}
break;
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
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;
break;
case ACTION_OK_DL_PLAYLIST_COLLECTION:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
info_path = path;
@ -402,7 +403,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_CHEAT_FILE:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
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;
break;
case ACTION_OK_DL_CORE_LIST:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info.type = type;
info.directory_ptr = idx;
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;
break;
case ACTION_OK_DL_CONTENT_COLLECTION_LIST:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_SELECT_COLLECTION;
info.type = type;
info.directory_ptr = idx;
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;
break;
case ACTION_OK_DL_RDB_ENTRY:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join_delim(tmp,
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL),
path, '|', sizeof(tmp));
@ -500,7 +501,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_DATABASE_MANAGER_LIST:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join(tmp,
settings->path.content_database,
path, sizeof(tmp));
@ -513,7 +514,7 @@ int generic_action_ok_displaylist_push(const char *path,
dl_type = DISPLAYLIST_GENERIC;
break;
case ACTION_OK_DL_CURSOR_MANAGER_LIST:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
fill_pathname_join(tmp, settings->directory.cursor,
path, sizeof(tmp));
@ -1424,6 +1425,18 @@ static int generic_action_ok(const char *path,
command_event(CMD_EVENT_RESUME, NULL);
break;
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:
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,
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,
ACTION_OK_SET_DIRECTORY, MSG_UNKNOWN);
}
@ -1875,6 +1889,47 @@ static int action_ok_core_deferred_set(const char *path,
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,
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);
}
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,
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,
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);
}
@ -3099,13 +3160,23 @@ static int action_ok_scan_directory_list(const char *path,
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,
const char *label, unsigned type, size_t idx, size_t entry_idx)
{
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,
msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST),
msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES),
type, idx,
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,
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,
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,
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,
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:
BIND_ACTION_OK(cbs, action_ok_core_deferred_set);
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:
BIND_ACTION_OK(cbs, action_ok_start_core);
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);
break;
case MENU_ENUM_LABEL_SCAN_FILE:
case MENU_ENUM_LABEL_LOAD_CONTENT:
case MENU_ENUM_LABEL_DETECT_CORE_LIST:
case MENU_ENUM_LABEL_FAVORITES:
BIND_ACTION_OK(cbs, action_ok_push_content_list);
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:
BIND_ACTION_OK(cbs, action_ok_push_downloads_dir);
break;
case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK:
BIND_ACTION_OK(cbs, action_ok_file_load_detect_core);
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_CURSOR_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;
case MENU_LABEL_SCAN_FILE:
case MENU_LABEL_SCAN_DIRECTORY:
case MENU_LABEL_LOAD_CONTENT:
case MENU_LABEL_DETECT_CORE_LIST:
case MENU_LABEL_FAVORITES:
BIND_ACTION_OK(cbs, action_ok_push_content_list);
break;
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:
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);
break;
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;
#endif
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:
#ifdef HAVE_COMPRESSION
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;
#endif
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:
#ifdef HAVE_COMPRESSION
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 */
BIND_ACTION_OK(cbs, action_ok_file_load_imageviewer);
break;
case FILE_TYPE_DIRECT_LOAD:
BIND_ACTION_OK(cbs, action_ok_file_load);
break;
case MENU_SETTINGS:
case MENU_SETTING_GROUP:
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,
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;
}

View File

@ -664,6 +664,7 @@ static void mui_render_label_value(mui_handle_t *mui,
case FILE_TYPE_COMPRESSED:
case FILE_TYPE_MORE:
case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
case FILE_TYPE_RDB:
case FILE_TYPE_CURSOR:
case FILE_TYPE_PLAIN:
@ -1673,21 +1674,16 @@ static int mui_list_push(void *data, void *userdata,
{
case DISPLAYLIST_LOAD_CONTENT_LIST:
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, 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_LOAD_CONTENT),
MENU_ENUM_LABEL_LOAD_CONTENT,
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);
core_info_get_list(&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,
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),

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_GAME:
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:
break;
}
@ -1908,6 +1913,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case FILE_TYPE_MOVIE:
return xmb->textures.list[XMB_TEXTURE_MOVIE];
case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
return xmb->textures.list[XMB_TEXTURE_CORE];
case FILE_TYPE_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_MORE:
case FILE_TYPE_CORE:
case FILE_TYPE_DIRECT_LOAD:
case FILE_TYPE_RDB:
case FILE_TYPE_CURSOR:
case FILE_TYPE_PLAIN:

View File

@ -76,6 +76,11 @@
#include "../wifi/wifi_driver.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
static void print_buf_lines(file_list_t *list, char *buf,
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);
last = (char*)strrchr(core_path, '_');
if (!string_is_empty(last))
{
if (!string_is_equal(last, "_libretro"))
*last = '\0';
}
strlcat(core_path,
file_path_str(FILE_PATH_CORE_INFO_EXTENSION),
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)))
menu_entries_set_alt_at_offset(list, j, display_name);
}
@ -3197,15 +3206,7 @@ static int menu_displaylist_parse_options_remappings(
return 0;
}
enum filebrowser_enums
{
FILEBROWSER_NONE = 0,
FILEBROWSER_SELECT_DIR,
FILEBROWSER_SCAN_DIR,
FILEBROWSER_SELECT_COLLECTION
};
static unsigned filebrowser_types = 0;
unsigned filebrowser_types = 0;
static int menu_displaylist_parse_playlists(
menu_displaylist_info_t *info, bool horizontal)
@ -3215,7 +3216,7 @@ static int menu_displaylist_parse_playlists(
unsigned items_found = 0;
settings_t *settings = config_get_ptr();
if (!*info->path)
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "",
@ -3304,12 +3305,8 @@ static int menu_displaylist_parse_playlists(
string_list_free(str_list);
if (items_found == 0)
{
if (horizontal)
return 0;
if (items_found == 0 && !horizontal)
goto no_playlists;
}
return 0;
@ -3333,7 +3330,7 @@ static int menu_displaylist_parse_cores(
unsigned items_found = 0;
settings_t *settings = config_get_ptr();
if (!*info->path)
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "",
@ -3423,7 +3420,7 @@ static int menu_displaylist_parse_cores(
/* Need to preserve slash first time. */
path = str_list->elems[i].data;
if (*info->path)
if (!string_is_empty(info->path))
path = path_basename(path);
#ifndef HAVE_DYNAMIC
@ -3532,7 +3529,7 @@ static int menu_displaylist_parse_generic(
unsigned items_found = 0;
settings_t *settings = config_get_ptr();
if (!*info->path)
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->list, "/", "",
@ -3558,7 +3555,7 @@ static int menu_displaylist_parse_generic(
true, settings->show_hidden_files, true, false);
#ifdef HAVE_LIBRETRODB
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR))
if (filebrowser_types == FILEBROWSER_SCAN_DIR)
menu_entries_prepend(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_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);
#endif
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR))
if (filebrowser_types == FILEBROWSER_SELECT_DIR)
menu_entries_prepend(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_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 (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR))
if (filebrowser_types == FILEBROWSER_SELECT_DIR)
continue;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR))
if (filebrowser_types == FILEBROWSER_SCAN_DIR)
continue;
}
/* Need to preserve slash first time. */
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);
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION))
if (filebrowser_types == FILEBROWSER_SELECT_COLLECTION)
{
if (is_dir)
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. */
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR))
if (filebrowser_types == FILEBROWSER_SELECT_DIR)
goto end;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR))
if (filebrowser_types == FILEBROWSER_SCAN_DIR)
goto end;
if (!extensions_honored)
@ -3874,6 +3871,22 @@ static bool menu_displaylist_push_list_process(menu_displaylist_info_t *info)
}
#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)
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)))
{
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type = 42;
strlcpy(info->exts,
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)))
{
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type = 42;
strlcpy(info->exts,
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)))
{
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type = 42;
strlcpy(info->exts,
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();
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type = 42;
strlcpy(info->exts,
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;
}
void menu_displaylist_reset_filebrowser(void)
{
BIT32_CLEAR_ALL(filebrowser_types);
}
static void menu_displaylist_parse_playlist_history(
menu_handle_t *menu,
menu_displaylist_info_t *info,
@ -4247,24 +4254,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
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)
{
case DISPLAYLIST_NONE:
@ -5535,20 +5524,21 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_refresh = true;
break;
case DISPLAYLIST_LOAD_CONTENT_LIST:
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT),
msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT),
MENU_ENUM_LABEL_LOAD_CONTENT,
MENU_SETTING_ACTION, 0, 0);
if (frontend_driver_parse_drive_list(info->list) != 0)
menu_entries_append_enum(info->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);
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))
{
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,
msg_hash_to_str(
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)
{
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;
if (!path_is_empty(RARCH_PATH_CORE))
{
menu_entries_append_enum(info->list,
path_get(RARCH_PATH_CORE),
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 =
string_list_new_special(STRING_LIST_SUPPORTED_CORES_PATHS,
(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++)
{
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:
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;
strlcpy(new_path_entry, cores_paths->elems[i].data, sizeof(new_path_entry));
snprintf(new_entry, sizeof(new_entry), "Current core (%s)", cores_names->elems[i].data);
if (type == DISPLAYLIST_CORES_COLLECTION_SUPPORTED)
{
new_lbl_entry[0] = '\0';
new_type = MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE;
}
else
{
strlcpy(new_lbl_entry, cores_paths->elems[i].data, sizeof(new_lbl_entry));
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,
cores_names->elems[i].data);
menu_entries_set_alt_at_offset(info->list, j,
cores_names->elems[i].data);
j++;
}
}
string_list_free(cores_paths);
}
string_list_free(cores_names);
}
break;
case DISPLAYLIST_CORE_INFO:
@ -6009,7 +6051,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
info->need_push = true;
break;
case DISPLAYLIST_DATABASES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_RDB;
strlcpy(info->exts,
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;
break;
case DISPLAYLIST_DATABASE_CURSORS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CURSOR;
strlcpy(info->exts, "dbc", sizeof(info->exts));
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';
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_PLAIN;
if (frontend_driver_get_core_extension(ext_name, sizeof(ext_name)))
strlcpy(info->exts, ext_name, sizeof(info->exts));
}
break;
case DISPLAYLIST_CONFIG_FILES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CONFIG;
strlcpy(info->exts, "cfg", sizeof(info->exts));
break;
@ -6077,7 +6119,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
(void)attr;
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_SHADER_PRESET;
#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};
struct string_list *str_list = string_list_new();
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_SHADER;
(void)attr;
@ -6117,12 +6159,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
}
break;
case DISPLAYLIST_VIDEO_FILTERS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_VIDEOFILTER;
strlcpy(info->exts, "filt", sizeof(info->exts));
break;
case DISPLAYLIST_IMAGES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_IMAGE;
{
union string_list_elem_attr attr = {0};
@ -6146,37 +6188,37 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
}
break;
case DISPLAYLIST_AUDIO_FILTERS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_AUDIOFILTER;
strlcpy(info->exts, "dsp", sizeof(info->exts));
break;
case DISPLAYLIST_CHEAT_FILES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_CHEAT;
strlcpy(info->exts, "cht", sizeof(info->exts));
break;
case DISPLAYLIST_CONTENT_HISTORY:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_PLAIN;
strlcpy(info->exts, "lpl", sizeof(info->exts));
break;
case DISPLAYLIST_FONTS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_FONT;
strlcpy(info->exts, "ttf", sizeof(info->exts));
break;
case DISPLAYLIST_OVERLAYS:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_OVERLAY;
strlcpy(info->exts, "cfg", sizeof(info->exts));
break;
case DISPLAYLIST_RECORD_CONFIG_FILES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_RECORD_CONFIG;
strlcpy(info->exts, "cfg", sizeof(info->exts));
break;
case DISPLAYLIST_REMAP_FILES:
menu_displaylist_reset_filebrowser();
filebrowser_types = FILEBROWSER_NONE;
info->type_default = FILE_TYPE_REMAP;
strlcpy(info->exts, "rmp", sizeof(info->exts));
break;

View File

@ -159,6 +159,14 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_PENDING_CLEAR
};
enum filebrowser_enums
{
FILEBROWSER_NONE = 0,
FILEBROWSER_SELECT_DIR,
FILEBROWSER_SCAN_DIR,
FILEBROWSER_SELECT_COLLECTION
};
typedef struct menu_displaylist_info
{
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);
extern unsigned filebrowser_types;
RETRO_END_DECLS
#endif

View File

@ -125,6 +125,8 @@ enum msg_file_type
FILE_TYPE_ISO,
FILE_TYPE_LUTRO,
FILE_TYPE_DIRECT_LOAD,
FILE_TYPE_LAST
};
@ -672,6 +674,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_FILE_BROWSER_FONT,
MENU_ENUM_LABEL_FILE_BROWSER_RDB,
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_IMAGE,
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_LIST,
MENU_LABEL(FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_LABEL(DOWNLOADED_FILE_DETECT_CORE_LIST),
MENU_ENUM_LABEL_VALUE_SEARCH,
@ -1166,10 +1170,10 @@ enum msg_hash_enums
MENU_LABEL(DUMMY_ON_CORE_SHUTDOWN),
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),
MENU_LABEL(FAVORITES),
MENU_LABEL(START_CORE),
MENU_LABEL(LOAD_CONTENT),
MENU_LABEL(CORE_UPDATER_LIST),
MENU_LABEL(CORE_UPDATER_AUTO_EXTRACT_ARCHIVE),
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_MAX_USERS 0xfae91cc4U
#define MENU_LABEL_FAVORITES 0x67325138U
#define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U
#define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU
#define MENU_LABEL_CORE_LIST 0xa22bb14dU
@ -1749,7 +1754,6 @@ enum msg_hash_enums
#define MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd44d395cU
/* Main menu */
#define MENU_LABEL_LOAD_CONTENT 0x828943c3U
#define MENU_LABEL_LOAD_CONTENT_LIST 0x5745de1fU
#define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U
#define MENU_LABEL_ADD_CONTENT_LIST 0x046f4668U