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.

This commit is contained in:
The Dax 2013-09-13 13:06:13 -04:00
parent 2d084ec747
commit e8fd5881b8
6 changed files with 48 additions and 91 deletions

View File

@ -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_));
}
}

View File

@ -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;
}

View File

@ -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(""));
}
}

View File

@ -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.

View File

@ -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 {

View File

@ -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