From e8fd5881b86bdfc3ff17a212f112788121d28df7 Mon Sep 17 00:00:00 2001 From: The Dax Date: Fri, 13 Sep 2013 13:06:13 -0400 Subject: [PATCH] Move global UI status out of WndMainWindow.cpp, simplify the menu translation code(it doesn't need to dictate checked or enabled items, the UI already does it later on anyway), and clear out a few old menu items that have been removed. --- UI/EmuScreen.cpp | 2 + UI/GameSettingsScreen.cpp | 1 - UI/MainScreen.cpp | 2 + Windows/WndMainWindow.cpp | 122 +++++++++++++------------------------- Windows/WndMainWindow.h | 5 +- Windows/resource.h | 7 +-- 6 files changed, 48 insertions(+), 91 deletions(-) diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 59a6791520..af3af1574e 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -166,9 +166,11 @@ void EmuScreen::sendMessage(const char *message, const char *value) { bootGame(value); } else if (!strcmp(message, "control mapping")) { + globalUIState = UISTATE_MENU; screenManager()->push(new ControlMappingScreen()); } else if (!strcmp(message, "settings")) { + globalUIState = UISTATE_MENU; screenManager()->push(new GameSettingsScreen(gamePath_)); } } diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 42342422ac..ea9ea13adf 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -44,7 +44,6 @@ namespace MainWindow { enum { WM_USER_LOG_STATUS_CHANGED = WM_USER + 101, - WM_USER_ATRAC_STATUS_CHANGED = WM_USER + 102, }; extern HWND hwndMain; } diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp index 8b6b37bb3c..833a0ba74e 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp @@ -559,9 +559,11 @@ void MainScreen::sendMessage(const char *message, const char *value) { screenManager()->RecreateAllViews(); } if (!strcmp(message, "control mapping")) { + globalUIState = UISTATE_MENU; screenManager()->push(new ControlMappingScreen()); } if (!strcmp(message, "settings")) { + globalUIState = UISTATE_MENU; screenManager()->push(new GameSettingsScreen("")); } } diff --git a/Windows/WndMainWindow.cpp b/Windows/WndMainWindow.cpp index e561a27480..c84845f2e8 100644 --- a/Windows/WndMainWindow.cpp +++ b/Windows/WndMainWindow.cpp @@ -433,16 +433,28 @@ namespace MainWindow langMenuCreated = true; } - void TranslateMenuItembyText(const int menuID, const char *menuText, const char *category="", const bool enabled = true, const bool checked = false, const std::wstring& accelerator = L"") { + void _TranslateMenuItem(const int menuID, const char *text, const char *category, const std::wstring& accelerator = L"") { I18NCategory *c = GetI18NCategory(category); - std::string key = c->T(menuText); + + std::string key = c->T(text); std::wstring translated = ConvertUTF8ToWString(key); translated.append(accelerator); - ModifyMenu(menu, menuID, MF_STRING - | (enabled? MF_ENABLED : MF_GRAYED) - | (checked? MF_CHECKED : MF_UNCHECKED), - menuID, translated.c_str()); + ModifyMenu(menu, menuID, MF_STRING, menuID, translated.c_str()); + } + + // Replaces TranslateMenuItemByText. Use this for menu items that change text dynamically + // like "Run/Pause". + void TranslateMenuItem(const int menuID, const char *category, const char *menuText, const std::wstring& accelerator = L"") { + if(menuText == nullptr || !strcmp(menuText, "")) + _TranslateMenuItem(menuID, GetMenuItemInitialText(menuID).c_str(), category, accelerator); + else + _TranslateMenuItem(menuID, menuText, category, accelerator); + } + + // Use this one for menu items that don't change. + void TranslateMenuItem(const int menuID, const char *category, const std::wstring& accelerator = L"") { + _TranslateMenuItem(menuID, GetMenuItemInitialText(menuID).c_str(), category, accelerator); } void TranslateMenuHeader(HMENU menu, const char *category, const char *key, const MenuID id, const std::wstring& accelerator = L"") { @@ -463,17 +475,6 @@ namespace MainWindow ModifyMenu(subMenu, subMenuID, MF_BYPOSITION | MF_STRING, 0, translated.c_str()); } - void TranslateMenuItem(const int menuID, const char *category, const bool enabled = true, const bool checked = false, const std::wstring& accelerator = L"") { - I18NCategory *c = GetI18NCategory(category); - std::string key = c->T(GetMenuItemInitialText(menuID).c_str()); - std::wstring translated = ConvertUTF8ToWString(key); - translated.append(accelerator); - ModifyMenu(menu, menuID, MF_STRING - | (enabled? MF_ENABLED : MF_GRAYED) - | (checked? MF_CHECKED : MF_UNCHECKED), - menuID, translated.c_str()); - } - void TranslateMenus() { const char *desktopUI = "DesktopUI"; @@ -482,24 +483,20 @@ namespace MainWindow TranslateMenuItem(ID_FILE_LOAD_DIR, desktopUI); TranslateMenuItem(ID_FILE_LOAD_MEMSTICK, desktopUI); TranslateMenuItem(ID_FILE_MEMSTICK, desktopUI); - TranslateMenuItem(ID_FILE_QUICKLOADSTATE, desktopUI, false, false, L"\tF4"); - TranslateMenuItem(ID_FILE_QUICKSAVESTATE, desktopUI, false, false, L"\tF2"); - TranslateMenuItem(ID_FILE_LOADSTATEFILE, desktopUI, false, false); - TranslateMenuItem(ID_FILE_SAVESTATEFILE, desktopUI, false, false); - TranslateMenuItem(ID_FILE_EXIT, desktopUI, true, false, L"\tAlt+F4"); + TranslateMenuItem(ID_FILE_QUICKLOADSTATE, desktopUI, L"\tF4"); + TranslateMenuItem(ID_FILE_QUICKSAVESTATE, desktopUI, L"\tF2"); + TranslateMenuItem(ID_FILE_LOADSTATEFILE, desktopUI); + TranslateMenuItem(ID_FILE_SAVESTATEFILE, desktopUI); + TranslateMenuItem(ID_FILE_EXIT, desktopUI, L"\tAlt+F4"); // Emulation menu - bool isPaused = Core_IsStepping() && globalUIState == UISTATE_INGAME; - TranslateMenuItembyText(ID_TOGGLE_PAUSE, isPaused ? "Run" : "Pause", "DesktopUI", false, false, L"\tF8"); - TranslateMenuItem(ID_EMULATION_STOP, desktopUI, false, false, L"\tCtrl+W"); - TranslateMenuItem(ID_EMULATION_RESET, desktopUI, false, false, L"\tCtrl+B"); + bool isPaused = Core_IsStepping() && (globalUIState == UISTATE_INGAME); + TranslateMenuItem(ID_TOGGLE_PAUSE, desktopUI, isPaused ? "Run" : "Pause", L"\tF8"); + TranslateMenuItem(ID_EMULATION_STOP, desktopUI, L"\tCtrl+W"); + TranslateMenuItem(ID_EMULATION_RESET, desktopUI, L"\tCtrl+B"); TranslateMenuItem(ID_DEBUG_RUNONLOAD, desktopUI); - TranslateMenuItem(ID_EMULATION_SOUND, desktopUI, true, true); - TranslateMenuItem(ID_EMULATION_ATRAC3_SOUND, desktopUI, true, false); - TranslateMenuItem(ID_EMULATION_CHEATS, desktopUI,true, true, L"\tCtrl+T"); - TranslateMenuItem(ID_EMULATION_RENDER_MODE_OGL, desktopUI, true, true); - TranslateMenuItem(ID_EMULATION_RENDER_MODE_SOFT, desktopUI); - TranslateMenuItem(ID_CPU_DYNAREC, desktopUI); + TranslateMenuItem(ID_EMULATION_SOUND, desktopUI); + TranslateMenuItem(ID_EMULATION_CHEATS, desktopUI, L"\tCtrl+T"); TranslateMenuItem(ID_CPU_MULTITHREADED, desktopUI); TranslateMenuItem(ID_IO_MULTITHREADED, desktopUI); @@ -509,22 +506,22 @@ namespace MainWindow TranslateMenuItem(ID_DEBUG_RESETSYMBOLTABLE, desktopUI); TranslateMenuItem(ID_DEBUG_DUMPNEXTFRAME, desktopUI); TranslateMenuItem(ID_DEBUG_SHOWDEBUGSTATISTICS, desktopUI); - TranslateMenuItem(ID_DEBUG_TAKESCREENSHOT, desktopUI, true, false, L"\tF12"); - TranslateMenuItem(ID_DEBUG_DISASSEMBLY, desktopUI, true, false, L"\tCtrl+D"); - TranslateMenuItem(ID_DEBUG_LOG, desktopUI, true, false, L"\tCtrl+L"); - TranslateMenuItem(ID_DEBUG_MEMORYVIEW, desktopUI, true, false, L"\tCtrl+M"); + TranslateMenuItem(ID_DEBUG_TAKESCREENSHOT, desktopUI, L"\tF12"); + TranslateMenuItem(ID_DEBUG_DISASSEMBLY, desktopUI, L"\tCtrl+D"); + TranslateMenuItem(ID_DEBUG_LOG, desktopUI, L"\tCtrl+L"); + TranslateMenuItem(ID_DEBUG_MEMORYVIEW, desktopUI, L"\tCtrl+M"); // Options menu - TranslateMenuItem(ID_OPTIONS_FULLSCREEN, desktopUI, true, false, L"\tAlt+Return, F11"); + TranslateMenuItem(ID_OPTIONS_FULLSCREEN, desktopUI, L"\tAlt+Return, F11"); TranslateMenuItem(ID_OPTIONS_TOPMOST, desktopUI); TranslateMenuItem(ID_OPTIONS_STRETCHDISPLAY, desktopUI); TranslateMenuItem(ID_OPTIONS_SCREENAUTO, desktopUI); // Skip rendering resolution 2x-5x.. // Skip window size 1x-4x.. - TranslateMenuItem(ID_OPTIONS_NONBUFFEREDRENDERING, desktopUI, true, false); - TranslateMenuItem(ID_OPTIONS_BUFFEREDRENDERING, desktopUI, true, true); - TranslateMenuItem(ID_OPTIONS_READFBOTOMEMORYCPU, desktopUI, true, false); - TranslateMenuItem(ID_OPTIONS_READFBOTOMEMORYGPU, desktopUI, true, false); + TranslateMenuItem(ID_OPTIONS_NONBUFFEREDRENDERING, desktopUI); + TranslateMenuItem(ID_OPTIONS_BUFFEREDRENDERING, desktopUI); + TranslateMenuItem(ID_OPTIONS_READFBOTOMEMORYCPU, desktopUI); + TranslateMenuItem(ID_OPTIONS_READFBOTOMEMORYGPU, desktopUI); TranslateMenuItem(ID_OPTIONS_FRAMESKIP_0, desktopUI); TranslateMenuItem(ID_OPTIONS_FRAMESKIP_AUTO, desktopUI); // Skip frameskipping 1-8.. @@ -541,7 +538,7 @@ namespace MainWindow TranslateMenuItem(ID_TEXTURESCALING_BICUBIC, desktopUI); TranslateMenuItem(ID_TEXTURESCALING_HYBRID_BICUBIC, desktopUI); TranslateMenuItem(ID_TEXTURESCALING_DEPOSTERIZE, desktopUI); - TranslateMenuItem(ID_OPTIONS_HARDWARETRANSFORM, desktopUI, true, true, L"\tF6"); + TranslateMenuItem(ID_OPTIONS_HARDWARETRANSFORM, desktopUI, L"\tF6"); TranslateMenuItem(ID_OPTIONS_VERTEXCACHE, desktopUI); TranslateMenuItem(ID_OPTIONS_MIPMAP, desktopUI); TranslateMenuItem(ID_OPTIONS_ANTIALIASING, desktopUI); @@ -1108,14 +1105,6 @@ namespace MainWindow NativeMessageReceived("reset", ""); break; - case ID_EMULATION_RENDER_MODE_OGL: - g_Config.bSoftwareRendering = false; - break; - - case ID_EMULATION_RENDER_MODE_SOFT: - g_Config.bSoftwareRendering = true; - break; - case ID_FILE_LOADSTATEFILE: if (W32Util::BrowseForFileName(true, hWnd, L"Load state",0,L"Save States (*.ppst)\0*.ppst\0All files\0*.*\0\0",L"ppst",fn)) { SetCursor(LoadCursor(0, IDC_WAIT)); @@ -1351,35 +1340,17 @@ namespace MainWindow case ID_OPTIONS_CONTROLS: NativeMessageReceived("control mapping", ""); - globalUIState = UISTATE_MENU; break; case ID_OPTIONS_MORE_SETTINGS: NativeMessageReceived("settings", ""); - globalUIState = UISTATE_MENU; break; case ID_EMULATION_SOUND: g_Config.bEnableSound = !g_Config.bEnableSound; if(!g_Config.bEnableSound) { - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, MF_GRAYED); if(!IsAudioInitialised()) Audio_Init(); - } else { - if(Atrac3plus_Decoder::IsInstalled()) - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, MF_ENABLED); - } - break; - - case ID_EMULATION_ATRAC3_SOUND: - g_Config.bEnableAtrac3plus = !g_Config.bEnableAtrac3plus; - - if(Atrac3plus_Decoder::IsInstalled()) { - if(g_Config.bEnableAtrac3plus) - Atrac3plus_Decoder::Init(); - else Atrac3plus_Decoder::Shutdown(); - } else { - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, MF_GRAYED); } break; @@ -1558,13 +1529,6 @@ namespace MainWindow } break; - case WM_USER_ATRAC_STATUS_CHANGED: - if(g_Config.bEnableAtrac3plus && Atrac3plus_Decoder::IsInstalled()) - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, MF_ENABLED); - else - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, MF_GRAYED); - break; - case WM_USER_UPDATE_UI: CreateLanguageMenu(); TranslateMenus(); @@ -1621,9 +1585,6 @@ namespace MainWindow CHECKITEM(ID_OPTIONS_TOPMOST, g_Config.bTopMost); CHECKITEM(ID_EMULATION_SOUND, g_Config.bEnableSound); CHECKITEM(ID_TEXTURESCALING_DEPOSTERIZE, g_Config.bTexDeposterize); - CHECKITEM(ID_EMULATION_ATRAC3_SOUND, g_Config.bEnableAtrac3plus); - CHECKITEM(ID_EMULATION_RENDER_MODE_OGL, g_Config.bSoftwareRendering == false); - CHECKITEM(ID_EMULATION_RENDER_MODE_SOFT, g_Config.bSoftwareRendering == true); CHECKITEM(ID_EMULATION_CHEATS, g_Config.bEnableCheats); static const int zoomitems[6] = { @@ -1780,7 +1741,7 @@ namespace MainWindow HMENU menu = GetMenu(GetHWND()); bool isPaused = Core_IsStepping() && globalUIState == UISTATE_INGAME; - TranslateMenuItembyText(ID_TOGGLE_PAUSE, isPaused ? "Run" : "Pause", "DesktopUI", false, false, L"\tF8"); + TranslateMenuItem(ID_TOGGLE_PAUSE, "DesktopUI", isPaused ? "Run" : "Pause", L"\tF8"); UINT ingameEnable = globalUIState == UISTATE_INGAME ? MF_ENABLED : MF_GRAYED; EnableMenuItem(menu, ID_TOGGLE_PAUSE, ingameEnable); @@ -1796,9 +1757,6 @@ namespace MainWindow EnableMenuItem(menu, ID_CPU_MULTITHREADED, menuEnable); EnableMenuItem(menu, ID_IO_MULTITHREADED, menuEnable); EnableMenuItem(menu, ID_DEBUG_LOG, !g_Config.bEnableLogging); - EnableMenuItem(menu, ID_EMULATION_RENDER_MODE_OGL, menuEnable); - EnableMenuItem(menu, ID_EMULATION_RENDER_MODE_SOFT, menuEnable); - EnableMenuItem(menu, ID_EMULATION_ATRAC3_SOUND, !Atrac3plus_Decoder::IsInstalled()); } // Message handler for about box. diff --git a/Windows/WndMainWindow.h b/Windows/WndMainWindow.h index 576990c435..53100b881c 100644 --- a/Windows/WndMainWindow.h +++ b/Windows/WndMainWindow.h @@ -10,9 +10,8 @@ namespace MainWindow enum { WM_USER_SAVESTATE_FINISH = WM_USER + 100, WM_USER_LOG_STATUS_CHANGED = WM_USER + 101, - WM_USER_ATRAC_STATUS_CHANGED = WM_USER + 102, - WM_USER_UPDATE_UI = WM_USER + 103, - WM_USER_UPDATE_SCREEN = WM_USER + 104, + WM_USER_UPDATE_UI = WM_USER + 102, + WM_USER_UPDATE_SCREEN = WM_USER + 103, }; enum { diff --git a/Windows/resource.h b/Windows/resource.h index 5059e9d7bc..58b74087c2 100644 --- a/Windows/resource.h +++ b/Windows/resource.h @@ -237,14 +237,11 @@ #define ID_OPTIONS_FRAMESKIP_7 40084 #define ID_OPTIONS_FRAMESKIP_8 40085 #define ID_OPTIONS_FRAMESKIP_AUTO 40087 -#define ID_OPTIONS_FRAMESKIPDUMMY 40088 -#define ID_OPTIONS_RESOLUTIONDUMMY 40089 +#define ID_OPTIONS_FRAMESKIPDUMMY 40088 +#define ID_OPTIONS_RESOLUTIONDUMMY 40089 #define ID_DISASM_ASSEMBLE 40090 #define ID_DISASM_ADDNEWBREAKPOINT 40091 #define ID_DISASM_EDITBREAKPOINT 40092 -#define ID_EMULATION_ATRAC3_SOUND 40093 -#define ID_EMULATION_RENDER_MODE_OGL 40094 -#define ID_EMULATION_RENDER_MODE_SOFT 40095 #define ID_EMULATION_CHEATS 40096 #define ID_HELP_CHINESE_FORUM 40097 #define ID_OPTIONS_MORE_SETTINGS 40098