MenuBar.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. // Copyright 2015 Dolphin Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <array>
  5. #include <memory>
  6. #include <string>
  7. #include <vector>
  8. #include <QMenuBar>
  9. #include <QPointer>
  10. #include "Common/CommonTypes.h"
  11. class QMenu;
  12. class ParallelProgressDialog;
  13. namespace Core
  14. {
  15. enum class State;
  16. }
  17. namespace DiscIO
  18. {
  19. enum class Region;
  20. }
  21. namespace UICommon
  22. {
  23. class GameFile;
  24. }
  25. using RSOPairEntry = std::pair<u32, std::string>;
  26. using RSOVector = std::vector<RSOPairEntry>;
  27. class MenuBar final : public QMenuBar
  28. {
  29. Q_OBJECT
  30. public:
  31. static MenuBar* GetMenuBar() { return s_menu_bar; }
  32. explicit MenuBar(QWidget* parent = nullptr);
  33. void UpdateToolsMenu(Core::State state);
  34. QMenu* GetListColumnsMenu() const { return m_cols_menu; }
  35. void InstallUpdateManually();
  36. signals:
  37. // File
  38. void Open();
  39. void Exit();
  40. void ChangeDisc();
  41. void EjectDisc();
  42. void OpenUserFolder();
  43. // Emulation
  44. void Play();
  45. void Pause();
  46. void Stop();
  47. void Reset();
  48. void Fullscreen();
  49. void FrameAdvance();
  50. void Screenshot();
  51. void StartNetPlay();
  52. void BrowseNetPlay();
  53. void StateLoad();
  54. void StateSave();
  55. void StateLoadSlot();
  56. void StateSaveSlot();
  57. void StateLoadSlotAt(int slot);
  58. void StateSaveSlotAt(int slot);
  59. void StateLoadUndo();
  60. void StateSaveUndo();
  61. void StateSaveOldest();
  62. void SetStateSlot(int slot);
  63. void BootWiiSystemMenu();
  64. void ImportNANDBackup();
  65. void PerformOnlineUpdate(const std::string& region);
  66. // Tools
  67. void ShowMemcardManager();
  68. void BootGameCubeIPL(DiscIO::Region region);
  69. void ShowFIFOPlayer();
  70. void ShowAboutDialog();
  71. void ShowCheatsManager();
  72. void ShowResourcePackManager();
  73. void ShowSkylanderPortal();
  74. void ShowInfinityBase();
  75. void ConnectWiiRemote(int id);
  76. #ifdef USE_RETRO_ACHIEVEMENTS
  77. void ShowAchievementsWindow();
  78. #endif // USE_RETRO_ACHIEVEMENTS
  79. // Options
  80. void Configure();
  81. void ConfigureGraphics();
  82. void ConfigureAudio();
  83. void ConfigureControllers();
  84. void ConfigureHotkeys();
  85. void ConfigureFreelook();
  86. // View
  87. void ShowList();
  88. void ShowGrid();
  89. void PurgeGameListCache();
  90. void ShowSearch();
  91. void ColumnVisibilityToggled(const QString& row, bool visible);
  92. void GameListPlatformVisibilityToggled(const QString& row, bool visible);
  93. void GameListRegionVisibilityToggled(const QString& row, bool visible);
  94. // Movie
  95. void PlayRecording();
  96. void StartRecording();
  97. void StopRecording();
  98. void ExportRecording();
  99. void ShowTASInput();
  100. void SelectionChanged(std::shared_ptr<const UICommon::GameFile> game_file);
  101. void RecordingStatusChanged(bool recording);
  102. void ReadOnlyModeChanged(bool read_only);
  103. private:
  104. void OnEmulationStateChanged(Core::State state);
  105. void OnConfigChanged();
  106. void AddFileMenu();
  107. void AddEmulationMenu();
  108. void AddStateLoadMenu(QMenu* emu_menu);
  109. void AddStateSaveMenu(QMenu* emu_menu);
  110. void AddStateSlotMenu(QMenu* emu_menu);
  111. void AddViewMenu();
  112. void AddGameListTypeSection(QMenu* view_menu);
  113. void AddListColumnsMenu(QMenu* view_menu);
  114. void AddShowPlatformsMenu(QMenu* view_menu);
  115. void AddShowRegionsMenu(QMenu* view_menu);
  116. void AddOptionsMenu();
  117. void AddToolsMenu();
  118. void AddHelpMenu();
  119. void AddMovieMenu();
  120. void AddJITMenu();
  121. void AddSymbolsMenu();
  122. void UpdateStateSlotMenu();
  123. void InstallWAD();
  124. void ImportWiiSave();
  125. void ExportWiiSaves();
  126. void CheckNAND();
  127. void NANDExtractCertificates();
  128. void ChangeDebugFont();
  129. // Debugging UI
  130. void ClearSymbols();
  131. void GenerateSymbolsFromAddress();
  132. void GenerateSymbolsFromSignatureDB();
  133. void GenerateSymbolsFromRSO();
  134. void GenerateSymbolsFromRSOAuto();
  135. RSOVector DetectRSOModules(ParallelProgressDialog& progress);
  136. void LoadSymbolMap();
  137. void LoadOtherSymbolMap();
  138. void LoadBadSymbolMap();
  139. void SaveSymbolMap();
  140. void SaveSymbolMapAs();
  141. void SaveCode();
  142. bool TryLoadMapFile(const QString& path, const bool bad = false);
  143. void TrySaveSymbolMap(const QString& path);
  144. void CreateSignatureFile();
  145. void AppendSignatureFile();
  146. void ApplySignatureFile();
  147. void CombineSignatureFiles();
  148. void PatchHLEFunctions();
  149. void ClearCache();
  150. void LogInstructions();
  151. void SearchInstruction();
  152. void OnSelectionChanged(std::shared_ptr<const UICommon::GameFile> game_file);
  153. void OnRecordingStatusChanged(bool recording);
  154. void OnReadOnlyModeChanged(bool read_only);
  155. void OnDebugModeToggled(bool enabled);
  156. void OnWipeJitBlockProfilingData();
  157. void OnWriteJitBlockLogDump();
  158. QString GetSignatureSelector() const;
  159. static QPointer<MenuBar> s_menu_bar;
  160. // File
  161. QAction* m_open_action;
  162. QAction* m_exit_action;
  163. QAction* m_change_disc;
  164. QAction* m_eject_disc;
  165. QMenu* m_backup_menu;
  166. QAction* m_open_user_folder;
  167. // Tools
  168. QAction* m_wad_install_action;
  169. QMenu* m_perform_online_update_menu;
  170. QAction* m_perform_online_update_for_current_region;
  171. QAction* m_ntscj_ipl;
  172. QAction* m_ntscu_ipl;
  173. QAction* m_pal_ipl;
  174. QMenu* m_manage_nand_menu;
  175. QAction* m_import_backup;
  176. QAction* m_check_nand;
  177. QAction* m_extract_certificates;
  178. std::array<QAction*, 5> m_wii_remotes;
  179. QAction* m_import_wii_save;
  180. QAction* m_export_wii_saves;
  181. // Emulation
  182. QAction* m_play_action;
  183. QAction* m_pause_action;
  184. QAction* m_stop_action;
  185. QAction* m_reset_action;
  186. QAction* m_fullscreen_action;
  187. QAction* m_frame_advance_action;
  188. QAction* m_screenshot_action;
  189. QAction* m_boot_sysmenu;
  190. QMenu* m_state_load_menu;
  191. QMenu* m_state_save_menu;
  192. QMenu* m_state_slot_menu;
  193. QActionGroup* m_state_slots;
  194. QMenu* m_state_load_slots_menu;
  195. QMenu* m_state_save_slots_menu;
  196. // Movie
  197. QAction* m_recording_export;
  198. QAction* m_recording_play;
  199. QAction* m_recording_start;
  200. QAction* m_recording_stop;
  201. QAction* m_recording_read_only;
  202. // Options
  203. QAction* m_boot_to_pause;
  204. QAction* m_reset_ignore_panic_handler;
  205. QAction* m_change_font;
  206. QAction* m_controllers_action;
  207. // View
  208. QAction* m_show_code;
  209. QAction* m_show_registers;
  210. QAction* m_show_threads;
  211. QAction* m_show_watch;
  212. QAction* m_show_breakpoints;
  213. QAction* m_show_memory;
  214. QAction* m_show_network;
  215. QAction* m_show_jit;
  216. QAction* m_show_assembler;
  217. QMenu* m_cols_menu;
  218. // JIT
  219. QMenu* m_jit;
  220. // Symbols
  221. QMenu* m_symbols;
  222. QAction* m_jit_interpreter_core;
  223. QAction* m_jit_block_linking;
  224. QAction* m_jit_disable_cache;
  225. QAction* m_jit_disable_fastmem;
  226. QAction* m_jit_disable_fastmem_arena;
  227. QAction* m_jit_disable_large_entry_points_map;
  228. QAction* m_jit_clear_cache;
  229. QAction* m_jit_log_coverage;
  230. QAction* m_jit_search_instruction;
  231. QAction* m_jit_profile_blocks;
  232. QAction* m_jit_wipe_profiling_data;
  233. QAction* m_jit_write_cache_log_dump;
  234. QAction* m_jit_off;
  235. QAction* m_jit_loadstore_off;
  236. QAction* m_jit_loadstore_lbzx_off;
  237. QAction* m_jit_loadstore_lxz_off;
  238. QAction* m_jit_loadstore_lwz_off;
  239. QAction* m_jit_loadstore_floating_off;
  240. QAction* m_jit_loadstore_paired_off;
  241. QAction* m_jit_floatingpoint_off;
  242. QAction* m_jit_integer_off;
  243. QAction* m_jit_paired_off;
  244. QAction* m_jit_systemregisters_off;
  245. QAction* m_jit_branch_off;
  246. QAction* m_jit_register_cache_off;
  247. bool m_game_selected = false;
  248. };