1 /* RetroArch - A frontend for libretro. 2 * Copyright (C) 2011-2017 - Daniel De Matteis 3 * 4 * RetroArch is free software: you can redistribute it and/or modify it under the terms 5 * of the GNU General Public License as published by the Free Software Found- 6 * ation, either version 3 of the License, or (at your option) any later version. 7 * 8 * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 9 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 10 * PURPOSE. See the GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License along with RetroArch. 13 * If not, see <http://www.gnu.org/licenses/>. 14 */ 15 16 #ifndef MENU_CBS_H__ 17 #define MENU_CBS_H__ 18 19 #include <stdlib.h> 20 21 #include <boolean.h> 22 #include <retro_common_api.h> 23 24 #include <queues/task_queue.h> 25 26 #ifdef HAVE_CONFIG_H 27 #include "../config.h" 28 #endif 29 30 #include "menu_entries.h" 31 32 #include "../msg_hash.h" 33 34 RETRO_BEGIN_DECLS 35 36 typedef struct key_desc 37 { 38 /* libretro key id */ 39 unsigned key; 40 41 /* description */ 42 char desc[32]; 43 } key_desc_t; 44 45 enum 46 { 47 ACTION_OK_DL_DEFAULT = 0, 48 ACTION_OK_DL_DROPDOWN_BOX_LIST, 49 ACTION_OK_DL_DROPDOWN_BOX_LIST_SPECIAL, 50 ACTION_OK_DL_DROPDOWN_BOX_LIST_RESOLUTION, 51 ACTION_OK_DL_DROPDOWN_BOX_LIST_SHADER_PARAMETER, 52 ACTION_OK_DL_DROPDOWN_BOX_LIST_SHADER_PRESET_PARAMETER, 53 ACTION_OK_DL_DROPDOWN_BOX_LIST_VIDEO_SHADER_NUM_PASSES, 54 ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE, 55 ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE, 56 ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE, 57 ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE, 58 ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_SORT_MODE, 59 ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME, 60 ACTION_OK_DL_DROPDOWN_BOX_LIST_MANUAL_CONTENT_SCAN_CORE_NAME, 61 ACTION_OK_DL_DROPDOWN_BOX_LIST_DISK_INDEX, 62 ACTION_OK_DL_DROPDOWN_BOX_LIST_INPUT_DEVICE_TYPE, 63 ACTION_OK_DL_DROPDOWN_BOX_LIST_INPUT_DEVICE_INDEX, 64 ACTION_OK_DL_DROPDOWN_BOX_LIST_INPUT_DESCRIPTION, 65 ACTION_OK_DL_DROPDOWN_BOX_LIST_INPUT_DESCRIPTION_KBD, 66 ACTION_OK_DL_OPEN_ARCHIVE, 67 ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, 68 ACTION_OK_DL_MUSIC, 69 ACTION_OK_DL_NETPLAY, 70 ACTION_OK_DL_SCAN_DIR_LIST, 71 ACTION_OK_DL_MANUAL_SCAN_DIR_LIST, 72 ACTION_OK_DL_HELP, 73 ACTION_OK_DL_RPL_ENTRY, 74 ACTION_OK_DL_RDB_ENTRY, 75 ACTION_OK_DL_RDB_ENTRY_SUBMENU, 76 ACTION_OK_DL_CDROM_INFO_LIST, 77 ACTION_OK_DL_AUDIO_DSP_PLUGIN, 78 ACTION_OK_DL_VIDEO_FILTER, 79 ACTION_OK_DL_OVERLAY_PRESET, 80 #if defined(HAVE_VIDEO_LAYOUT) 81 ACTION_OK_DL_VIDEO_LAYOUT, 82 #endif 83 ACTION_OK_DL_VIDEO_FONT, 84 ACTION_OK_DL_SHADER_PASS, 85 ACTION_OK_DL_FAVORITES_LIST, 86 ACTION_OK_DL_IMAGES_LIST, 87 ACTION_OK_DL_VIDEO_LIST, 88 ACTION_OK_DL_EXPLORE_LIST, 89 ACTION_OK_DL_MUSIC_LIST, 90 ACTION_OK_DL_SHADER_PARAMETERS, 91 ACTION_OK_DL_SHADER_PRESET, 92 ACTION_OK_DL_SHADER_PRESET_SAVE, 93 ACTION_OK_DL_SHADER_PRESET_REMOVE, 94 ACTION_OK_DL_GENERIC, 95 ACTION_OK_DL_PUSH_DEFAULT, 96 ACTION_OK_DL_FILE_BROWSER_SELECT_FILE, 97 ACTION_OK_DL_FILE_BROWSER_SELECT_DIR, 98 ACTION_OK_DL_INPUT_SETTINGS_LIST, 99 ACTION_OK_DL_INPUT_TURBO_FIRE_SETTINGS_LIST, 100 ACTION_OK_DL_INPUT_HAPTIC_FEEDBACK_SETTINGS_LIST, 101 ACTION_OK_DL_REMAPPINGS_PORT_LIST, 102 ACTION_OK_DL_INPUT_MENU_SETTINGS_LIST, 103 ACTION_OK_DL_DRIVER_SETTINGS_LIST, 104 ACTION_OK_DL_VIDEO_SETTINGS_LIST, 105 ACTION_OK_DL_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST, 106 ACTION_OK_DL_VIDEO_WINDOWED_MODE_SETTINGS_LIST, 107 ACTION_OK_DL_VIDEO_SYNCHRONIZATION_SETTINGS_LIST, 108 ACTION_OK_DL_VIDEO_OUTPUT_SETTINGS_LIST, 109 ACTION_OK_DL_VIDEO_SCALING_SETTINGS_LIST, 110 ACTION_OK_DL_CRT_SWITCHRES_SETTINGS_LIST, 111 ACTION_OK_DL_AUDIO_SETTINGS_LIST, 112 ACTION_OK_DL_AUDIO_OUTPUT_SETTINGS_LIST, 113 ACTION_OK_DL_AUDIO_RESAMPLER_SETTINGS_LIST, 114 ACTION_OK_DL_AUDIO_SYNCHRONIZATION_SETTINGS_LIST, 115 ACTION_OK_DL_AUDIO_MIXER_SETTINGS_LIST, 116 ACTION_OK_DL_LATENCY_SETTINGS_LIST, 117 ACTION_OK_DL_CONFIGURATION_SETTINGS_LIST, 118 ACTION_OK_DL_SAVING_SETTINGS_LIST, 119 ACTION_OK_DL_LOGGING_SETTINGS_LIST, 120 ACTION_OK_DL_FRAME_THROTTLE_SETTINGS_LIST, 121 ACTION_OK_DL_FRAME_TIME_COUNTER_SETTINGS_LIST, 122 ACTION_OK_DL_REWIND_SETTINGS_LIST, 123 ACTION_OK_DL_CHEAT_DETAILS_SETTINGS_LIST, 124 ACTION_OK_DL_CHEAT_SEARCH_SETTINGS_LIST, 125 ACTION_OK_DL_CORE_SETTINGS_LIST, 126 ACTION_OK_DL_CORE_INFORMATION_LIST, 127 ACTION_OK_DL_INPUT_HOTKEY_BINDS_LIST, 128 ACTION_OK_DL_RECORDING_SETTINGS_LIST, 129 ACTION_OK_DL_PLAYLIST_SETTINGS_LIST, 130 ACTION_OK_DL_PLAYLIST_MANAGER_LIST, 131 ACTION_OK_DL_PLAYLIST_MANAGER_SETTINGS, 132 ACTION_OK_DL_ACCOUNTS_LIST, 133 ACTION_OK_DL_ACCOUNTS_CHEEVOS_LIST, 134 ACTION_OK_DL_ACCOUNTS_YOUTUBE_LIST, 135 ACTION_OK_DL_ACCOUNTS_TWITCH_LIST, 136 ACTION_OK_DL_ACCOUNTS_FACEBOOK_LIST, 137 ACTION_OK_DL_USER_BINDS_LIST, 138 ACTION_OK_DL_CONTENT_LIST, 139 ACTION_OK_DL_REMAP_FILE, 140 ACTION_OK_DL_RECORD_CONFIGFILE, 141 ACTION_OK_DL_STREAM_CONFIGFILE, 142 ACTION_OK_DL_DISK_IMAGE_APPEND_LIST, 143 ACTION_OK_DL_SUBSYSTEM_ADD_LIST, 144 ACTION_OK_DL_SUBSYSTEM_LOAD, 145 ACTION_OK_DL_PLAYLIST_COLLECTION, 146 ACTION_OK_DL_CONTENT_COLLECTION_LIST, 147 ACTION_OK_DL_CHEAT_FILE, 148 ACTION_OK_DL_CHEAT_FILE_APPEND, 149 ACTION_OK_DL_CORE_LIST, 150 ACTION_OK_DL_SIDELOAD_CORE_LIST, 151 ACTION_OK_DL_LAKKA_LIST, 152 ACTION_OK_DL_CONFIGURATIONS_LIST, 153 ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, 154 ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, 155 ACTION_OK_DL_PARENT_DIRECTORY_PUSH, 156 ACTION_OK_DL_DIRECTORY_PUSH, 157 ACTION_OK_DL_DATABASE_MANAGER_LIST, 158 ACTION_OK_DL_CURSOR_MANAGER_LIST, 159 ACTION_OK_DL_CORE_UPDATER_LIST, 160 ACTION_OK_DL_CORE_MANAGER_LIST, 161 ACTION_OK_DL_THUMBNAILS_UPDATER_LIST, 162 ACTION_OK_DL_PL_THUMBNAILS_UPDATER_LIST, 163 ACTION_OK_DL_BROWSE_URL_LIST, 164 ACTION_OK_DL_CORE_CONTENT_LIST, 165 ACTION_OK_DL_CORE_CONTENT_DIRS_LIST, 166 ACTION_OK_DL_CORE_CONTENT_DIRS_SUBDIR_LIST, 167 ACTION_OK_DL_DEFERRED_LOAD_DISC_LIST, 168 ACTION_OK_DL_DEFERRED_DUMP_DISC_LIST, 169 ACTION_OK_DL_DEFERRED_CORE_LIST, 170 ACTION_OK_DL_DEFERRED_CORE_LIST_SET, 171 ACTION_OK_DL_MIXER_STREAM_SETTINGS_LIST, 172 ACTION_OK_DL_ONSCREEN_DISPLAY_SETTINGS_LIST, 173 ACTION_OK_DL_ONSCREEN_OVERLAY_SETTINGS_LIST, 174 #ifdef HAVE_VIDEO_LAYOUT 175 ACTION_OK_DL_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST, 176 #endif 177 ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST, 178 ACTION_OK_DL_ONSCREEN_NOTIFICATIONS_VIEWS_SETTINGS_LIST, 179 ACTION_OK_DL_MENU_VIEWS_SETTINGS_LIST, 180 ACTION_OK_DL_SETTINGS_VIEWS_SETTINGS_LIST, 181 ACTION_OK_DL_QUICK_MENU_VIEWS_SETTINGS_LIST, 182 ACTION_OK_DL_QUICK_MENU_OVERRIDE_OPTIONS_LIST, 183 ACTION_OK_DL_MENU_SETTINGS_LIST, 184 ACTION_OK_DL_AI_SERVICE_SETTINGS_LIST, 185 ACTION_OK_DL_ACCESSIBILITY_SETTINGS_LIST, 186 ACTION_OK_DL_USER_INTERFACE_SETTINGS_LIST, 187 ACTION_OK_DL_POWER_MANAGEMENT_SETTINGS_LIST, 188 ACTION_OK_DL_CPU_PERFPOWER_SETTINGS_LIST, 189 ACTION_OK_DL_CPU_POLICY_SETTINGS_LIST, 190 ACTION_OK_DL_MENU_SOUNDS_LIST, 191 ACTION_OK_DL_MENU_FILE_BROWSER_SETTINGS_LIST, 192 ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST, 193 ACTION_OK_DL_ACHIEVEMENTS_HARDCORE_PAUSE_LIST, 194 ACTION_OK_DL_UPDATER_SETTINGS_LIST, 195 ACTION_OK_DL_BLUETOOTH_SETTINGS_LIST, 196 ACTION_OK_DL_WIFI_SETTINGS_LIST, 197 ACTION_OK_DL_WIFI_NETWORKS_LIST, 198 ACTION_OK_DL_NETWORK_SETTINGS_LIST, 199 ACTION_OK_DL_SUBSYSTEM_SETTINGS_LIST, 200 ACTION_OK_DL_NETWORK_HOSTING_SETTINGS_LIST, 201 ACTION_OK_DL_NETPLAY_LAN_SCAN_SETTINGS_LIST, 202 ACTION_OK_DL_LAKKA_SERVICES_LIST, 203 ACTION_OK_DL_USER_SETTINGS_LIST, 204 ACTION_OK_DL_DIRECTORY_SETTINGS_LIST, 205 ACTION_OK_DL_PRIVACY_SETTINGS_LIST, 206 ACTION_OK_DL_MIDI_SETTINGS_LIST, 207 ACTION_OK_DL_LOAD_DISC_LIST, 208 ACTION_OK_DL_DUMP_DISC_LIST, 209 ACTION_OK_DL_BROWSE_URL_START, 210 ACTION_OK_DL_CONTENT_SETTINGS, 211 ACTION_OK_DL_CDROM_INFO_DETAIL_LIST, 212 ACTION_OK_DL_RGUI_MENU_THEME_PRESET, 213 ACTION_OK_DL_MANUAL_CONTENT_SCAN_LIST, 214 ACTION_OK_DL_MANUAL_CONTENT_SCAN_DAT_FILE, 215 ACTION_OK_DL_CORE_RESTORE_BACKUP_LIST, 216 ACTION_OK_DL_CORE_DELETE_BACKUP_LIST, 217 ACTION_OK_DL_CORE_OPTION_OVERRIDE_LIST 218 }; 219 220 /* Function callbacks */ 221 int action_cb_push_dropdown_item_resolution(const char *path, 222 const char *label, unsigned type, size_t idx, size_t entry_idx); 223 224 int action_cancel_pop_default(const char *path, 225 const char *label, unsigned type, size_t idx); 226 227 int shader_action_parameter_right(unsigned type, const char *label, bool wraparound); 228 int shader_action_preset_parameter_right(unsigned type, const char *label, bool wraparound); 229 230 int action_cancel_pop_with_new_pos(const char *path, 231 const char *label, unsigned type, size_t idx, size_t new_idx); 232 233 int generic_action_ok_displaylist_push(const char *path, const char *new_path, 234 const char *label, unsigned type, size_t idx, size_t entry_idx, 235 unsigned action_type); 236 237 int generic_action_cheat_toggle(size_t idx, unsigned type, const char *label, 238 bool wraparound); 239 240 int action_ok_push_generic_list(const char *path, 241 const char *label, unsigned type, size_t idx, size_t entry_idx); 242 243 int action_ok_path_use_directory(const char *path, 244 const char *label, unsigned type, size_t idx, size_t entry_idx); 245 246 int action_ok_directory_push(const char *path, 247 const char *label, unsigned type, size_t idx, size_t entry_idx); 248 249 int core_setting_right(unsigned type, const char *label, 250 bool wraparound); 251 252 int action_right_cheat(unsigned type, const char *label, 253 bool wraparound); 254 255 void input_keyboard_mapping_bits(unsigned mode, unsigned key); 256 257 unsigned libretro_device_get_size(unsigned *devices, size_t devices_size, unsigned port); 258 259 /* End of function callbacks */ 260 261 int menu_cbs_init_bind_left(menu_file_list_cbs_t *cbs, 262 const char *path, const char *label, unsigned type, size_t idx, 263 const char *menu_label); 264 265 int menu_cbs_init_bind_right(menu_file_list_cbs_t *cbs, 266 const char *path, const char *label, unsigned type, size_t idx, 267 const char *menu_label); 268 269 int menu_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs, 270 const char *path, const char *label, unsigned type, size_t idx); 271 272 int menu_cbs_init_bind_label(menu_file_list_cbs_t *cbs, 273 const char *path, const char *label, unsigned type, size_t idx); 274 275 int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, 276 const char *path, const char *label, unsigned type, size_t idx); 277 278 int menu_cbs_init_bind_info(menu_file_list_cbs_t *cbs, 279 const char *path, const char *label, unsigned type, size_t idx); 280 281 int menu_cbs_init_bind_start(menu_file_list_cbs_t *cbs, 282 const char *path, const char *label, unsigned type, size_t idx); 283 284 int menu_cbs_init_bind_cancel(menu_file_list_cbs_t *cbs, 285 const char *path, const char *label, unsigned type, size_t idx); 286 287 int menu_cbs_init_bind_ok(menu_file_list_cbs_t *cbs, 288 const char *path, const char *label, unsigned type, size_t idx, 289 const char *menu_label); 290 291 int menu_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs, 292 const char *path, const char *label, unsigned type, size_t idx); 293 294 int menu_cbs_init_bind_select(menu_file_list_cbs_t *cbs, 295 const char *path, const char *label, unsigned type, size_t idx); 296 297 int menu_cbs_init_bind_scan(menu_file_list_cbs_t *cbs, 298 const char *path, const char *label, unsigned type, size_t idx); 299 300 int menu_cbs_init_bind_title(menu_file_list_cbs_t *cbs, 301 const char *path, const char *label, unsigned type, size_t idx); 302 303 #ifdef HAVE_LIBRETRODB 304 int action_scan_directory(const char *path, 305 const char *label, unsigned type, size_t idx); 306 307 int action_scan_file(const char *path, 308 const char *label, unsigned type, size_t idx); 309 #endif 310 311 int bind_right_generic(unsigned type, const char *label, 312 bool wraparound); 313 314 int action_ok_core_option_dropdown_list(const char *path, 315 const char *label, unsigned type, size_t idx, size_t entry_idx); 316 317 int menu_cbs_exit(void); 318 319 void cb_generic_download(retro_task_t *task, 320 void *task_data, 321 void *user_data, const char *err); 322 323 RETRO_END_DECLS 324 325 #endif 326