diff --git a/Source/Core/DebuggerWX/Src/CodeWindow.cpp b/Source/Core/DebuggerWX/Src/CodeWindow.cpp index 94bec7af5c..2c67e98b92 100644 --- a/Source/Core/DebuggerWX/Src/CodeWindow.cpp +++ b/Source/Core/DebuggerWX/Src/CodeWindow.cpp @@ -27,9 +27,6 @@ #include #include -// ugly that this lib included code from the main -#include "../../DolphinWX/Src/Globals.h" - #include "Host.h" #include "Debugger.h" @@ -171,7 +168,7 @@ CCodeWindow::CCodeWindow(const SCoreStartupParameter& _LocalCoreStartupParameter , m_BreakpointWindow(NULL) , m_MemoryWindow(NULL) , m_JitWindow(NULL) - , m_ToolBar2(NULL), m_NB0(NULL), m_NB1(NULL) + , m_ToolBarDebug(NULL), m_NB0(NULL), m_NB1(NULL) { // Load ini settings this->Load(); @@ -211,7 +208,7 @@ wxMenuBar *CCodeWindow::GetMenuBar() } wxAuiToolBar *CCodeWindow::GetToolBar() { - if (GetParentFrame()) return m_ToolBar2; + if (GetParentFrame()) return m_ToolBarDebug; } bool CCodeWindow::IsActive() { @@ -219,7 +216,7 @@ bool CCodeWindow::IsActive() } void CCodeWindow::UpdateToolbar(wxAuiToolBar * _ToolBar2) { - m_ToolBar2 = _ToolBar2; + m_ToolBarDebug = _ToolBar2; } void CCodeWindow::UpdateNotebook(int _i, wxAuiNotebook * _NB) { @@ -508,11 +505,10 @@ void CCodeWindow::InitBitmaps() m_Bitmaps[Toolbar_Skip] = wxGetBitmapFromMemory(toolbar_add_memcheck_png); m_Bitmaps[Toolbar_GotoPC] = wxGetBitmapFromMemory(toolbar_add_memcheck_png); m_Bitmaps[Toolbar_SetPC] = wxGetBitmapFromMemory(toolbar_add_memcheck_png); - m_Bitmaps[Toolbar_Pause] = wxGetBitmapFromMemory(toolbar_pause_png); - + m_Bitmaps[Toolbar_DebugPause] = wxGetBitmapFromMemory(toolbar_pause_png); // scale to 16x16 for toolbar - for (size_t n = Toolbar_DebugGo; n < Bitmaps_max; n++) + for (size_t n = Toolbar_DebugGo; n < ToolbarDebugBitmapMax; n++) { m_Bitmaps[n] = wxBitmap(m_Bitmaps[n].ConvertToImage().Scale(16, 16)); } @@ -859,7 +855,7 @@ void CCodeWindow::UpdateButtonStates() { ToolBar->SetToolShortHelp(IDM_DEBUG_GO, _T("&Pause")); ToolBar->SetToolLabel(IDM_DEBUG_GO, _("Pause")); - ToolBar->SetToolBitmap(IDM_DEBUG_GO, m_Bitmaps[Toolbar_Pause]); + ToolBar->SetToolBitmap(IDM_DEBUG_GO, m_Bitmaps[Toolbar_DebugPause]); ToolBar->EnableTool(IDM_DEBUG_GO, true); ToolBar->EnableTool(IDM_STEP, false); ToolBar->EnableTool(IDM_STEPOVER, false); @@ -922,7 +918,7 @@ void CCodeWindow::RecreateToolbar(wxAuiToolBar * toolBar) long style = TOOLBAR_STYLE; style &= ~(wxTB_HORIZONTAL | wxTB_VERTICAL | wxTB_BOTTOM | wxTB_RIGHT | wxTB_HORZ_LAYOUT | wxTB_TOP); - wxToolBar* theToolBar = CreateToolBar(style, ID_TOOLBAR2); + wxToolBar* theToolBar = CreateToolBar(style, ID_TOOLBAR_DEBUG); PopulateToolbar(theToolBar); SetToolBar(theToolBar); diff --git a/Source/Core/DebuggerWX/Src/CodeWindow.h b/Source/Core/DebuggerWX/Src/CodeWindow.h index bc0f69858a..a41abdbbaa 100644 --- a/Source/Core/DebuggerWX/Src/CodeWindow.h +++ b/Source/Core/DebuggerWX/Src/CodeWindow.h @@ -28,6 +28,9 @@ #include "Thread.h" #include "CoreParameter.h" +// GUI global +#include "../../DolphinWX/Src/Globals.h" + class CRegisterWindow; class CBreakPointWindow; class CMemoryWindow; @@ -54,10 +57,10 @@ class CCodeWindow void Load(); void Save(); - // Function redirection + // Function redirection and parent interaction wxFrame *GetParentFrame(); wxMenuBar * GetMenuBar(); - wxAuiToolBar * GetToolBar(), * m_ToolBar2; + wxAuiToolBar * GetToolBar(), * m_ToolBarDebug; wxAuiNotebook *m_NB0, *m_NB1; bool IsActive(); void UpdateToolbar(wxAuiToolBar *); @@ -68,13 +71,13 @@ class CCodeWindow #endif wxWindow * GetNootebookPage(wxString); void DoToggleWindow(int,bool); + wxBitmap m_Bitmaps[ToolbarDebugBitmapMax]; bool UseInterpreter(); bool BootToPause(); bool AutomaticStart(); bool UnlimitedJITCache(); bool JITBlockLinking(); - //bool UseDualCore(); // not used void JumpToAddress(u32 _Address); void Update(); @@ -106,18 +109,6 @@ class CCodeWindow ID_SYMBOLLIST }; - enum - { - Toolbar_DebugGo, - Toolbar_Pause, - Toolbar_Step, - Toolbar_StepOver, - Toolbar_Skip, - Toolbar_GotoPC, - Toolbar_SetPC, - Bitmaps_max - }; - // Settings bool bAutomaticStart; bool bBootToPause; bool bRegisterWindow; @@ -161,6 +152,9 @@ class CCodeWindow void DoTip(wxString text); void OnKeyDown(wxKeyEvent& event); + void InitBitmaps(); + void CreateGUIControls(const SCoreStartupParameter& _LocalCoreStartupParameter); + wxMenuItem* jitblocklinking, *jitunlimited, *jitoff; wxMenuItem* jitlsoff, *jitlslxzoff, *jitlslwzoff, *jitlslbzxoff; wxMenuItem* jitlspoff; @@ -177,12 +171,7 @@ class CCodeWindow wxListBox* calls; Common::Event sync_event; - wxBitmap m_Bitmaps[Bitmaps_max]; - - DECLARE_EVENT_TABLE() - - void InitBitmaps(); - void CreateGUIControls(const SCoreStartupParameter& _LocalCoreStartupParameter); + DECLARE_EVENT_TABLE() }; #endif /*CODEWINDOW_*/ diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp index a209e1ae0a..7d834db053 100644 --- a/Source/Core/DolphinWX/Src/Frame.cpp +++ b/Source/Core/DolphinWX/Src/Frame.cpp @@ -245,6 +245,9 @@ EVT_MENU(IDM_CONFIG_DSP_PLUGIN, CFrame::OnPluginDSP) EVT_MENU(IDM_CONFIG_PAD_PLUGIN, CFrame::OnPluginPAD) EVT_MENU(IDM_CONFIG_WIIMOTE_PLUGIN, CFrame::OnPluginWiimote) +EVT_MENU(IDM_PERSPECTIVE_0, CFrame::OnToolBar) +EVT_MENU(IDM_PERSPECTIVE_1, CFrame::OnToolBar) + #if defined(HAVE_SFML) && HAVE_SFML EVT_MENU(IDM_NETPLAY, CFrame::OnNetPlay) #endif @@ -318,7 +321,7 @@ CFrame::CFrame(bool showLogWindow, : wxFrame(parent, id, title, pos, size, style) , UseDebugger(_UseDebugger) , m_pStatusBar(NULL), bRenderToMain(true), HaveLeds(false) - , HaveSpeakers(false), m_Panel(NULL), m_ToolBar(NULL), m_ToolBar2(NULL) + , HaveSpeakers(false), m_Panel(NULL), m_ToolBar(NULL), m_ToolBarDebug(NULL) , m_bLogWindow(showLogWindow || SConfig::GetInstance().m_InterfaceLogWindow) , m_fLastClickTime(0), m_iLastMotionTime(0), LastMouseX(0), LastMouseY(0) #if wxUSE_TIMER @@ -369,12 +372,11 @@ CFrame::CFrame(bool showLogWindow, { wxBitmap aNormalFile = wxArtProvider::GetBitmap(wxART_NORMAL_FILE, wxART_OTHER, wxSize(16,16)); - static int Style = - wxAUI_NB_TOP | wxAUI_NB_TAB_MOVE | wxAUI_NB_SCROLL_BUTTONS | wxAUI_NB_TAB_SPLIT | - wxAUI_NB_CLOSE_ON_ACTIVE_TAB | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; - m_NB1 = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxSize(430,200), Style); - m_NB0 = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxSize(430,200), Style); - m_NB0->AddPage(g_pCodeWindow, wxT("Code"), false, aNormalFile ); + static int Style = wxAUI_NB_TOP | wxAUI_NB_TAB_MOVE | wxAUI_NB_SCROLL_BUTTONS | wxAUI_NB_CLOSE_ON_ACTIVE_TAB | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; + m_NB0 = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, Style); + m_NB1 = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, Style); + m_NB2 = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, Style); + m_NB0->AddPage(g_pCodeWindow, wxT("Code"), false, aNormalFile); g_pCodeWindow->UpdateNotebook(0, m_NB0); g_pCodeWindow->UpdateNotebook(1, m_NB1); @@ -392,29 +394,31 @@ CFrame::CFrame(bool showLogWindow, m_Mgr = new wxAuiManager(); m_Mgr->SetManagedWindow(this); + // Window perspectives + /* + ------------------- + | Pane 0 | | + |--------| Pane 2 | + | Pane 1 | | + ------------------- + ---------------------------- + | Pane 0 | | | + |--------| Pane 2 | Pane 3 | + | Pane 1 | | | + ---------------------------- + */ + // This panel is the parent for rendering and it holds the gamelistctrl if (UseDebugger) { - m_Mgr->AddPane(m_Panel, wxAuiPaneInfo(). - Name(wxT("Pane1")).Caption(wxT("Pane1")). - CenterPane().Layer(0).PaneBorder(false)); - AuiFullscreen = m_Mgr->SavePerspective(); - m_Mgr->GetPane(wxT("Pane1")).PaneBorder(true); - - m_Mgr->AddPane(m_NB1, wxAuiPaneInfo(). - Name(wxT("Pane2")).Caption(wxT("Pane2")). - CenterPane().Layer(1)); - - m_Mgr->AddPane(m_NB0, wxAuiPaneInfo(). - Name(wxT("Pane3")).Caption(wxT("Pane3")). - CenterPane().Layer(2)); + m_Mgr->AddPane(m_Panel, wxAuiPaneInfo().Name(wxT("Pane0")).Caption(wxT("Pane0")).Hide()); + m_Mgr->AddPane(m_NB0, wxAuiPaneInfo().Name(wxT("Pane1")).Caption(wxT("Pane1")).Hide()); + m_Mgr->AddPane(m_NB1, wxAuiPaneInfo().Name(wxT("Pane2")).Caption(wxT("Pane2")).Hide()); + m_Mgr->AddPane(m_NB2, wxAuiPaneInfo().Name(wxT("Pane3")).Caption(wxT("Pane3")).Hide()); } else { - m_Mgr->AddPane(m_Panel, wxAuiPaneInfo(). - Name(wxT("Pane1")).Caption(wxT("Pane1")). - CenterPane().PaneBorder(false)); - AuiFullscreen = m_Mgr->SavePerspective(); + m_Mgr->AddPane(m_Panel, wxAuiPaneInfo().Name(wxT("Pane0")).Caption(wxT("Pane0")).Hide()); } // Open log window @@ -423,15 +427,47 @@ CFrame::CFrame(bool showLogWindow, // Create toolbar RecreateToolbar(); + if (!SConfig::GetInstance().m_InterfaceToolbar) DoToggleToolbar(false); + if (UseDebugger) g_pCodeWindow->UpdateToolbar(m_ToolBarDebug); - AuiMode1 = m_Mgr->SavePerspective(); - if (UseDebugger) g_pCodeWindow->UpdateToolbar(m_ToolBar2); + // Position the panes + m_Mgr->GetPane(wxT("Pane0")).CaptionVisible(true); + m_Mgr->GetPane(wxT("Pane1")).CaptionVisible(true); + m_Mgr->GetPane(wxT("Pane2")).CaptionVisible(true); + m_Mgr->GetPane(wxT("Pane3")).CaptionVisible(true); - // Save perspectives - AuiMode2 = m_Mgr->SavePerspective(); - m_Mgr->GetPane(wxT("Pane2")).Layer(0); - m_Mgr->GetPane(wxT("Pane3")).Layer(0).Right(); - AuiMode1 = m_Mgr->SavePerspective(); + if (UseDebugger) + { + // Setup perspectives + m_Mgr->GetPane(wxT("Pane0")).CenterPane().PaneBorder(false); + AuiFullscreen = m_Mgr->SavePerspective(); + + m_Mgr->GetPane(wxT("Pane0")).Show().PaneBorder(true).Layer(0).Center().Position(0); + m_Mgr->GetPane(wxT("Pane1")).Show().PaneBorder(true).Layer(0).Center().Position(1); + m_Mgr->GetPane(wxT("Pane2")).Show().PaneBorder(true).Layer(0).Right(); + AuiPerspective.Add(m_Mgr->SavePerspective()); + + m_Mgr->GetPane(wxT("Pane0")).Left(); + m_Mgr->GetPane(wxT("Pane1")).Left(); + m_Mgr->GetPane(wxT("Pane2")).Center(); + m_Mgr->GetPane(wxT("Pane3")).Show().Right(); + AuiPerspective.Add(m_Mgr->SavePerspective()); + + // Load perspective + int iPerspective; + IniFile ini; + ini.Load(DEBUGGER_CONFIG_FILE); + ini.Get("Perspectives", "Perspective", &iPerspective, 0); + ini.Get("Perspective 0", "LeftWidth", &iLeftWidth[0], 50); + ini.Get("Perspective 0", "AutomaticStart", &iLeftWidth[1], 33); + ini.Get("Perspective 1", "BootToPause", &iMidWidth[1], 33); + DoLoadPerspective(iPerspective); + } + else + { + m_Mgr->GetPane(wxT("Pane0")).Layer(0).CenterPane().PaneBorder(false); + AuiFullscreen = m_Mgr->SavePerspective(); + } // Show window Show(); @@ -508,6 +544,7 @@ void CFrame::OnClose(wxCloseEvent& event) event.Skip(); // Save GUI settings if (UseDebugger) g_pCodeWindow->Save(); + if (UseDebugger) Save(); if (Core::GetState() != Core::CORE_UNINITIALIZED) { @@ -554,6 +591,74 @@ void CFrame::DoFullscreen(bool _F) m_Mgr->LoadPerspective(AuiCurrent, true); } } + +void CFrame::DoLoadPerspective(int i) +{ + //Save(); + + m_Mgr->LoadPerspective(AuiPerspective[i], true); + + int _iLeftWidth, _iMidWidth, _iRightWidth, iClientSize = this->GetSize().GetX(); + + // Check limits + if (iLeftWidth[0] > 95) iLeftWidth[0] = 95; if (iLeftWidth[0] < 5) iLeftWidth[0] = 5; + if (iLeftWidth[1] > 95) iLeftWidth[1] = 95; if (iLeftWidth[1] < 5) iLeftWidth[1] = 5; + if (iMidWidth[1] > 95) iMidWidth[1] = 95; if (iMidWidth[1] < 5) iMidWidth[1] = 5; + + // Set the size + if (i == 0) + { + _iLeftWidth = iClientSize * (float)(iLeftWidth[0]/100.0); + _iRightWidth = iClientSize - _iLeftWidth; + + m_Mgr->GetPane(wxT("Pane0")).BestSize(_iLeftWidth, -1).MinSize(_iLeftWidth, -1).MaxSize(_iLeftWidth, -1); + //m_Mgr->GetPane(wxT("Pane1")).BestSize(_iLeftWidth, -1).MinSize(_iLeftWidth, -1).MaxSize(_iLeftWidth, -1); + m_Mgr->GetPane(wxT("Pane2")).BestSize(_iRightWidth, -1).MinSize(_iRightWidth, -1).MaxSize(_iRightWidth, -1); + } + else + { + _iLeftWidth = iClientSize * (float)(iLeftWidth[1]/100.0); + _iMidWidth = iClientSize * (float)(iMidWidth[1]/100.0); + _iRightWidth = iClientSize - _iLeftWidth - _iMidWidth; + + m_Mgr->GetPane(wxT("Pane0")).BestSize(_iLeftWidth, -1).MinSize(_iLeftWidth, -1).MaxSize(_iLeftWidth, -1); + //m_Mgr->GetPane(wxT("Pane1")).BestSize(_iLeftWidth, -1).MinSize(_iLeftWidth, -1).MaxSize(_iLeftWidth, -1); + m_Mgr->GetPane(wxT("Pane2")).BestSize(_iMidWidth, -1).MinSize(_iMidWidth, -1).MaxSize(_iMidWidth, -1); + m_Mgr->GetPane(wxT("Pane3")).BestSize(_iRightWidth, -1).MinSize(_iRightWidth, -1).MaxSize(_iRightWidth, -1); + } + + m_Mgr->Update(); + + // Remove the size limits + m_Mgr->GetPane(wxT("Pane0")).MinSize(-1, -1).MaxSize(-1, -1); + m_Mgr->GetPane(wxT("Pane1")).MinSize(-1, -1).MaxSize(-1, -1); + m_Mgr->GetPane(wxT("Pane2")).MinSize(-1, -1).MaxSize(-1, -1); + m_Mgr->GetPane(wxT("Pane3")).MinSize(-1, -1).MaxSize(-1, -1); + +} +void CFrame::Save() +{ + if (!m_Mgr->GetPane(wxT("Pane0")).IsOk() || !m_Mgr->GetPane(wxT("Pane2")).IsOk() ) return; + + // Get client size + int _iLeftWidth, _iMidWidth, iClientSize = this->GetSize().GetX(); + _iLeftWidth = (int)(((float)m_Mgr->GetPane(wxT("Pane0")).window->GetClientSize().GetX() / (float)iClientSize) * 100.0); + _iMidWidth = (int)(((float)m_Mgr->GetPane(wxT("Pane2")).window->GetClientSize().GetX() / (float)iClientSize) * 100.0); + + IniFile ini; + ini.Load(DEBUGGER_CONFIG_FILE); + ini.Set("Perspectives", "Perspective", m_Mgr->GetPane(wxT("Pane3")).IsShown() ? 1 : 0); + if (!m_Mgr->GetPane(wxT("Pane3")).IsShown()) + { + ini.Set("Perspective 0", "LeftWidth", _iLeftWidth); + } + else + { + ini.Set("Perspective 1", "LeftWidth", _iLeftWidth); + ini.Set("Perspective 1", "MidWidth", _iMidWidth); + } + ini.Save(DEBUGGER_CONFIG_FILE); +} ///////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Source/Core/DolphinWX/Src/Frame.h b/Source/Core/DolphinWX/Src/Frame.h index 44bdf8cfad..a496e76ff5 100644 --- a/Source/Core/DolphinWX/Src/Frame.h +++ b/Source/Core/DolphinWX/Src/Frame.h @@ -109,15 +109,16 @@ class CFrame : public wxFrame // AUI wxAuiManager *m_Mgr; - wxAuiToolBar *m_ToolBar, *m_ToolBar2; - wxAuiNotebook *m_NB0, *m_NB1; + wxAuiToolBar *m_ToolBar, *m_ToolBarDebug, *m_ToolBarAui; + wxAuiNotebook *m_NB0, *m_NB1, *m_NB2; + int iLeftWidth[2], iMidWidth[2]; // Perspectives - wxString AuiFullscreen; - wxString AuiMode1; - wxString AuiMode2; - wxString AuiCurrent; + wxString AuiFullscreen, AuiCurrent; + wxArrayString AuiPerspective; void OnNotebookPageClose(wxAuiNotebookEvent& event); void OnAllowNotebookDnD(wxAuiNotebookEvent& event); + void DoLoadPerspective(int); + void Save(); char **drives; @@ -161,6 +162,7 @@ class CFrame : public wxFrame wxBitmap m_BitmapsMenu[EToolbar_Max]; void PopulateToolbar(wxAuiToolBar* toolBar); + void PopulateToolbarAui(wxAuiToolBar* toolBar); void RecreateToolbar(); void CreateMenu(); @@ -171,6 +173,7 @@ class CFrame : public wxFrame // Event functions void OnQuit(wxCommandEvent& event); void OnHelp(wxCommandEvent& event); + void OnToolBar(wxCommandEvent& event); void OnOpen(wxCommandEvent& event); // File menu void DoOpen(bool Boot); @@ -208,6 +211,7 @@ class CFrame : public wxFrame void OnToggleThrottle(wxCommandEvent& event); void OnResize(wxSizeEvent& event); void OnToggleToolbar(wxCommandEvent& event); + void DoToggleToolbar(bool); void OnToggleStatusbar(wxCommandEvent& event); void OnToggleLogWindow(wxCommandEvent& event); void OnToggleConsole(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index 1b8447d971..ad7583900b 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -251,49 +251,54 @@ void CFrame::CreateMenu() ///////////////////////////////////////////////////////////////////////////////////////////////////////// // Create toolbar items // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -void CFrame::PopulateToolbar(wxAuiToolBar* toolBar) +void CFrame::PopulateToolbar(wxAuiToolBar* ToolBar) { int w = m_Bitmaps[Toolbar_FileOpen].GetWidth(), h = m_Bitmaps[Toolbar_FileOpen].GetHeight(); + ToolBar->SetToolBitmapSize(wxSize(w, h)); - toolBar->SetToolBitmapSize(wxSize(w, h)); - toolBar->AddTool(wxID_OPEN, _T("Open"), m_Bitmaps[Toolbar_FileOpen], _T("Open file...")); - toolBar->AddTool(wxID_REFRESH, _T("Refresh"), m_Bitmaps[Toolbar_Refresh], _T("Refresh")); - toolBar->AddTool(IDM_BROWSE, _T("Browse"), m_Bitmaps[Toolbar_Browse], _T("Browse for an ISO directory...")); - toolBar->AddSeparator(); - toolBar->AddTool(IDM_PLAY, wxT(""), m_Bitmaps[Toolbar_Play], _T("Play")); - toolBar->AddTool(IDM_STOP, _T("Stop"), m_Bitmaps[Toolbar_Stop], _T("Stop")); + ToolBar->AddTool(wxID_OPEN, _T("Open"), m_Bitmaps[Toolbar_FileOpen], _T("Open file...")); + ToolBar->AddTool(wxID_REFRESH, _T("Refresh"), m_Bitmaps[Toolbar_Refresh], _T("Refresh")); + ToolBar->AddTool(IDM_BROWSE, _T("Browse"), m_Bitmaps[Toolbar_Browse], _T("Browse for an ISO directory...")); + ToolBar->AddSeparator(); + ToolBar->AddTool(IDM_PLAY, wxT(""), m_Bitmaps[Toolbar_Play], _T("Play")); + ToolBar->AddTool(IDM_STOP, _T("Stop"), m_Bitmaps[Toolbar_Stop], _T("Stop")); #ifdef _WIN32 - toolBar->AddTool(IDM_TOGGLE_FULLSCREEN, _T("Fullscr."), m_Bitmaps[Toolbar_FullScreen], _T("Toggle Fullscreen")); + ToolBar->AddTool(IDM_TOGGLE_FULLSCREEN, _T("Fullscr."), m_Bitmaps[Toolbar_FullScreen], _T("Toggle Fullscreen")); #endif - toolBar->AddTool(IDM_SCREENSHOT, _T("Scr.Shot"), m_Bitmaps[Toolbar_FullScreen], _T("Take Screenshot")); - toolBar->AddSeparator(); - toolBar->AddTool(IDM_CONFIG_MAIN, _T("Config"), m_Bitmaps[Toolbar_PluginOptions], _T("Configure...")); - toolBar->AddTool(IDM_CONFIG_GFX_PLUGIN, _T("Gfx"), m_Bitmaps[Toolbar_PluginGFX], _T("Graphics settings")); - toolBar->AddTool(IDM_CONFIG_DSP_PLUGIN, _T("DSP"), m_Bitmaps[Toolbar_PluginDSP], _T("DSP settings")); - toolBar->AddTool(IDM_CONFIG_PAD_PLUGIN, _T("Pad"), m_Bitmaps[Toolbar_PluginPAD], _T("Pad settings")); - toolBar->AddTool(IDM_CONFIG_WIIMOTE_PLUGIN, _T("Wiimote"), m_Bitmaps[Toolbar_Wiimote], _T("Wiimote settings")); - toolBar->AddSeparator(); - toolBar->AddTool(IDM_HELPABOUT, _T("About"), m_Bitmaps[Toolbar_Help], _T("About Dolphin")); + ToolBar->AddTool(IDM_SCREENSHOT, _T("Scr.Shot"), m_Bitmaps[Toolbar_FullScreen], _T("Take Screenshot")); + ToolBar->AddSeparator(); + ToolBar->AddTool(IDM_CONFIG_MAIN, _T("Config"), m_Bitmaps[Toolbar_PluginOptions], _T("Configure...")); + ToolBar->AddTool(IDM_CONFIG_GFX_PLUGIN, _T("Gfx"), m_Bitmaps[Toolbar_PluginGFX], _T("Graphics settings")); + ToolBar->AddTool(IDM_CONFIG_DSP_PLUGIN, _T("DSP"), m_Bitmaps[Toolbar_PluginDSP], _T("DSP settings")); + ToolBar->AddTool(IDM_CONFIG_PAD_PLUGIN, _T("Pad"), m_Bitmaps[Toolbar_PluginPAD], _T("Pad settings")); + ToolBar->AddTool(IDM_CONFIG_WIIMOTE_PLUGIN, _T("Wiimote"), m_Bitmaps[Toolbar_Wiimote], _T("Wiimote settings")); + ToolBar->AddSeparator(); + ToolBar->AddTool(IDM_HELPABOUT, _T("About"), m_Bitmaps[Toolbar_Help], _T("About Dolphin")); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes - toolBar->Realize(); + ToolBar->Realize(); +} +void CFrame::PopulateToolbarAui(wxAuiToolBar* ToolBar) +{ + int w = m_Bitmaps[Toolbar_FileOpen].GetWidth(), + h = m_Bitmaps[Toolbar_FileOpen].GetHeight(); + ToolBar->SetToolBitmapSize(wxSize(w, h)); + + ToolBar->AddTool(IDM_PERSPECTIVE_0, wxT("View 1"), g_pCodeWindow->m_Bitmaps[Toolbar_GotoPC], wxT("View 1")); + ToolBar->AddTool(IDM_PERSPECTIVE_1, wxT("View 2"), g_pCodeWindow->m_Bitmaps[Toolbar_GotoPC], wxT("View 2")); + + ToolBar->Realize(); } // Delete and recreate the toolbar void CFrame::RecreateToolbar() { - if (m_ToolBar) { - m_Mgr->DetachPane(m_ToolBar); - delete m_ToolBar; } - m_ToolBar = new wxAuiToolBar(this, ID_TOOLBAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW | wxAUI_TB_TEXT); - PopulateToolbar(m_ToolBar); - m_Mgr->AddPane(m_ToolBar, wxAuiPaneInfo(). Name(wxT("TBMain")).Caption(wxT("TBMain")). ToolbarPane().Top(). @@ -301,26 +306,38 @@ void CFrame::RecreateToolbar() if (UseDebugger) { - if (m_ToolBar2) { - m_Mgr->DetachPane(m_ToolBar2); - delete m_ToolBar2; } - - m_ToolBar2 = new wxAuiToolBar(this, ID_TOOLBAR2, wxDefaultPosition, wxDefaultSize, + m_ToolBarDebug = new wxAuiToolBar(this, ID_TOOLBAR_DEBUG, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW | wxAUI_TB_TEXT); - - g_pCodeWindow->PopulateToolbar(m_ToolBar2); - - m_Mgr->AddPane(m_ToolBar2, wxAuiPaneInfo(). + g_pCodeWindow->PopulateToolbar(m_ToolBarDebug); + m_Mgr->AddPane(m_ToolBarDebug, wxAuiPaneInfo(). Name(wxT("TBDebug")).Caption(wxT("TBDebug")). ToolbarPane().Top(). LeftDockable(false).RightDockable(false).Floatable(false)); + + m_ToolBarAui = new wxAuiToolBar(this, ID_TOOLBAR_AUI, wxDefaultPosition, wxDefaultSize, + wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_OVERFLOW | wxAUI_TB_TEXT); + PopulateToolbarAui(m_ToolBarAui); + m_Mgr->AddPane(m_ToolBarAui, wxAuiPaneInfo(). + Name(wxT("TBAui")).Caption(wxT("TBAui")). + ToolbarPane().Top(). + LeftDockable(false).RightDockable(false).Floatable(false)); } + + //UpdateGUI(); - // Hide toolbars if disabled - if (!SConfig::GetInstance().m_InterfaceToolbar) - { m_Mgr->GetPane(wxT("TBMain")).Hide(); if (UseDebugger) m_Mgr->GetPane(wxT("TBDebug")).Hide(); } + /* + wxToolBarBase* ToolBar = GetToolBar(); + long style = ToolBar ? ToolBar->GetWindowStyle() : TOOLBAR_STYLE; + delete ToolBar; + SetToolBar(NULL); + style &= ~(wxTB_HORIZONTAL | wxTB_VERTICAL | wxTB_BOTTOM | wxTB_RIGHT | wxTB_HORZ_LAYOUT | wxTB_TOP); + m_ToolBar = CreateToolBar(style, ID_TOOLBAR); + + PopulateToolbar(m_ToolBar); + SetToolBar(m_ToolBar); UpdateGUI(); + */ } void CFrame::InitBitmaps() @@ -420,7 +437,7 @@ void CFrame::InitBitmaps() } // Update in case the bitmap has been updated - if (m_ToolBar != NULL) + if (GetToolBar() != NULL) RecreateToolbar(); } ///////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -699,6 +716,19 @@ void CFrame::OnHelp(wxCommandEvent& event) break; } } + +void CFrame::OnToolBar(wxCommandEvent& event) +{ + switch (event.GetId()) + { + case IDM_PERSPECTIVE_0: + DoLoadPerspective(0); + break; + case IDM_PERSPECTIVE_1: + DoLoadPerspective(1); + break; + } +} ///////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -846,15 +876,20 @@ void CFrame::OnResize(wxSizeEvent& event) void CFrame::OnToggleToolbar(wxCommandEvent& event) { SConfig::GetInstance().m_InterfaceToolbar = event.IsChecked(); - - if (event.IsChecked()) + DoToggleToolbar(event.IsChecked()); +} +void CFrame::DoToggleToolbar(bool Show) +{ + if (Show) { - m_Mgr->GetPane(wxT("TBMain")).Show(); if (UseDebugger) m_Mgr->GetPane(wxT("TBDebug")).Show(); + m_Mgr->GetPane(wxT("TBMain")).Show(); + if (UseDebugger) { m_Mgr->GetPane(wxT("TBDebug")).Show(); m_Mgr->GetPane(wxT("TBAui")).Show(); } m_Mgr->Update(); } else { - m_Mgr->GetPane(wxT("TBMain")).Hide(); if (UseDebugger) m_Mgr->GetPane(wxT("TBDebug")).Hide(); + m_Mgr->GetPane(wxT("TBMain")).Hide(); + if (UseDebugger) { m_Mgr->GetPane(wxT("TBDebug")).Hide(); m_Mgr->GetPane(wxT("TBAui")).Hide(); } m_Mgr->Update(); } } diff --git a/Source/Core/DolphinWX/Src/Globals.h b/Source/Core/DolphinWX/Src/Globals.h index 7da2ab8771..b8af406fb6 100644 --- a/Source/Core/DolphinWX/Src/Globals.h +++ b/Source/Core/DolphinWX/Src/Globals.h @@ -29,6 +29,18 @@ // Constant Colors const unsigned long COLOR_GRAY = 0xDCDCDC; +enum +{ + Toolbar_DebugGo, + Toolbar_DebugPause, + Toolbar_Step, + Toolbar_StepOver, + Toolbar_Skip, + Toolbar_GotoPC, + Toolbar_SetPC, + ToolbarDebugBitmapMax +}; + enum { IDM_LOADSTATE = 200, // File menu @@ -153,7 +165,7 @@ enum // -------------------------------------------------------------- // Debugger Toolbar // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ - ID_TOOLBAR2, + ID_TOOLBAR_DEBUG, IDM_DEBUG_GO, IDM_STEP, IDM_STEPOVER, @@ -161,6 +173,10 @@ enum IDM_SETPC, IDM_GOTOPC, IDM_ADDRBOX, + + ID_TOOLBAR_AUI, + IDM_PERSPECTIVE_0, + IDM_PERSPECTIVE_1, // -------------------------------------------------------------- IDM_TOGGLE_DUALCORE, // Other