forked from dolphin-emu/dolphin
		
	
		
			
	
	
		
			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;
							 | 
						||
| 
								 | 
							
								};
							 |