mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 22:09:19 -07:00
78 lines
2.2 KiB
C
78 lines
2.2 KiB
C
|
// Copyright 2016 Dolphin Emulator Project
|
||
|
// Licensed under GPLv2+
|
||
|
// Refer to the license.txt file included.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
#include <wx/event.h>
|
||
|
#include <wx/menu.h>
|
||
|
|
||
|
class MainMenuBar final : public wxMenuBar
|
||
|
{
|
||
|
public:
|
||
|
class PopulatePerspectivesEvent;
|
||
|
|
||
|
enum class MenuType
|
||
|
{
|
||
|
Regular,
|
||
|
Debug
|
||
|
};
|
||
|
|
||
|
explicit MainMenuBar(MenuType type, long style = 0);
|
||
|
|
||
|
void Refresh(bool erase_background, const wxRect* rect = nullptr) override;
|
||
|
|
||
|
private:
|
||
|
void AddMenus();
|
||
|
void BindEvents();
|
||
|
|
||
|
wxMenu* CreateFileMenu() const;
|
||
|
wxMenu* CreateEmulationMenu() const;
|
||
|
wxMenu* CreateMovieMenu() const;
|
||
|
wxMenu* CreateOptionsMenu() const;
|
||
|
wxMenu* CreateToolsMenu() const;
|
||
|
wxMenu* CreateViewMenu() const;
|
||
|
wxMenu* CreateJITMenu() const;
|
||
|
wxMenu* CreateDebugMenu();
|
||
|
wxMenu* CreateSymbolsMenu() const;
|
||
|
wxMenu* CreateProfilerMenu() const;
|
||
|
wxMenu* CreateHelpMenu() const;
|
||
|
|
||
|
void OnPopulatePerspectivesMenu(PopulatePerspectivesEvent&);
|
||
|
|
||
|
void RefreshMenuLabels() const;
|
||
|
void RefreshPlayMenuLabel() const;
|
||
|
void RefreshSaveStateMenuLabels() const;
|
||
|
void RefreshWiiSystemMenuLabel() const;
|
||
|
|
||
|
void ClearSavedPerspectivesMenu() const;
|
||
|
void PopulateSavedPerspectivesMenu(const std::vector<std::string>& label_names) const;
|
||
|
void CheckPerspectiveWithID(int perspective_id) const;
|
||
|
|
||
|
wxMenu* m_saved_perspectives_menu{};
|
||
|
MenuType m_type{};
|
||
|
};
|
||
|
|
||
|
class MainMenuBar::PopulatePerspectivesEvent final : public wxEvent
|
||
|
{
|
||
|
public:
|
||
|
PopulatePerspectivesEvent(int sender_id, wxEventType event_type,
|
||
|
std::vector<std::string> perspective_names, int active_perspective)
|
||
|
: wxEvent{sender_id, event_type}, m_perspective_names{std::move(perspective_names)},
|
||
|
m_active_perspective{active_perspective}
|
||
|
{
|
||
|
}
|
||
|
|
||
|
const std::vector<std::string>& PerspectiveNames() const { return m_perspective_names; }
|
||
|
int ActivePerspective() const { return m_active_perspective; }
|
||
|
wxEvent* Clone() const override { return new PopulatePerspectivesEvent(*this); }
|
||
|
private:
|
||
|
std::vector<std::string> m_perspective_names;
|
||
|
int m_active_perspective{};
|
||
|
};
|
||
|
|
||
|
wxDECLARE_EVENT(EVT_POPULATE_PERSPECTIVES_MENU, MainMenuBar::PopulatePerspectivesEvent);
|