project64/Source/Project64/UserInterface/MainMenu.h

203 lines
5.1 KiB
C
Raw Normal View History

2016-01-27 09:11:59 +00:00
#pragma once
2022-09-26 02:31:54 +00:00
#include <Project64-core/Settings/DebugSettings.h>
#include <Project64/Settings/UISettings.h>
2022-09-26 02:31:54 +00:00
#include <Project64/UserInterface/MenuItem.h>
#include <Project64/UserInterface/MenuShortCuts.h>
2016-01-27 09:11:59 +00:00
enum MainMenuID
{
// File menu
2022-09-26 02:31:54 +00:00
ID_FILE_OPEN_ROM = 4000,
ID_FILE_OPEN_COMBO,
ID_FILE_ROM_INFO,
ID_FILE_STARTEMULATION,
ID_FILE_ENDEMULATION,
ID_FILE_ROMDIRECTORY,
ID_FILE_REFRESHROMLIST,
ID_FILE_EXIT,
2016-01-27 09:11:59 +00:00
// Language
2022-09-26 02:31:54 +00:00
ID_LANG_START,
ID_LANG_END = ID_LANG_START + 100,
2016-01-27 09:11:59 +00:00
// Recent files
2022-09-26 02:31:54 +00:00
ID_RECENT_ROM_START,
ID_RECENT_ROM_END = ID_RECENT_ROM_START + 20,
2016-01-27 09:11:59 +00:00
// Recent directory
2022-09-26 02:31:54 +00:00
ID_RECENT_DIR_START,
ID_RECENT_DIR_END = ID_RECENT_DIR_START + 20,
2016-01-27 09:11:59 +00:00
// System menu
2022-09-26 02:31:54 +00:00
ID_SYSTEM_RESET_SOFT,
ID_SYSTEM_RESET_HARD,
ID_SYSTEM_PAUSE,
ID_SYSTEM_BITMAP,
ID_SYSTEM_LIMITFPS,
ID_SYSTEM_SWAPDISK,
ID_SYSTEM_RESTORE,
ID_SYSTEM_LOAD,
ID_SYSTEM_SAVE,
ID_SYSTEM_SAVEAS,
ID_SYSTEM_ENHANCEMENT,
ID_SYSTEM_CHEAT,
ID_SYSTEM_GSBUTTON,
2016-01-27 09:11:59 +00:00
//Current save slot
2022-09-26 02:31:54 +00:00
ID_CURRENT_SAVE_1,
ID_CURRENT_SAVE_2,
ID_CURRENT_SAVE_3,
ID_CURRENT_SAVE_4,
ID_CURRENT_SAVE_5,
ID_CURRENT_SAVE_6,
ID_CURRENT_SAVE_7,
ID_CURRENT_SAVE_8,
ID_CURRENT_SAVE_9,
ID_CURRENT_SAVE_10,
2016-01-27 09:11:59 +00:00
ID_CURRENT_SAVE_DEFAULT,
// Option menu
2022-09-26 02:31:54 +00:00
ID_OPTIONS_FULLSCREEN,
ID_OPTIONS_FULLSCREEN2,
ID_OPTIONS_ALWAYSONTOP,
ID_OPTIONS_CONFIG_GFX,
ID_OPTIONS_CONFIG_AUDIO,
ID_OPTIONS_CONFIG_CONT,
ID_OPTIONS_CONFIG_RSP,
ID_OPTIONS_CPU_USAGE,
ID_OPTIONS_SETTINGS,
ID_OPTIONS_DISPLAY_FR,
ID_OPTIONS_CHANGE_FR,
ID_OPTIONS_INCREASE_SPEED,
2016-01-27 09:11:59 +00:00
ID_OPTIONS_DECREASE_SPEED,
// Debugger menu
2022-09-26 02:31:54 +00:00
ID_DEBUG_END_ON_PERM_LOOP,
ID_DEBUG_STEP_ON_BREAK_OPCODE,
ID_DEBUG_BREAK_ON_UNHANDLED_MEM,
ID_DEBUG_BREAK_ON_ADDRESS_ERROR,
ID_DEBUG_SHOW_PIF_ERRORS,
ID_DEBUG_SHOW_DLIST_COUNT,
ID_DEBUG_SHOW_RECOMP_MEM_SIZE,
ID_DEBUG_RECORD_RECOMPILER_ASM,
ID_DEBUG_DISABLE_GAMEFIX,
ID_DEBUG_LANGUAGE,
ID_DEBUGGER_LOGOPTIONS,
ID_DEBUGGER_GENERATELOG,
ID_DEBUGGER_DUMPMEMORY,
ID_DEBUGGER_SEARCHMEMORY,
ID_DEBUGGER_TLBENTRIES,
ID_DEBUGGER_BREAKPOINTS,
ID_DEBUGGER_MEMORY,
ID_DEBUGGER_R4300REGISTERS,
ID_DEBUGGER_INTERRUPT_SP,
ID_DEBUGGER_INTERRUPT_SI,
ID_DEBUGGER_INTERRUPT_AI,
ID_DEBUGGER_INTERRUPT_VI,
ID_DEBUGGER_INTERRUPT_PI,
ID_DEBUGGER_INTERRUPT_DP,
ID_DEBUGGER_SCRIPTS,
ID_DEBUGGER_SYMBOLS,
ID_DEBUGGER_DMALOG,
ID_DEBUGGER_EXCBREAKPOINTS,
ID_DEBUGGER_CPULOG,
ID_DEBUGGER_STACKTRACE,
ID_DEBUGGER_STACKVIEW,
2016-01-27 09:11:59 +00:00
// App logging
2022-09-26 02:31:54 +00:00
ID_DEBUGGER_APPLOG_FLUSH,
ID_DEBUGGER_TRACE_MD5,
ID_DEBUGGER_TRACE_SETTINGS,
ID_DEBUGGER_TRACE_UNKNOWN,
ID_DEBUGGER_TRACE_APPINIT,
ID_DEBUGGER_TRACE_APPCLEANUP,
ID_DEBUGGER_TRACE_N64SYSTEM,
ID_DEBUGGER_TRACE_PLUGINS,
ID_DEBUGGER_TRACE_GFXPLUGIN,
ID_DEBUGGER_TRACE_AUDIOPLUGIN,
ID_DEBUGGER_TRACE_CONTROLLERPLUGIN,
ID_DEBUGGER_TRACE_RSPPLUGIN,
ID_DEBUGGER_TRACE_RSP,
ID_DEBUGGER_TRACE_AUDIO,
ID_DEBUGGER_TRACE_REGISTERCACHE,
ID_DEBUGGER_TRACE_RECOMPILER,
ID_DEBUGGER_TRACE_TLB,
ID_DEBUGGER_TRACE_PROTECTEDMEM,
ID_DEBUGGER_TRACE_USERINTERFACE,
2016-01-27 09:11:59 +00:00
// Profile menu
2022-09-26 02:31:54 +00:00
ID_PROFILE_PROFILE,
ID_PROFILE_RESETCOUNTER,
ID_PROFILE_GENERATELOG,
2016-01-27 09:11:59 +00:00
// Help menu
2022-09-26 02:31:54 +00:00
ID_HELP_SUPPORT_PROJECT64,
ID_HELP_DISCORD,
ID_HELP_WEBSITE,
ID_HELP_ABOUT,
2016-01-27 09:11:59 +00:00
};
2022-09-26 02:31:54 +00:00
class CMainGui;
2016-01-27 09:11:59 +00:00
class CMainMenu :
public CBaseMenu,
private CDebugSettings
{
public:
CMainMenu(CMainGui * Window);
~CMainMenu();
2021-04-26 10:48:20 +00:00
int ProcessAccelerator(HWND hWnd, void * lpMsg);
bool ProcessMessage(HWND hWnd, DWORD wNotifyCode, DWORD wID);
void ResetMenu(void);
2022-09-26 02:31:54 +00:00
void ResetAccelerators(void)
{
m_ResetAccelerators = true;
}
2016-01-27 09:11:59 +00:00
private:
CMainMenu();
2022-09-26 02:31:54 +00:00
CMainMenu(const CMainMenu &);
CMainMenu & operator=(const CMainMenu &);
2016-01-27 09:11:59 +00:00
void OnOpenRom(HWND hWnd);
void OnOpenCombo(HWND hWnd);
void OnRomInfo(HWND hWnd);
void OnEndEmulation(void);
void OnScreenShot(void);
void OnSaveAs(HWND hWnd);
void OnLodState(HWND hWnd);
void OnEnhancements(HWND hWnd);
void OnCheats(HWND hWnd);
void OnSettings(HWND hWnd);
2020-10-22 02:11:19 +00:00
void OnSupportProject64(HWND hWnd);
2016-01-27 09:11:59 +00:00
void FillOutMenu(HMENU hMenu);
std::wstring GetSaveSlotString(int Slot);
stdstr GetFileLastMod(const CPath & FileName);
2016-01-27 09:11:59 +00:00
void RebuildAccelerators(void);
std::string ChooseFileToOpen(HWND hParent);
std::string ChooseROMFileToOpen(HWND hParent);
std::string ChooseDiskFileToOpen(HWND hParent);
2016-01-27 09:11:59 +00:00
void SetTraceModuleSetttings(SettingID Type);
2021-04-26 10:48:20 +00:00
void ShortCutsChanged(void);
2016-01-27 09:11:59 +00:00
static void SettingsChanged(CMainMenu * _this);
2022-09-26 02:31:54 +00:00
static void stShortCutsChanged(CMainMenu * _this)
{
return _this->ShortCutsChanged();
}
2016-01-27 09:11:59 +00:00
typedef std::list<SettingID> SettingList;
typedef std::list<UISettingID> UISettingList;
2016-01-27 09:11:59 +00:00
2020-10-22 02:11:19 +00:00
CMainGui * m_Gui;
2016-01-27 09:11:59 +00:00
2020-10-22 02:11:19 +00:00
void * m_AccelTable;
bool m_ResetAccelerators;
CShortCuts m_ShortCuts;
SettingList m_ChangeSettingList;
UISettingList m_ChangeUISettingList;
2016-01-27 09:11:59 +00:00
CriticalSection m_CS;
};