summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/FrameTools.cpp
diff options
context:
space:
mode:
authorMat M <mathew1800@gmail.com>2016-11-05 08:19:28 -0400
committerGitHub <noreply@github.com>2016-11-05 08:19:28 -0400
commit0ad4e70fc50381ccd9875fe9d5c80be1f24342a5 (patch)
treec9dd030b8d0361ee2552d177e9475e68c611a606 /Source/Core/DolphinWX/FrameTools.cpp
parentd88295d5a11e9b320d053529565e679cb9c1725b (diff)
parent9543b9d20d3a4557ff6112e38e28cd2cdac16ac1 (diff)
Merge pull request #4422 from lioncash/codewindow-menu
CodeWindow: Migrate more menubar handling code to CFrame
Diffstat (limited to 'Source/Core/DolphinWX/FrameTools.cpp')
-rw-r--r--Source/Core/DolphinWX/FrameTools.cpp92
1 files changed, 87 insertions, 5 deletions
diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp
index b48dad0e5f..cb4297585f 100644
--- a/Source/Core/DolphinWX/FrameTools.cpp
+++ b/Source/Core/DolphinWX/FrameTools.cpp
@@ -176,6 +176,18 @@ void CFrame::BindMenuBarEvents()
Bind(wxEVT_MENU, &CFrame::GameListChanged, this, IDM_PURGE_GAME_LIST_CACHE);
Bind(wxEVT_MENU, &CFrame::OnChangeColumnsVisible, this, IDM_SHOW_SYSTEM, IDM_SHOW_STATE);
+ // Help menu
+ Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_WEBSITE);
+ Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_ONLINE_DOCS);
+ Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_GITHUB);
+ Bind(wxEVT_MENU, &CFrame::OnHelp, this, wxID_ABOUT);
+
+ if (UseDebugger)
+ BindDebuggerMenuBarEvents();
+}
+
+void CFrame::BindDebuggerMenuBarEvents()
+{
// Debug menu
Bind(wxEVT_MENU, &CFrame::OnPerspectiveMenu, this, IDM_SAVE_PERSPECTIVE);
Bind(wxEVT_MENU, &CFrame::OnPerspectiveMenu, this, IDM_EDIT_PERSPECTIVES);
@@ -189,11 +201,51 @@ void CFrame::BindMenuBarEvents()
Bind(wxEVT_MENU, &CFrame::OnPerspectiveMenu, this, IDM_TAB_SPLIT);
Bind(wxEVT_MENU, &CFrame::OnPerspectiveMenu, this, IDM_NO_DOCKING);
- // Help menu
- Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_WEBSITE);
- Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_ONLINE_DOCS);
- Bind(wxEVT_MENU, &CFrame::OnHelp, this, IDM_HELP_GITHUB);
- Bind(wxEVT_MENU, &CFrame::OnHelp, this, wxID_ABOUT);
+ BindDebuggerMenuBarUpdateEvents();
+}
+
+void CFrame::BindDebuggerMenuBarUpdateEvents()
+{
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCPUCanStep, this, IDM_STEP);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCPUCanStep, this, IDM_STEPOUT);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCPUCanStep, this, IDM_STEPOVER);
+
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnUpdateInterpreterMenuItem, this, IDM_INTERPRETER);
+
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LS_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LSLXZ_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LSLWZ_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LSLBZX_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LSF_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_LSP_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_FP_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_I_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_P_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_JIT_SR_OFF);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCorePaused, this, IDM_CLEAR_CODE_CACHE);
+
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_SEARCH_INSTRUCTION);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_CLEAR_SYMBOLS);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_SCAN_FUNCTIONS);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_LOAD_MAP_FILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_SAVEMAPFILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_LOAD_MAP_FILE_AS);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_SAVE_MAP_FILE_AS);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_LOAD_BAD_MAP_FILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this,
+ IDM_SAVE_MAP_FILE_WITH_CODES);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this,
+ IDM_CREATE_SIGNATURE_FILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this,
+ IDM_APPEND_SIGNATURE_FILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this,
+ IDM_COMBINE_SIGNATURE_FILES);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_RENAME_SYMBOLS);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_USE_SIGNATURE_FILE);
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreInitialized, this, IDM_PATCH_HLE_FUNCTIONS);
+
+ Bind(wxEVT_UPDATE_UI, &CFrame::OnEnableMenuItemIfCoreUninitialized, this, IDM_JIT_NO_BLOCK_CACHE);
}
wxToolBar* CFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name)
@@ -1015,6 +1067,36 @@ void CFrame::OnReloadThemeBitmaps(wxCommandEvent& WXUNUSED(event))
UpdateGameList();
}
+void CFrame::OnEnableMenuItemIfCoreInitialized(wxUpdateUIEvent& event)
+{
+ event.Enable(Core::GetState() != Core::CORE_UNINITIALIZED);
+}
+
+void CFrame::OnEnableMenuItemIfCoreUninitialized(wxUpdateUIEvent& event)
+{
+ event.Enable(Core::GetState() == Core::CORE_UNINITIALIZED);
+}
+
+void CFrame::OnEnableMenuItemIfCorePaused(wxUpdateUIEvent& event)
+{
+ event.Enable(Core::GetState() == Core::CORE_PAUSE);
+}
+
+void CFrame::OnEnableMenuItemIfCPUCanStep(wxUpdateUIEvent& event)
+{
+ event.Enable(Core::GetState() != Core::CORE_UNINITIALIZED && CPU::IsStepping());
+}
+
+void CFrame::OnUpdateInterpreterMenuItem(wxUpdateUIEvent& event)
+{
+ OnEnableMenuItemIfCorePaused(event);
+
+ if (GetMenuBar()->FindItem(IDM_INTERPRETER)->IsChecked())
+ return;
+
+ event.Check(SConfig::GetInstance().iCPUCore == PowerPC::CORE_INTERPRETER);
+}
+
void CFrame::ClearStatusBar()
{
if (this->GetStatusBar()->IsEnabled())