80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
// Copyright 2016 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <wx/bitmap.h>
|
|
#include <wx/toolbar.h>
|
|
|
|
wxDECLARE_EVENT(DOLPHIN_EVT_RELOAD_TOOLBAR_BITMAPS, wxCommandEvent);
|
|
|
|
class MainToolBar final : public wxToolBar
|
|
{
|
|
public:
|
|
enum class ToolBarType
|
|
{
|
|
Regular,
|
|
Debug
|
|
};
|
|
|
|
MainToolBar(ToolBarType type, wxWindow* parent, wxWindowID id,
|
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
|
long style = wxTB_HORIZONTAL, const wxString& name = wxToolBarNameStr);
|
|
|
|
void Refresh(bool erase_background, const wxRect* rect = nullptr) override;
|
|
|
|
private:
|
|
enum ToolBarBitmapID : int
|
|
{
|
|
TOOLBAR_DEBUG_STEP,
|
|
TOOLBAR_DEBUG_STEPOVER,
|
|
TOOLBAR_DEBUG_STEPOUT,
|
|
TOOLBAR_DEBUG_SKIP,
|
|
TOOLBAR_DEBUG_GOTOPC,
|
|
TOOLBAR_DEBUG_SETPC,
|
|
|
|
TOOLBAR_FILEOPEN,
|
|
TOOLBAR_REFRESH,
|
|
TOOLBAR_PLAY,
|
|
TOOLBAR_STOP,
|
|
TOOLBAR_PAUSE,
|
|
TOOLBAR_SCREENSHOT,
|
|
TOOLBAR_FULLSCREEN,
|
|
TOOLBAR_CONFIGMAIN,
|
|
TOOLBAR_CONFIGGFX,
|
|
TOOLBAR_CONTROLLER,
|
|
};
|
|
|
|
void BindEvents();
|
|
void BindMainButtonEvents();
|
|
void BindDebuggerButtonEvents();
|
|
|
|
void OnReloadBitmaps(wxCommandEvent&);
|
|
|
|
void InitializeBitmaps();
|
|
void InitializeThemeBitmaps();
|
|
void InitializeDebuggerBitmaps();
|
|
|
|
wxBitmap CreateBitmap(const std::string& name) const;
|
|
wxBitmap CreateDebuggerBitmap(const std::string& name) const;
|
|
|
|
void ApplyThemeBitmaps();
|
|
void ApplyDebuggerBitmaps();
|
|
void ApplyBitmap(int tool_id, ToolBarBitmapID bitmap_id);
|
|
|
|
void AddToolBarButtons();
|
|
void AddMainToolBarButtons();
|
|
void AddDebuggerToolBarButtons();
|
|
void AddToolBarButton(int tool_id, ToolBarBitmapID bitmap_id, const wxString& label,
|
|
const wxString& short_help = wxEmptyString);
|
|
|
|
void RefreshPlayButton();
|
|
|
|
ToolBarType m_type{};
|
|
std::unordered_map<ToolBarBitmapID, wxBitmap, std::hash<int>> m_icon_bitmaps;
|
|
};
|