From 5783030b5cfb37ada48a01b04703fab1bf3be40d Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 28 Jan 2018 14:57:49 -0500 Subject: [PATCH] add per-parent-dir shader preset saving --- intl/msg_hash_us.h | 4 ++++ menu/cbs/menu_cbs_ok.c | 24 ++++++++++++++++++++++-- menu/cbs/menu_cbs_sublabel.c | 4 ++++ menu/menu_displaylist.c | 5 +++++ msg_hash.h | 1 + 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 9c694e7f55..ab1c726c5f 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1765,6 +1765,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS, "Save Shader Preset As") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_CORE, "Save Core Preset") +MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save Parent Preset") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GAME, "Save Game Preset") MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT, @@ -3147,6 +3149,8 @@ MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS, "Save the current shader settings as a new shader preset.") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE, "Save the current shader settings as the default settings for this application/core.") +MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, + "Save the current shader settings as the default settings for all files in the content's parent directory.") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME, "Save the current shader settings as the default settings for the content.") MSG_HASH(MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index bea9aecdd2..b18f32606c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1868,7 +1868,8 @@ default_action_dialog_start(action_ok_rename_entry, enum { ACTION_OK_SHADER_PRESET_SAVE_CORE = 0, - ACTION_OK_SHADER_PRESET_SAVE_GAME + ACTION_OK_SHADER_PRESET_SAVE_GAME, + ACTION_OK_SHADER_PRESET_SAVE_PARENT }; static int generic_action_ok_shader_preset_save(const char *path, @@ -1915,6 +1916,17 @@ static int generic_action_ok_shader_preset_save(const char *path, fill_pathname_join(file, directory, game_name, sizeof(file)); } break; + case ACTION_OK_SHADER_PRESET_SAVE_PARENT: + { + strlcpy(tmp, path_get(RARCH_PATH_BASENAME), sizeof(tmp)); + path_basedir(tmp); + char* last_slash = find_last_slash(tmp); + last_slash[0] = '\0'; + last_slash = find_last_slash(tmp); + strlcpy(tmp, last_slash + 1, sizeof(tmp)); + fill_pathname_join(file, directory, tmp, sizeof(file)); + } + break; } if(menu_shader_manager_save_preset(file, false, true)) @@ -1943,7 +1955,12 @@ static int action_ok_shader_preset_save_game(const char *path, idx, entry_idx, ACTION_OK_SHADER_PRESET_SAVE_GAME); } - +static int action_ok_shader_preset_save_parent(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_shader_preset_save(path, label, type, + idx, entry_idx, ACTION_OK_SHADER_PRESET_SAVE_PARENT); +} static int generic_action_ok_remap_file_operation(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, @@ -4189,6 +4206,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_CORE: BIND_ACTION_OK(cbs, action_ok_shader_preset_save_core); break; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_PARENT: + BIND_ACTION_OK(cbs, action_ok_shader_preset_save_parent); + break; case MENU_ENUM_LABEL_CHEAT_FILE_SAVE_AS: BIND_ACTION_OK(cbs, action_ok_cheat_file_save_as); break; diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index e1f01dffe3..4210b08fe9 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -358,6 +358,7 @@ default_sublabel_macro(action_bind_sublabel_shader_num_passes, default_sublabel_macro(action_bind_sublabel_shader_preset, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET) default_sublabel_macro(action_bind_sublabel_shader_preset_save_as, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_AS) default_sublabel_macro(action_bind_sublabel_shader_preset_save_core, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_CORE) +default_sublabel_macro(action_bind_sublabel_shader_preset_save_parent, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_PARENT) default_sublabel_macro(action_bind_sublabel_shader_preset_save_game, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_SAVE_GAME) default_sublabel_macro(action_bind_sublabel_shader_parameters, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PARAMETERS) default_sublabel_macro(action_bind_sublabel_shader_preset_parameters, MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_PARAMETERS) @@ -505,6 +506,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_CORE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_preset_save_core); break; + case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_PARENT: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_preset_save_parent); + break; case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_GAME: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_shader_preset_save_game); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index d0ed8c9c3b..9be506d276 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1387,6 +1387,11 @@ static int menu_displaylist_parse_shader_options(menu_displaylist_info_t *info) msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_AS), MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_CORE, MENU_SETTING_ACTION, 0, 0); + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_PARENT), + msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_AS), + MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_PARENT, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_GAME), msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_AS), diff --git a/msg_hash.h b/msg_hash.h index 8dbee05bba..94db6d4d59 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1514,6 +1514,7 @@ enum msg_hash_enums MENU_LABEL(VIDEO_SHADER_PRESET_SAVE_AS), MENU_LABEL(VIDEO_SHADER_PRESET_SAVE_CORE), MENU_LABEL(VIDEO_SHADER_PRESET_SAVE_GAME), + MENU_LABEL(VIDEO_SHADER_PRESET_SAVE_PARENT), MENU_LABEL(USER_LANGUAGE), MENU_LABEL(NETPLAY_NICKNAME), MENU_LABEL(VIDEO_VI_WIDTH),