From af4951511ecf9a24bb3194cf97f86fd916850736 Mon Sep 17 00:00:00 2001 From: Fabrice de Gans Date: Sun, 16 Oct 2022 16:42:28 -0700 Subject: [PATCH] [config] Add Observers for Options This adds a generic Observer interface to config::Option. To demonstrate its intended usage, the Display Configuration dialog and the options it controls have been updated to be entirely handled via the config::Option class. Implementations for wxValidator are used to validate the flow between the UI and the underlying Option. In turn, modifying the Option value triggers all of its observers that should then do what they need to do. Rather than explicitly calling all of the needed methods after modifying a global option value, the UI elements that need to be notified when an Option value is modified will be notified via their observers. Runtime assert checks are put in place to prevent infinite recursion if an observer attempts to modify an Option while handling the observer callback. Once all uses of Options have been updated, we should get into a state where the following will be true: * cmdevents.cpp will no longer rely on the application state. * All dialogs will have been moved to specific implementations, reducing the size of guiinit.cpp * update_opts() will no longer need to be called and will be removed. This will then make it easier to update accelerator handling to be done with config::UserInput. Bug: #745 --- po/wxvbam/wxvbam.pot | 492 +++++++------- src/wx/CMakeLists.txt | 6 + src/wx/cmdevents.cpp | 55 +- src/wx/config/internal/option-internal.cpp | 147 ++--- src/wx/config/internal/option-internal.h | 12 +- src/wx/config/option.cpp | 284 ++++++-- src/wx/config/option.h | 167 ++++- src/wx/dialogs/display-config.cpp | 445 +++++++++++++ src/wx/dialogs/display-config.h | 54 ++ src/wx/guiinit.cpp | 249 +------ src/wx/opts.cpp | 109 +-- src/wx/opts.h | 5 - src/wx/panel.cpp | 730 ++++++++++++--------- src/wx/widgets/option-validator.cpp | 33 + src/wx/widgets/option-validator.h | 90 +++ src/wx/widgets/render-plugin.cpp | 43 ++ src/wx/widgets/render-plugin.h | 18 + src/wx/widgets/wx/wxmisc.h | 13 - src/wx/widgets/wxmisc.cpp | 55 -- src/wx/wxvbam.cpp | 7 +- src/wx/wxvbam.h | 76 +-- 21 files changed, 1903 insertions(+), 1187 deletions(-) create mode 100644 src/wx/dialogs/display-config.cpp create mode 100644 src/wx/dialogs/display-config.h create mode 100644 src/wx/widgets/option-validator.cpp create mode 100644 src/wx/widgets/option-validator.h create mode 100644 src/wx/widgets/render-plugin.cpp create mode 100644 src/wx/widgets/render-plugin.h diff --git a/po/wxvbam/wxvbam.pot b/po/wxvbam/wxvbam.pot index 99b5848d..61a87293 100644 --- a/po/wxvbam/wxvbam.pot +++ b/po/wxvbam/wxvbam.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-21 19:17+0000\n" +"POT-Creation-Date: 2022-10-21 17:50-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -115,241 +115,217 @@ msgstr "" msgid "Bad configuration option or multiple ROM files given:\n" msgstr "" -#: guiinit.cpp:84 +#: guiinit.cpp:85 msgid "Start!" msgstr "" -#: guiinit.cpp:103 xrc/NetLink.xrc:99 +#: guiinit.cpp:104 xrc/NetLink.xrc:99 msgid "Connect" msgstr "" -#: guiinit.cpp:120 +#: guiinit.cpp:121 msgid "You must enter a valid host name" msgstr "" -#: guiinit.cpp:121 +#: guiinit.cpp:122 msgid "Host name invalid" msgstr "" -#: guiinit.cpp:139 +#: guiinit.cpp:140 msgid "Waiting for clients..." msgstr "" -#: guiinit.cpp:140 +#: guiinit.cpp:141 #, c-format msgid "Server IP address is: %s\n" msgstr "" -#: guiinit.cpp:142 +#: guiinit.cpp:143 msgid "Waiting for connection..." msgstr "" -#: guiinit.cpp:143 +#: guiinit.cpp:144 #, c-format msgid "Connecting to %s\n" msgstr "" -#: guiinit.cpp:176 +#: guiinit.cpp:177 msgid "" "Error occurred.\n" "Please try again." msgstr "" -#: guiinit.cpp:243 guiinit.cpp:296 +#: guiinit.cpp:244 guiinit.cpp:297 msgid "Select cheat file" msgstr "" -#: guiinit.cpp:244 +#: guiinit.cpp:245 msgid "VBA cheat lists (*.clt)|*.clt|CHT cheat lists (*.cht)|*.cht" msgstr "" -#: guiinit.cpp:263 panel.cpp:453 +#: guiinit.cpp:264 panel.cpp:510 msgid "Loaded cheats" msgstr "" -#: guiinit.cpp:297 +#: guiinit.cpp:298 msgid "VBA cheat lists (*.clt)|*.clt" msgstr "" -#: guiinit.cpp:315 +#: guiinit.cpp:316 msgid "Saved cheats" msgstr "" -#: guiinit.cpp:346 guiinit.cpp:365 +#: guiinit.cpp:347 guiinit.cpp:366 msgid "Restore old values?" msgstr "" -#: guiinit.cpp:347 guiinit.cpp:366 +#: guiinit.cpp:348 guiinit.cpp:367 msgid "Removing cheats" msgstr "" -#: guiinit.cpp:757 xrc/JoyPanel.xrc:364 +#: guiinit.cpp:758 xrc/JoyPanel.xrc:364 msgid "GameShark" msgstr "" -#: guiinit.cpp:758 cmdevents.cpp:679 +#: guiinit.cpp:759 cmdevents.cpp:679 msgid "GameGenie" msgstr "" -#: guiinit.cpp:760 +#: guiinit.cpp:761 msgid "Generic Code" msgstr "" -#: guiinit.cpp:761 +#: guiinit.cpp:762 msgid "GameShark Advance" msgstr "" -#: guiinit.cpp:762 +#: guiinit.cpp:763 msgid "CodeBreaker Advance" msgstr "" -#: guiinit.cpp:763 +#: guiinit.cpp:764 msgid "Flashcart CHT" msgstr "" -#: guiinit.cpp:831 guiinit.cpp:1086 +#: guiinit.cpp:832 guiinit.cpp:1087 msgid "Number cannot be empty" msgstr "" -#: guiinit.cpp:869 +#: guiinit.cpp:870 #, c-format msgid "Search produced %d results. Please refine better" msgstr "" -#: guiinit.cpp:881 +#: guiinit.cpp:882 msgid "Search produced no results" msgstr "" -#: guiinit.cpp:1044 +#: guiinit.cpp:1045 msgid "8-bit " msgstr "" -#: guiinit.cpp:1048 +#: guiinit.cpp:1049 msgid "16-bit " msgstr "" -#: guiinit.cpp:1052 +#: guiinit.cpp:1053 msgid "32-bit " msgstr "" -#: guiinit.cpp:1058 +#: guiinit.cpp:1059 msgid "signed decimal" msgstr "" -#: guiinit.cpp:1062 +#: guiinit.cpp:1063 msgid "unsigned decimal" msgstr "" -#: guiinit.cpp:1066 +#: guiinit.cpp:1067 msgid "unsigned hexadecimal" msgstr "" -#: guiinit.cpp:1544 +#: guiinit.cpp:1545 #, c-format msgid "%d frames = %.2f ms" msgstr "" -#: guiinit.cpp:1556 +#: guiinit.cpp:1557 msgid "Default device" msgstr "" -#: guiinit.cpp:1726 +#: guiinit.cpp:1727 msgid "Desktop mode" msgstr "" -#: guiinit.cpp:1733 +#: guiinit.cpp:1734 #, c-format msgid "%d x %d - %dbpp @ %dHz" msgstr "" -#: guiinit.cpp:1846 cmdevents.cpp:749 xrc/DisplayConfig.xrc:85 -#: xrc/DisplayConfig.xrc:135 xrc/DisplayConfig.xrc:221 -#: xrc/GameBoyAdvanceConfig.xrc:32 xrc/GameBoyAdvanceConfig.xrc:204 -#: xrc/SoundConfig.xrc:219 xrc/SoundConfig.xrc:309 -msgid "None" -msgstr "" - -#: guiinit.cpp:1887 -#, c-format -msgid "No usable rpi plugins found in %s" -msgstr "" - -#: guiinit.cpp:1907 xrc/DisplayConfig.xrc:107 -msgid "Plugin" -msgstr "" - -#: guiinit.cpp:1935 -msgid "Please select a plugin or a different filter" -msgstr "" - -#: guiinit.cpp:1936 -msgid "Plugin selection error" -msgstr "" - -#: guiinit.cpp:2149 +#: guiinit.cpp:1976 msgid "This will clear all user-defined accelerators. Are you sure?" msgstr "" -#: guiinit.cpp:2149 +#: guiinit.cpp:1976 msgid "Confirm" msgstr "" -#: guiinit.cpp:2740 +#: guiinit.cpp:2567 msgid "Main icon not found" msgstr "" -#: guiinit.cpp:2750 +#: guiinit.cpp:2577 msgid "Browse" msgstr "" -#: guiinit.cpp:2764 +#: guiinit.cpp:2591 msgid "Main display panel not found" msgstr "" -#: guiinit.cpp:2941 +#: guiinit.cpp:2768 #, c-format msgid "Duplicate menu accelerator: %s for %s and %s; keeping first" msgstr "" -#: guiinit.cpp:2955 +#: guiinit.cpp:2782 #, c-format msgid "Menu accelerator %s for %s overrides default for %s ; keeping menu" msgstr "" -#: guiinit.cpp:3096 +#: guiinit.cpp:2922 #, c-format msgid "Invalid menu item %s; removing" msgstr "" -#: guiinit.cpp:3304 +#: guiinit.cpp:3125 msgid "Code" msgstr "" -#: guiinit.cpp:3313 +#: guiinit.cpp:3134 msgid "Description" msgstr "" -#: guiinit.cpp:3387 xrc/CheatAdd.xrc:31 +#: guiinit.cpp:3208 xrc/CheatAdd.xrc:31 msgid "Address" msgstr "" -#: guiinit.cpp:3388 +#: guiinit.cpp:3209 msgid "Old Value" msgstr "" -#: guiinit.cpp:3389 +#: guiinit.cpp:3210 msgid "New Value" msgstr "" -#: guiinit.cpp:3925 +#: guiinit.cpp:3682 msgid "Menu commands" msgstr "" -#: guiinit.cpp:3948 +#: guiinit.cpp:3705 msgid "Other commands" msgstr "" -#: guiinit.cpp:4059 +#: guiinit.cpp:3816 msgid "JoyBus host invalid; disabling" msgstr "" @@ -593,6 +569,13 @@ msgstr "" msgid "ROM+HuC-1" msgstr "" +#: cmdevents.cpp:749 dialogs/display-config.cpp:338 xrc/DisplayConfig.xrc:85 +#: xrc/DisplayConfig.xrc:135 xrc/DisplayConfig.xrc:221 +#: xrc/GameBoyAdvanceConfig.xrc:32 xrc/GameBoyAdvanceConfig.xrc:204 +#: xrc/SoundConfig.xrc:219 xrc/SoundConfig.xrc:309 +msgid "None" +msgstr "" + #: cmdevents.cpp:851 cmdevents.cpp:873 msgid "Select Dot Code file" msgstr "" @@ -619,7 +602,7 @@ msgstr "" msgid "Confirm import" msgstr "" -#: cmdevents.cpp:910 panel.cpp:396 +#: cmdevents.cpp:910 panel.cpp:453 #, c-format msgid "Loaded battery %s" msgstr "" @@ -702,7 +685,7 @@ msgstr "" msgid "Wrote battery %s" msgstr "" -#: cmdevents.cpp:1103 panel.cpp:705 +#: cmdevents.cpp:1103 panel.cpp:762 #, c-format msgid "Error writing battery %s" msgstr "" @@ -798,32 +781,22 @@ msgstr "" msgid "Waiting for GDB..." msgstr "" -#: cmdevents.cpp:2773 -#, c-format -msgid "Using pixel filter: %s" -msgstr "" - -#: cmdevents.cpp:2788 -#, c-format -msgid "Using interframe blending: %s" -msgstr "" - -#: cmdevents.cpp:2827 panel.cpp:198 panel.cpp:312 +#: cmdevents.cpp:2802 panel.cpp:255 panel.cpp:369 msgid "Could not initialize the sound driver!" msgstr "" -#: cmdevents.cpp:2931 +#: cmdevents.cpp:2906 msgid "Nintendo GameBoy (+Color+Advance) emulator." msgstr "" -#: cmdevents.cpp:2932 +#: cmdevents.cpp:2907 msgid "" "Copyright (C) 1999-2003 Forgotten\n" "Copyright (C) 2004-2006 VBA development team\n" "Copyright (C) 2007-2020 VBA-M development team" msgstr "" -#: cmdevents.cpp:2933 +#: cmdevents.cpp:2908 msgid "" "This program is free software: you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" @@ -839,29 +812,29 @@ msgid "" "along with this program. If not, see http://www.gnu.org/licenses ." msgstr "" -#: cmdevents.cpp:3193 +#: cmdevents.cpp:3168 msgid "Cannot use GB BIOS when Colorizer Hack is enabled." msgstr "" -#: cmdevents.cpp:3253 +#: cmdevents.cpp:3233 msgid "LAN link is already active. Disable link mode to disconnect." msgstr "" -#: cmdevents.cpp:3259 +#: cmdevents.cpp:3239 msgid "Network is not supported in local mode." msgstr "" -#: opts.cpp:494 opts.cpp:515 opts.cpp:747 +#: opts.cpp:542 opts.cpp:563 opts.cpp:768 #, c-format msgid "Invalid key binding %s for %s" msgstr "" -#: opts.cpp:670 opts.cpp:679 opts.cpp:688 opts.cpp:697 config/option.cpp:334 +#: opts.cpp:691 opts.cpp:700 opts.cpp:709 opts.cpp:718 config/option.cpp:477 #, c-format msgid "Invalid value %s for option %s" msgstr "" -#: opts.cpp:769 +#: opts.cpp:790 #, c-format msgid "Unknown option %s with value %s" msgstr "" @@ -941,177 +914,177 @@ msgstr "" msgid "Error setting up server socket (%d)" msgstr "" -#: panel.cpp:112 +#: panel.cpp:169 #, c-format msgid "%s is not a valid ROM file" msgstr "" -#: panel.cpp:113 panel.cpp:174 panel.cpp:250 +#: panel.cpp:170 panel.cpp:231 panel.cpp:307 msgid "Problem loading file" msgstr "" -#: panel.cpp:173 +#: panel.cpp:230 #, c-format msgid "Unable to load Game Boy ROM %s" msgstr "" -#: panel.cpp:210 +#: panel.cpp:267 msgid "" "Cannot use GB BIOS file when Colorizer Hack is enabled, disabling GB BIOS " "file." msgstr "" -#: panel.cpp:226 panel.cpp:326 +#: panel.cpp:283 panel.cpp:383 #, c-format msgid "Could not load BIOS %s" msgstr "" -#: panel.cpp:249 +#: panel.cpp:306 #, c-format msgid "Unable to load Game Boy Advance ROM %s" msgstr "" -#: panel.cpp:485 +#: panel.cpp:542 msgid " player " msgstr "" -#: panel.cpp:653 +#: panel.cpp:710 #, c-format msgid "Loaded state %s" msgstr "" -#: panel.cpp:653 +#: panel.cpp:710 #, c-format msgid "Error loading state %s" msgstr "" -#: panel.cpp:677 +#: panel.cpp:734 #, c-format msgid "Saved state %s" msgstr "" -#: panel.cpp:677 +#: panel.cpp:734 #, c-format msgid "Error saving state %s" msgstr "" -#: panel.cpp:882 +#: panel.cpp:944 #, c-format msgid "Fullscreen mode %dx%d-%d@%d not supported; looking for another" msgstr "" -#: panel.cpp:920 +#: panel.cpp:982 #, c-format msgid "Fullscreen mode %dx%d-%d@%d not supported" msgstr "" -#: panel.cpp:925 +#: panel.cpp:987 #, c-format msgid "Valid mode: %dx%d-%d@%d" msgstr "" -#: panel.cpp:933 +#: panel.cpp:995 #, c-format msgid "Chose mode %dx%d-%d@%d" msgstr "" -#: panel.cpp:937 +#: panel.cpp:999 #, c-format msgid "Failed to change mode to %dx%d-%d@%d" msgstr "" -#: panel.cpp:1025 +#: panel.cpp:1087 msgid "Not a valid GBA cartridge" msgstr "" -#: panel.cpp:1189 +#: panel.cpp:1255 msgid "No memory for rewinding" msgstr "" -#: panel.cpp:1199 +#: panel.cpp:1265 msgid "Error writing rewind state" msgstr "" -#: panel.cpp:2186 +#: panel.cpp:2285 msgid "Enabling EGL VSync." msgstr "" -#: panel.cpp:2188 +#: panel.cpp:2287 msgid "Disabling EGL VSync." msgstr "" -#: panel.cpp:2195 +#: panel.cpp:2294 msgid "Enabling GLX VSync." msgstr "" -#: panel.cpp:2197 +#: panel.cpp:2296 msgid "Disabling GLX VSync." msgstr "" -#: panel.cpp:2215 +#: panel.cpp:2314 msgid "Failed to set glXSwapIntervalEXT" msgstr "" -#: panel.cpp:2224 +#: panel.cpp:2323 msgid "Failed to set glXSwapIntervalSGI" msgstr "" -#: panel.cpp:2233 +#: panel.cpp:2332 msgid "Failed to set glXSwapIntervalMESA" msgstr "" -#: panel.cpp:2240 +#: panel.cpp:2339 msgid "No support for wglGetExtensionsStringEXT" msgstr "" -#: panel.cpp:2243 +#: panel.cpp:2342 msgid "No support for WGL_EXT_swap_control" msgstr "" -#: panel.cpp:2252 +#: panel.cpp:2351 msgid "Failed to set wglSwapIntervalEXT" msgstr "" -#: panel.cpp:2258 +#: panel.cpp:2357 msgid "No VSYNC available on this platform" msgstr "" -#: panel.cpp:2354 +#: panel.cpp:2453 msgid "memory allocation error" msgstr "" -#: panel.cpp:2357 +#: panel.cpp:2456 msgid "error initializing codec" msgstr "" -#: panel.cpp:2360 +#: panel.cpp:2459 msgid "error writing to output file" msgstr "" -#: panel.cpp:2363 +#: panel.cpp:2462 msgid "can't guess output format from file name" msgstr "" -#: panel.cpp:2368 +#: panel.cpp:2467 msgid "programming error; aborting!" msgstr "" -#: panel.cpp:2380 panel.cpp:2409 +#: panel.cpp:2479 panel.cpp:2508 #, c-format msgid "Unable to begin recording to %s (%s)" msgstr "" -#: panel.cpp:2437 +#: panel.cpp:2536 #, c-format msgid "Error in audio/video recording (%s); aborting" msgstr "" -#: panel.cpp:2443 +#: panel.cpp:2542 #, c-format msgid "Error in audio recording (%s); aborting" msgstr "" -#: panel.cpp:2453 +#: panel.cpp:2552 #, c-format msgid "Error in video recording (%s); aborting" msgstr "" @@ -1128,170 +1101,170 @@ msgstr "" msgid "B:" msgstr "" -#: config/internal/option-internal.cpp:367 +#: config/internal/option-internal.cpp:320 msgid "Use bilinear filter with 3d renderer" msgstr "" -#: config/internal/option-internal.cpp:368 +#: config/internal/option-internal.cpp:321 msgid "Full-screen filter to apply" msgstr "" -#: config/internal/option-internal.cpp:370 +#: config/internal/option-internal.cpp:323 msgid "Filter plugin library" msgstr "" -#: config/internal/option-internal.cpp:372 +#: config/internal/option-internal.cpp:325 msgid "Interframe blending function" msgstr "" -#: config/internal/option-internal.cpp:374 +#: config/internal/option-internal.cpp:327 msgid "Keep window on top" msgstr "" -#: config/internal/option-internal.cpp:377 +#: config/internal/option-internal.cpp:330 msgid "Maximum number of threads to run filters in" msgstr "" -#: config/internal/option-internal.cpp:380 +#: config/internal/option-internal.cpp:333 msgid "Render method; if unsupported, simple method will be used" msgstr "" -#: config/internal/option-internal.cpp:382 +#: config/internal/option-internal.cpp:335 msgid "Default scale factor" msgstr "" -#: config/internal/option-internal.cpp:385 +#: config/internal/option-internal.cpp:338 msgid "Retain aspect ratio when resizing" msgstr "" -#: config/internal/option-internal.cpp:388 +#: config/internal/option-internal.cpp:341 msgid "BIOS file to use for GB, if enabled" msgstr "" -#: config/internal/option-internal.cpp:391 +#: config/internal/option-internal.cpp:344 msgid "GB color enhancement, if enabled" msgstr "" -#: config/internal/option-internal.cpp:393 +#: config/internal/option-internal.cpp:346 msgid "Enable DX Colorization Hacks" msgstr "" -#: config/internal/option-internal.cpp:394 -#: config/internal/option-internal.cpp:426 +#: config/internal/option-internal.cpp:347 +#: config/internal/option-internal.cpp:379 msgid "Apply LCD filter, if enabled" msgstr "" -#: config/internal/option-internal.cpp:396 +#: config/internal/option-internal.cpp:349 msgid "BIOS file to use for GBC, if enabled" msgstr "" -#: config/internal/option-internal.cpp:399 +#: config/internal/option-internal.cpp:352 msgid "" "The default palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: config/internal/option-internal.cpp:403 +#: config/internal/option-internal.cpp:356 msgid "" "The first user palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: config/internal/option-internal.cpp:407 +#: config/internal/option-internal.cpp:360 msgid "" "The second user palette, as 8 comma-separated 4-digit hex integers (rgb555)." msgstr "" -#: config/internal/option-internal.cpp:411 +#: config/internal/option-internal.cpp:364 msgid "Automatically gather a full page before printing" msgstr "" -#: config/internal/option-internal.cpp:415 +#: config/internal/option-internal.cpp:368 msgid "Automatically save printouts as screen captures with -print suffix" msgstr "" -#: config/internal/option-internal.cpp:417 -#: config/internal/option-internal.cpp:447 +#: config/internal/option-internal.cpp:370 +#: config/internal/option-internal.cpp:400 msgid "Directory to look for ROM files" msgstr "" -#: config/internal/option-internal.cpp:419 +#: config/internal/option-internal.cpp:372 msgid "Directory to look for GBC ROM files" msgstr "" -#: config/internal/option-internal.cpp:423 +#: config/internal/option-internal.cpp:376 msgid "BIOS file to use, if enabled" msgstr "" -#: config/internal/option-internal.cpp:428 +#: config/internal/option-internal.cpp:381 msgid "Enable link at boot" msgstr "" -#: config/internal/option-internal.cpp:431 +#: config/internal/option-internal.cpp:384 msgid "Enable faster network protocol by default" msgstr "" -#: config/internal/option-internal.cpp:433 +#: config/internal/option-internal.cpp:386 msgid "Default network link client host" msgstr "" -#: config/internal/option-internal.cpp:435 +#: config/internal/option-internal.cpp:388 msgid "Default network link server IP to bind" msgstr "" -#: config/internal/option-internal.cpp:438 +#: config/internal/option-internal.cpp:391 msgid "Default network link port (server and client)" msgstr "" -#: config/internal/option-internal.cpp:440 +#: config/internal/option-internal.cpp:393 msgid "Default network protocol" msgstr "" -#: config/internal/option-internal.cpp:442 +#: config/internal/option-internal.cpp:395 msgid "Link timeout (ms)" msgstr "" -#: config/internal/option-internal.cpp:444 +#: config/internal/option-internal.cpp:397 msgid "Link cable type" msgstr "" -#: config/internal/option-internal.cpp:452 +#: config/internal/option-internal.cpp:405 msgid "Automatically load last saved state" msgstr "" -#: config/internal/option-internal.cpp:454 +#: config/internal/option-internal.cpp:407 msgid "" "Directory to store game save files (relative paths are relative to ROM; " "blank is config dir)" msgstr "" -#: config/internal/option-internal.cpp:457 +#: config/internal/option-internal.cpp:410 msgid "Freeze recent load list" msgstr "" -#: config/internal/option-internal.cpp:460 +#: config/internal/option-internal.cpp:413 msgid "" "Directory to store A/V and game recordings (relative paths are relative to " "ROM)" msgstr "" -#: config/internal/option-internal.cpp:464 +#: config/internal/option-internal.cpp:417 msgid "Number of seconds between rewind snapshots (0 to disable)" msgstr "" -#: config/internal/option-internal.cpp:467 +#: config/internal/option-internal.cpp:420 msgid "Directory to store screenshots (relative paths are relative to ROM)" msgstr "" -#: config/internal/option-internal.cpp:471 +#: config/internal/option-internal.cpp:424 msgid "" "Directory to store saved state files (relative paths are relative to " "BatteryDir)" msgstr "" -#: config/internal/option-internal.cpp:474 +#: config/internal/option-internal.cpp:427 msgid "Enable status bar" msgstr "" -#: config/internal/option-internal.cpp:479 +#: config/internal/option-internal.cpp:432 msgid "" "The parameter Joypad//