diff --git a/Source/Core/DolphinWX/DolphinWX.vcproj b/Source/Core/DolphinWX/DolphinWX.vcproj
index 1414e80ef2..20249e31f0 100644
--- a/Source/Core/DolphinWX/DolphinWX.vcproj
+++ b/Source/Core/DolphinWX/DolphinWX.vcproj
@@ -1072,6 +1072,10 @@
RelativePath=".\src\Frame.h"
>
+
+
diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp
index f6e373f96e..1dd1b81bbc 100644
--- a/Source/Core/DolphinWX/Src/Frame.cpp
+++ b/Source/Core/DolphinWX/Src/Frame.cpp
@@ -305,17 +305,20 @@ CFrame::CFrame(wxFrame* parent,
const wxPoint& pos,
const wxSize& size,
bool _UseDebugger,
+ bool ShowLogWindow,
long style)
- : wxFrame(parent, id, title, pos, size, style)
- , UseDebugger(_UseDebugger), m_LogWindow(NULL)
- , m_GameListCtrl(NULL), m_pStatusBar(NULL), bRenderToMain(true), HaveLeds(false)
- , HaveSpeakers(false), m_Panel(NULL), m_ToolBar(NULL), m_ToolBarDebug(NULL)
- , m_fLastClickTime(0), m_iLastMotionTime(0), LastMouseX(0), LastMouseY(0)
+ : wxFrame(parent, id, title, pos, size, style)
+ , m_GameListCtrl(NULL), m_pStatusBar(NULL)
+ , m_LogWindow(NULL) , m_Panel(NULL), m_ToolBar(NULL), m_ToolBarDebug(NULL)
+ , bRenderToMain(true), HaveLeds(false), HaveSpeakers(false)
+ , UseDebugger(_UseDebugger), m_fLastClickTime(0), m_iLastMotionTime(0), LastMouseX(0), LastMouseY(0)
#if wxUSE_TIMER
, m_timer(this)
#endif
{
+ if (ShowLogWindow) SConfig::GetInstance().m_InterfaceLogWindow = true;
+
// Give it a console early to show potential messages from this onward
ConsoleListener *Console = LogManager::GetInstance()->getConsoleListener();
if (SConfig::GetInstance().m_InterfaceConsole) Console->Open(true);
@@ -489,6 +492,10 @@ void CFrame::OnQuit(wxCommandEvent& WXUNUSED (event))
Close(true);
}
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Events
+// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+
void CFrame::OnClose(wxCloseEvent& event)
{
// Don't forget the skip or the window won't be destroyed
@@ -506,404 +513,30 @@ void CFrame::OnClose(wxCloseEvent& event)
}
}
-wxPanel* CFrame::CreateEmptyPanel()
-{
- wxPanel* Panel = new wxPanel(this, wxID_ANY);
- return Panel;
-}
-wxAuiNotebook* CFrame::CreateEmptyNotebook()
-{
- wxAuiNotebook* NB = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, DefaultNBStyle);
- return NB;
-}
+// Post events
-
-void CFrame::DoFullscreen(bool _F)
+// Warning: This may cause an endless loop if the event is propagated back to its parent
+void CFrame::PostEvent(wxCommandEvent& event)
{
- ShowFullScreen(_F);
- if (_F)
- {
- // Save the current mode before going to fullscreen
- AuiCurrent = m_Mgr->SavePerspective();
- m_Mgr->LoadPerspective(AuiFullscreen, true);
- }
- else
- {
- // Restore saved perspective
- m_Mgr->LoadPerspective(AuiCurrent, true);
- }
-}
+ event.Skip();
+ event.StopPropagation();
-int CFrame::Limit(int i, int Low, int High)
-{
- if (i < Low) return Low;
- if (i > High) return High;
- return i;
+ if (g_pCodeWindow
+ && event.GetId() >= IDM_INTERPRETER && event.GetId() <= IDM_ADDRBOX
+ && event.GetId() != IDM_JITUNLIMITED
+ )
+ wxPostEvent(g_pCodeWindow, event);
}
-
-void CFrame::SetSimplePaneSize()
+void CFrame::PostMenuEvent(wxMenuEvent& event)
{
- wxArrayInt Pane, Size;
- Pane.Add(0); Size.Add(50);
- Pane.Add(1); Size.Add(50);
-
- int iClientSize = this->GetSize().GetX();
- // Fix the pane sizes
- for (int i = 0; i < Pane.size(); i++)
- {
- // Check limits
- Size[i] = Limit(Size[i], 5, 95);
- // Produce pixel width from percentage width
- Size[i] = PercentageToPixels(Size[i], iClientSize);
- // Update size
- m_Mgr->GetPane(wxString::Format(wxT("Pane %i"), Pane[i])).BestSize(Size[i], -1).MinSize(Size[i], -1).MaxSize(Size[i], -1);
- }
- m_Mgr->Update();
- for (int i = 0; i < Pane.size(); i++)
- {
- // Remove the size limits
- m_Mgr->GetPane(wxString::Format(wxT("Pane %i"), Pane[i])).MinSize(-1, -1).MaxSize(-1, -1);
- }
+ if (g_pCodeWindow) wxPostEvent(g_pCodeWindow, event);
}
-
-void CFrame::SetPaneSize()
+void CFrame::PostUpdateUIEvent(wxUpdateUIEvent& event)
{
- if (Perspectives.size() <= ActivePerspective) return;
- int iClientX = this->GetSize().GetX(), iClientY = this->GetSize().GetY();
-
- for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
- {
- if (!m_Mgr->GetAllPanes().Item(i).IsOk()) return;
- if (Perspectives.at(ActivePerspective).Width.size() <= j || Perspectives.at(ActivePerspective).Height.size() <= j) continue;
- int W = Perspectives.at(ActivePerspective).Width.at(j), H = Perspectives.at(ActivePerspective).Height.at(j);
- // Check limits
- W = Limit(W, 5, 95); H = Limit(H, 5, 95);
- // Produce pixel width from percentage width
- W = PercentageToPixels(W, iClientX); H = PercentageToPixels(H, iClientY);
- m_Mgr->GetAllPanes().Item(i).BestSize(W,H).MinSize(W,H).MaxSize(W,H);
-
- j++;
- }
- }
- m_Mgr->Update();
-
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
- {
- m_Mgr->GetAllPanes().Item(i).MinSize(-1,-1).MaxSize(-1,-1);
- }
- }
+ if (g_pCodeWindow) wxPostEvent(g_pCodeWindow, event);
}
-// Debugging, show loose windows
-void CFrame::ListChildren()
-{
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- wxAuiNotebook * NB = NULL;
- Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
-
- for (int i = 0; i < this->GetChildren().size(); i++)
- {
- wxWindow * Win = this->GetChildren().Item(i)->GetData();
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(
- "%i: %s (%s) :: %s", i,
- Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
- //if (Win->GetName().IsSameAs(wxT("control")))
- if (Win->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- NB = (wxAuiNotebook*)Win;
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(" :: NB", NB->GetName().mb_str()).c_str());
- }
- else
- {
- NB = NULL;
- }
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("\n").c_str());
-
- Win = this->GetChildren().Item(i)->GetData();
- for (int j = 0; j < Win->GetChildren().size(); j++)
- {
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(
- " %i.%i: %s (%s) :: %s", i, j,
- Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
- if (NB)
- {
- if (j < NB->GetPageCount())
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(" :: %s", NB->GetPage(j)->GetName().mb_str()).c_str());
- }
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("\n").c_str());
-
- /*
- Win = this->GetChildren().Item(j)->GetData();
- for (int k = 0; k < Win->GetChildren().size(); k++)
- {
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(
- " %i.%i.%i: %s (%s) :: %s\n", i, j, k,
- Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
- }
- */
- }
- }
-
- Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
-
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("%i: %s\n", i, m_Mgr->GetAllPanes().Item(i).name.mb_str()).c_str());
-
- for (int j = 0; j < NB->GetPageCount(); j++)
- {
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("%i.%i: %s\n", i, j, NB->GetPageText(j).mb_str()).c_str());
- }
- }
-
- Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
-}
-
-void CFrame::ReloadPanes()
-{
- // Keep settings
- bool bConsole = SConfig::GetInstance().m_InterfaceConsole;
-
- //ListChildren();
- //ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- //Console->Log(LogTypes::LNOTICE, StringFromFormat("ReloadPanes begin: Sound %i\n", FindWindowByName(wxT("Sound"))).c_str());
-
- if (ActivePerspective >= Perspectives.size()) ActivePerspective = 0;
-
- // Check that there is a perspective
- if (Perspectives.size() > 0)
- {
- // Check that the perspective was saved once before
- if (Perspectives.at(ActivePerspective).Width.size() == 0) return;
-
- // Hide to avoid flickering
- HideAllNotebooks(true);
- // Close all pages
- ClosePages();
-
- CloseAllNotebooks();
- //m_Mgr->Update();
-
- // Create new panes with notebooks
- for (int i = 0; i < Perspectives.at(ActivePerspective).Width.size() - 1; i++)
- {
- m_Mgr->AddPane(CreateEmptyNotebook(), wxAuiPaneInfo().Hide());
- }
- HideAllNotebooks(true);
-
- // Names
- NamePanes();
- // Perspectives
- m_Mgr->LoadPerspective(Perspectives.at(ActivePerspective).Perspective, false);
- }
- // Create one pane by default
- else
- {
- m_Mgr->AddPane(CreateEmptyNotebook());
- }
-
- // Restore settings
- SConfig::GetInstance().m_InterfaceConsole = bConsole;
- // Load GUI settings
- g_pCodeWindow->Load();
- // Open notebook pages
- AddRemoveBlankPage();
- g_pCodeWindow->OpenPages();
- if (SConfig::GetInstance().m_InterfaceLogWindow) DoToggleWindow(IDM_LOGWINDOW, true);
- if (SConfig::GetInstance().m_InterfaceConsole) DoToggleWindow(IDM_CONSOLEWINDOW, true);
-
- //Console->Log(LogTypes::LNOTICE, StringFromFormat("ReloadPanes end: Sound %i\n", FindWindowByName(wxT("Sound"))).c_str());
- //ListChildren();
-}
-
-void CFrame::DoLoadPerspective()
-{
- ReloadPanes();
- // Restore the exact window sizes, which LoadPerspective doesn't always do
- SetPaneSize();
- // Show
- ShowAllNotebooks(true);
-
- /*
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(
- "Loaded: %s (%i panes, %i NBs)\n",
- Perspectives.at(ActivePerspective).Name.c_str(), m_Mgr->GetAllPanes().GetCount(), GetNotebookCount()).c_str());
- */
-}
-
-// Update the local perspectives array
-void CFrame::SaveLocal()
-{
- Perspectives.clear();
- std::vector VPerspectives;
- std::string _Perspectives;
-
- IniFile ini;
- ini.Load(DEBUGGER_CONFIG_FILE);
- ini.Get("Perspectives", "Perspectives", &_Perspectives, "");
- ini.Get("Perspectives", "Active", &ActivePerspective, 5);
- SplitString(_Perspectives, ",", VPerspectives);
-
- //
- for (int i = 0; i < VPerspectives.size(); i++)
- {
- SPerspectives Tmp;
- std::string _Section, _Perspective, _Width, _Height;
- std::vector _SWidth, _SHeight;
- Tmp.Name = VPerspectives.at(i);
- _Section = StringFromFormat("P - %s", Tmp.Name.c_str());
- if (!ini.Exists(_Section.c_str(), "Width")) continue;
-
- ini.Get(_Section.c_str(), "Perspective", &_Perspective, "");
- ini.Get(_Section.c_str(), "Width", &_Width, "");
- ini.Get(_Section.c_str(), "Height", &_Height, "");
-
- Tmp.Perspective = wxString::FromAscii(_Perspective.c_str());
-
- SplitString(_Width, ",", _SWidth);
- SplitString(_Height, ",", _SHeight);
- for (int i = 0; i < _SWidth.size(); i++)
- {
- int _Tmp;
- if (TryParseInt(_SWidth.at(0).c_str(), &_Tmp)) Tmp.Width.push_back(_Tmp);
- }
- for (int i = 0; i < _SHeight.size(); i++)
- {
- int _Tmp;
- if (TryParseInt(_SHeight.at(0).c_str(), &_Tmp)) Tmp.Height.push_back(_Tmp);
- }
- Perspectives.push_back(Tmp);
- }
-}
-void CFrame::Save()
-{
- if (Perspectives.size() == 0) return;
- if (ActivePerspective >= Perspectives.size()) ActivePerspective = 0;
-
- // Turn off edit before saving
- TogglePaneStyle(false);
- // Name panes
- NamePanes();
-
- // Get client size
- int iClientX = this->GetSize().GetX(), iClientY = this->GetSize().GetY();
-
- IniFile ini;
- ini.Load(DEBUGGER_CONFIG_FILE);
-
- std::string _Section = StringFromFormat("P - %s", Perspectives.at(ActivePerspective).Name.c_str());
- ini.Set(_Section.c_str(), "Perspective", m_Mgr->SavePerspective().mb_str());
-
- std::string SWidth = "", SHeight = "";
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
- {
- SWidth += StringFromFormat("%i", PixelsToPercentage(m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetX(), iClientX));
- SHeight += StringFromFormat("%i", PixelsToPercentage(m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetY(), iClientY));
- SWidth += ","; SHeight += ",";
- }
- }
- // Remove the ending ","
- SWidth = SWidth.substr(0, SWidth.length()-1); SHeight = SHeight.substr(0, SHeight.length()-1);
-
- ini.Set(_Section.c_str(), "Width", SWidth.c_str());
- ini.Set(_Section.c_str(), "Height", SHeight.c_str());
-
- // Save perspective names
- std::string STmp = "";
- for (int i = 0; i < Perspectives.size(); i++)
- {
- STmp += Perspectives.at(i).Name + ",";
- }
- STmp = STmp.substr(0, STmp.length()-1);
- ini.Set("Perspectives", "Perspectives", STmp.c_str());
- ini.Set("Perspectives", "Active", ActivePerspective);
- ini.Save(DEBUGGER_CONFIG_FILE);
-
- // Save notebook affiliations
- g_pCodeWindow->Save();
-
- // Update the local vector
- SaveLocal();
-
- /*
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- Console->Log(LogTypes::LCUSTOM, StringFromFormat(
- "Saved: %s (%i panes, %i NBs)\n",
- Perspectives.at(ActivePerspective).Name.c_str(), m_Mgr->GetAllPanes().GetCount(), GetNotebookCount()).c_str());
- */
-
- TogglePaneStyle(m_ToolBarAui->GetToolToggled(IDM_EDIT_PERSPECTIVES));
-}
-
-int CFrame::PercentageToPixels(int Percentage, int Total)
-{
- int Pixels = (int)((float)Total * ((float)Percentage / 100.0));
- return Pixels;
-}
-int CFrame::PixelsToPercentage(int Pixels, int Total)
-{
- int Percentage = (int)(((float)Pixels / (float)Total) * 100.0);
- return Percentage;
-}
-
-void CFrame::NamePanes()
-{
- for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
- {
- m_Mgr->GetAllPanes().Item(i).Name(wxString::Format(wxT("Pane %i"), j));
- m_Mgr->GetAllPanes().Item(i).Caption(wxString::Format(wxT("Pane %i"), j));
- j++;
- }
- }
-}
-void CFrame::AddPane()
-{
- m_Mgr->AddPane(CreateEmptyNotebook());
- NamePanes();
- AddRemoveBlankPage();
- m_Mgr->Update();
-}
-
-void CFrame::OnPaneClose(wxAuiManagerEvent& event)
-{
- event.Veto();
-
- wxAuiNotebook * nb = (wxAuiNotebook*)event.pane->window;
- if (!nb) return;
- if (! (nb->GetPageCount() == 0 || (nb->GetPageCount() == 1 && nb->GetPageText(0).IsSameAs(wxT("<>")))))
- {
- wxMessageBox(wxT("You can't close panes that have pages in them."), wxT("Notice"), wxOK, this);
- }
- else
- {
- /*
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("GetNotebookCount before: %i\n", GetNotebookCount()).c_str());
- */
-
- // Detach and delete the empty notebook
- event.pane->DestroyOnClose(true);
- m_Mgr->ClosePane(*event.pane);
-
- //Console->Log(LogTypes::LCUSTOM, StringFromFormat("GetNotebookCount after: %i\n", GetNotebookCount()).c_str());
- }
-
- m_Mgr->Update();
-}
-
-//---------------
// Host messages
#ifdef _WIN32
@@ -942,31 +575,6 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
}
}
-// Post events
-// Warning: This may cause an endless loop if the event is propagated back to its parent
-void CFrame::PostEvent(wxCommandEvent& event)
-{
- event.Skip();
- event.StopPropagation();
-
- if (g_pCodeWindow
- && event.GetId() >= IDM_INTERPRETER && event.GetId() <= IDM_ADDRBOX
- && event.GetId() != IDM_JITUNLIMITED
- )
- wxPostEvent(g_pCodeWindow, event);
-}
-void CFrame::PostMenuEvent(wxMenuEvent& event)
-{
- if (g_pCodeWindow) wxPostEvent(g_pCodeWindow, event);
-}
-void CFrame::PostUpdateUIEvent(wxUpdateUIEvent& event)
-{
- if (g_pCodeWindow) wxPostEvent(g_pCodeWindow, event);
-}
-
-// ---------------
-// Input
-
void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event))
{
// Show all platforms and regions if...
@@ -1181,4 +789,38 @@ void CFrame::Update()
#endif
}
}
-#endif
\ No newline at end of file
+#endif
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Functions
+// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+wxPanel* CFrame::CreateEmptyPanel()
+{
+ wxPanel* Panel = new wxPanel(this, wxID_ANY);
+ return Panel;
+}
+wxAuiNotebook* CFrame::CreateEmptyNotebook()
+{
+ wxAuiNotebook* NB = new wxAuiNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, DefaultNBStyle);
+ return NB;
+}
+
+
+void CFrame::DoFullscreen(bool _F)
+{
+ ShowFullScreen(_F);
+ if (_F)
+ {
+ // Save the current mode before going to fullscreen
+ AuiCurrent = m_Mgr->SavePerspective();
+ m_Mgr->LoadPerspective(AuiFullscreen, true);
+ }
+ else
+ {
+ // Restore saved perspective
+ m_Mgr->LoadPerspective(AuiCurrent, true);
+ }
+}
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/Source/Core/DolphinWX/Src/Frame.h b/Source/Core/DolphinWX/Src/Frame.h
index 186f06968e..6faaaacac7 100644
--- a/Source/Core/DolphinWX/Src/Frame.h
+++ b/Source/Core/DolphinWX/Src/Frame.h
@@ -52,6 +52,7 @@ class CFrame : public wxFrame
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
bool _UseDebugger = false,
+ bool ShowLogWindow = false,
long style = wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE);
void* GetRenderHandle()
diff --git a/Source/Core/DolphinWX/Src/FrameAui.cpp b/Source/Core/DolphinWX/Src/FrameAui.cpp
new file mode 100644
index 0000000000..7fe0e1d0b9
--- /dev/null
+++ b/Source/Core/DolphinWX/Src/FrameAui.cpp
@@ -0,0 +1,1043 @@
+// Copyright (C) 2003 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+
+/*
+1.1 Windows
+
+CFrame is the main parent window. Inside CFrame there is m_Panel which is the
+parent for the rendering window (when we render to the main window). In Windows
+the rendering window is created by giving CreateWindow() m_Panel->GetHandle()
+as parent window and creating a new child window to m_Panel. The new child
+window handle that is returned by CreateWindow() can be accessed from
+Core::GetWindowHandle().
+*/
+
+
+// FIXME: why doesn't it work on windows???
+#ifndef _WIN32
+#include "Common.h"
+#endif
+
+#include "Setup.h" // Common
+
+#if defined(HAVE_SFML) && HAVE_SFML || defined(_WIN32)
+#include "NetWindow.h"
+#endif
+
+#include "Common.h" // Common
+#include "FileUtil.h"
+#include "FileSearch.h"
+#include "Timer.h"
+
+#include "Globals.h" // Local
+#include "Frame.h"
+#include "ConfigMain.h"
+#include "PluginManager.h"
+#include "MemcardManager.h"
+#include "CheatsWindow.h"
+#include "InfoWindow.h"
+#include "AboutDolphin.h"
+#include "GameListCtrl.h"
+#include "BootManager.h"
+#include "LogWindow.h"
+#include "WxUtils.h"
+
+#include "ConfigManager.h" // Core
+#include "Core.h"
+#include "OnFrame.h"
+#include "HW/DVDInterface.h"
+#include "State.h"
+#include "VolumeHandler.h"
+#include "NANDContentLoader.h"
+
+#include // wxWidgets
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Aui events
+// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+
+
+void CFrame::OnManagerResize(wxAuiManagerEvent& event)
+{
+ event.Skip();
+ ResizeConsole();
+}
+void CFrame::OnResize(wxSizeEvent& event)
+{
+ event.Skip();
+ // fit frame content, not needed right now
+ //FitInside();
+ DoMoveIcons(); // In FrameWiimote.cpp
+}
+
+void CFrame::OnPaneClose(wxAuiManagerEvent& event)
+{
+ event.Veto();
+
+ wxAuiNotebook * nb = (wxAuiNotebook*)event.pane->window;
+ if (!nb) return;
+ if (! (nb->GetPageCount() == 0 || (nb->GetPageCount() == 1 && nb->GetPageText(0).IsSameAs(wxT("<>")))))
+ {
+ wxMessageBox(wxT("You can't close panes that have pages in them."), wxT("Notice"), wxOK, this);
+ }
+ else
+ {
+ /*
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("GetNotebookCount before: %i\n", GetNotebookCount()).c_str());
+ */
+
+ // Detach and delete the empty notebook
+ event.pane->DestroyOnClose(true);
+ m_Mgr->ClosePane(*event.pane);
+
+ //Console->Log(LogTypes::LCUSTOM, StringFromFormat("GetNotebookCount after: %i\n", GetNotebookCount()).c_str());
+ }
+
+ m_Mgr->Update();
+}
+
+
+// Enable and disable the log window
+void CFrame::OnToggleLogWindow(wxCommandEvent& event)
+{
+ SConfig::GetInstance().m_InterfaceLogWindow = event.IsChecked();
+ DoToggleWindow(event.GetId(), event.IsChecked());
+}
+void CFrame::ToggleLogWindow(bool Show, int i)
+{
+ if (Show)
+ {
+ if (!m_LogWindow) m_LogWindow = new CLogWindow(this);
+ #ifdef _WIN32
+ DoAddPage(m_LogWindow, i, "Log");
+ #else
+ m_LogWindow->Show();
+ #endif
+ }
+ else
+ {
+ #ifdef _WIN32
+ DoRemovePage(m_LogWindow);
+ #else
+ if (m_LogWindow) m_LogWindow->Show();
+ #endif
+ }
+
+ // Hide pane
+ if (!UseDebugger) HidePane();
+
+ // Make sure the check is updated (if wxw isn't calling this func)
+ //GetMenuBar()->FindItem(IDM_LOGWINDOW)->Check(Show);
+}
+// Enable and disable the console
+void CFrame::OnToggleConsole(wxCommandEvent& event)
+{
+ SConfig::GetInstance().m_InterfaceConsole = event.IsChecked();
+ DoToggleWindow(event.GetId(), event.IsChecked());
+}
+void CFrame::ToggleConsole(bool Show, int i)
+{
+ ConsoleListener *Console = LogManager::GetInstance()->getConsoleListener();
+
+ if (Show)
+ {
+ //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" >>> Show\n").c_str());
+
+ if (GetNotebookCount() == 0) return;
+ if (i < 0 || i > GetNotebookCount()-1) i = 0;
+
+ #ifdef _WIN32
+ wxWindow *Win = GetWxWindowHwnd(GetConsoleWindow());
+ if (Win && GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) return;
+ {
+ #else
+ Console->Open();
+ #endif
+
+ #ifdef _WIN32
+ if(!GetConsoleWindow()) Console->Open(); else ShowWindow(GetConsoleWindow(),SW_SHOW);
+ }
+ Win = GetWxWindowHwnd(GetConsoleWindow());
+ // Can we remove the border?
+ //Win->SetWindowStyleFlag(wxNO_BORDER);
+ //SetWindowLong(GetConsoleWindow(), GWL_STYLE, WS_VISIBLE);
+ // Create parent window
+ wxPanel * ConsoleParent = CreateEmptyPanel();
+ ::SetParent(GetConsoleWindow(), (HWND)ConsoleParent->GetHWND());
+ //Win->SetParent(ConsoleParent);
+ //if (Win) m_Mgr->GetAllPanes().Item(i)->AddPage(Win, wxT("Console"), true, aNormalFile );
+ if (Win) GetNotebook(i)->AddPage(ConsoleParent, wxT("Console"), true, aNormalFile );
+ #endif
+ }
+ else // hide
+ {
+ //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" >>> Show\n").c_str());
+
+ #ifdef _WIN32
+ // Hide
+ if(GetConsoleWindow()) ShowWindow(GetConsoleWindow(),SW_HIDE);
+ // Release the console to Windows
+ ::SetParent(GetConsoleWindow(), NULL);
+ // Destroy the empty parent of the console
+ DoRemovePageString(wxT("Console"), true, true);
+
+ #else
+ Console->Close();
+ #endif
+ }
+
+ // Hide pane
+ if (!UseDebugger) HidePane();
+
+ // Make sure the check is updated (if wxw isn't calling this func)
+ //GetMenuBar()->FindItem(IDM_CONSOLEWINDOW)->Check(Show);
+}
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Notebooks
+// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+#ifdef _WIN32
+wxWindow * CFrame::GetWxWindowHwnd(HWND hWnd)
+{
+ wxWindow * Win = new wxWindow();
+ Win->SetHWND((WXHWND)hWnd);
+ Win->AdoptAttributesFromHWND();
+ return Win;
+}
+#endif
+wxWindow * CFrame::GetWxWindow(wxString Name)
+{
+ #ifdef _WIN32
+ HWND hWnd = ::FindWindow(NULL, Name.c_str());
+ if (hWnd)
+ {
+ wxWindow * Win = new wxWindow();
+ Win->SetHWND((WXHWND)hWnd);
+ Win->AdoptAttributesFromHWND();
+ return Win;
+ }
+ else
+ #endif
+ if (FindWindowByName(Name))
+ {
+ return FindWindowByName(Name);
+ }
+ else if (FindWindowByLabel(Name))
+ {
+ return FindWindowByLabel(Name);
+ }
+ else if (GetNootebookPage(Name))
+ {
+ return GetNootebookPage(Name);
+ }
+ else
+ return NULL;
+}
+wxWindow * CFrame::GetNootebookPage(wxString Name)
+{
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ for(u32 j = 0; j < NB->GetPageCount(); j++)
+ {
+ if (NB->GetPageText(j).IsSameAs(Name)) return NB->GetPage(j);
+ }
+ }
+ return NULL;
+}
+void CFrame::AddRemoveBlankPage()
+{
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ for(u32 j = 0; j < NB->GetPageCount(); j++)
+ {
+ if (NB->GetPageText(j).IsSameAs(wxT("<>")) && NB->GetPageCount() > 1) NB->DeletePage(j);
+ }
+ if (NB->GetPageCount() == 0) NB->AddPage(CreateEmptyPanel(), wxT("<>"), true);
+ }
+}
+int CFrame::GetNootebookAffiliation(wxString Name)
+{
+ for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ for(u32 k = 0; k < NB->GetPageCount(); k++)
+ {
+ if (NB->GetPageText(k).IsSameAs(Name)) return j;
+ }
+ j++;
+ }
+ return -1;
+}
+void CFrame::ClosePages()
+{
+ DoToggleWindow(IDM_LOGWINDOW, false);
+ DoToggleWindow(IDM_CONSOLEWINDOW, false);
+ DoToggleWindow(IDM_CODEWINDOW, false);
+ DoToggleWindow(IDM_REGISTERWINDOW, false);
+ DoToggleWindow(IDM_BREAKPOINTWINDOW, false);
+ DoToggleWindow(IDM_MEMORYWINDOW, false);
+ DoToggleWindow(IDM_JITWINDOW, false);
+ DoToggleWindow(IDM_SOUNDWINDOW, false);
+ DoToggleWindow(IDM_VIDEOWINDOW, false);
+}
+void CFrame::DoToggleWindow(int Id, bool Show)
+{
+ switch (Id)
+ {
+ case IDM_LOGWINDOW: ToggleLogWindow(Show, UseDebugger ? g_pCodeWindow->iLogWindow : 0); break;
+ case IDM_CONSOLEWINDOW: ToggleConsole(Show, UseDebugger ? g_pCodeWindow->iConsoleWindow : 0); break;
+ }
+
+ if (!UseDebugger) return;
+
+ switch (Id)
+ {
+ case IDM_CODEWINDOW: g_pCodeWindow->OnToggleCodeWindow(Show, g_pCodeWindow->iCodeWindow); break;
+ case IDM_REGISTERWINDOW: g_pCodeWindow->OnToggleRegisterWindow(Show, g_pCodeWindow->iRegisterWindow); break;
+ case IDM_BREAKPOINTWINDOW: g_pCodeWindow->OnToggleBreakPointWindow(Show, g_pCodeWindow->iBreakpointWindow); break;
+ case IDM_MEMORYWINDOW: g_pCodeWindow->OnToggleMemoryWindow(Show, g_pCodeWindow->iMemoryWindow); break;
+ case IDM_JITWINDOW: g_pCodeWindow->OnToggleJitWindow(Show, g_pCodeWindow->iJitWindow); break;
+ case IDM_SOUNDWINDOW: g_pCodeWindow->OnToggleSoundWindow(Show, g_pCodeWindow->iSoundWindow); break;
+ case IDM_VIDEOWINDOW: g_pCodeWindow->OnToggleVideoWindow(Show, g_pCodeWindow->iVideoWindow); break;
+ }
+}
+void CFrame::OnNotebookPageChanged(wxAuiNotebookEvent& event)
+{
+ event.Skip();
+ if (!UseDebugger) return;
+
+ // Remove the blank page if any
+ AddRemoveBlankPage();
+
+ // Update the notebook affiliation
+ if(GetNootebookAffiliation(wxT("Log")) >= 0) g_pCodeWindow->iLogWindow = GetNootebookAffiliation(wxT("Log"));
+ if(GetNootebookAffiliation(wxT("Console")) >= 0) g_pCodeWindow->iConsoleWindow = GetNootebookAffiliation(wxT("Console"));
+ if(GetNootebookAffiliation(wxT("Code")) >= 0) g_pCodeWindow->iCodeWindow = GetNootebookAffiliation(wxT("Code"));
+ if(GetNootebookAffiliation(wxT("Registers")) >= 0) g_pCodeWindow->iRegisterWindow = GetNootebookAffiliation(wxT("Registers"));
+ if(GetNootebookAffiliation(wxT("Breakpoints")) >= 0) g_pCodeWindow->iBreakpointWindow = GetNootebookAffiliation(wxT("Breakpoints"));
+ if(GetNootebookAffiliation(wxT("JIT")) >= 0) g_pCodeWindow->iJitWindow = GetNootebookAffiliation(wxT("JIT"));
+ if(GetNootebookAffiliation(wxT("Memory")) >= 0) g_pCodeWindow->iMemoryWindow = GetNootebookAffiliation(wxT("Memory"));
+ if(GetNootebookAffiliation(wxT("Sound")) >= 0) g_pCodeWindow->iSoundWindow = GetNootebookAffiliation(wxT("Sound"));
+ if(GetNootebookAffiliation(wxT("Video")) >= 0) g_pCodeWindow->iVideoWindow = GetNootebookAffiliation(wxT("Video"));
+}
+void CFrame::OnNotebookPageClose(wxAuiNotebookEvent& event)
+{
+ // Override event
+ event.Veto();
+
+ wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
+
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Log"))) { GetMenuBar()->FindItem(IDM_LOGWINDOW)->Check(false); DoToggleWindow(IDM_LOGWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Console"))) { GetMenuBar()->FindItem(IDM_CONSOLEWINDOW)->Check(false); DoToggleWindow(IDM_CONSOLEWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Registers"))) { GetMenuBar()->FindItem(IDM_REGISTERWINDOW)->Check(false); DoToggleWindow(IDM_REGISTERWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Breakpoints"))) { GetMenuBar()->FindItem(IDM_BREAKPOINTWINDOW)->Check(false); DoToggleWindow(IDM_BREAKPOINTWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("JIT"))) { GetMenuBar()->FindItem(IDM_JITWINDOW)->Check(false); DoToggleWindow(IDM_JITWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Memory"))) { GetMenuBar()->FindItem(IDM_MEMORYWINDOW)->Check(false); DoToggleWindow(IDM_MEMORYWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Sound"))) { GetMenuBar()->FindItem(IDM_SOUNDWINDOW)->Check(false); DoToggleWindow(IDM_SOUNDWINDOW, false); }
+ if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Video"))) { GetMenuBar()->FindItem(IDM_VIDEOWINDOW)->Check(false); DoToggleWindow(IDM_VIDEOWINDOW, false); }
+}
+void CFrame::OnAllowNotebookDnD(wxAuiNotebookEvent& event)
+{
+ event.Skip();
+ event.Allow();
+ wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
+ // If we drag away the last one the tab bar goes away and we can't add any panes to it
+ //if (Ctrl->GetPageCount() == 1) Ctrl->AddPage(CreateEmptyPanel(), wxT("<>"), true);
+}
+void CFrame::HidePane()
+{
+ // Get the first notebook
+ wxAuiNotebook * NB;
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ }
+ if (NB->GetPageCount() == 0)
+ m_Mgr->GetPane(wxT("Pane 1")).Hide();
+ else
+ m_Mgr->GetPane(wxT("Pane 1")).Show();
+ m_Mgr->Update();
+
+ SetSimplePaneSize();
+}
+void CFrame::DoRemovePageString(wxString Str, bool Hide, bool Destroy)
+{
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ for (int j = 0; j < NB->GetPageCount(); j++)
+ {
+ if (NB->GetPageText(j).IsSameAs(Str))
+ {
+ if (!Destroy)
+ {
+ // Reparent to avoid destruction if the notebook is closed and destroyed
+ wxWindow * Win = NB->GetPage(j);
+ NB->RemovePage(j);
+ Win->Reparent(this);
+ }
+ else
+ {
+ NB->DeletePage(j);
+ }
+ //if (Hide) Win->Hide();
+ break;
+ }
+ }
+ }
+
+}
+wxAuiNotebook * CFrame::GetNotebook(int NBId)
+{
+ int Ret = 0;
+ for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ if (j == NBId) return (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ j++;
+ }
+ return NULL;
+}
+void CFrame::ShowAllNotebooks(bool Window)
+{
+ for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ if (Window)
+ m_Mgr->GetAllPanes().Item(i).Show();
+ else
+ m_Mgr->GetAllPanes().Item(i).window->Hide();
+ }
+ }
+ m_Mgr->Update();
+}
+void CFrame::HideAllNotebooks(bool Window)
+{
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ if (Window)
+ m_Mgr->GetAllPanes().Item(i).Hide();
+ else
+ m_Mgr->GetAllPanes().Item(i).window->Hide();
+ }
+ }
+ m_Mgr->Update();
+}
+// Close all panes with notebooks
+void CFrame::CloseAllNotebooks()
+{
+ int i = 0;
+ while(GetNotebookCount() > 0)
+ {
+ if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ m_Mgr->GetAllPanes().Item(i).DestroyOnClose(true);
+ m_Mgr->ClosePane(m_Mgr->GetAllPanes().Item(i));
+ //m_Mgr->GetAllPanes().Item(i).window->Hide();
+ //m_Mgr->DetachPane(m_Mgr->GetAllPanes().Item(i).window);
+
+ i = 0;
+ //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" %i Pane\n", i).c_str());
+ }
+ else
+ {
+ i++;
+ //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" %i No pane\n", i).c_str());
+ }
+
+ }
+}
+int CFrame::GetNotebookCount()
+{
+ int Ret = 0;
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) Ret++;
+ }
+ return Ret;
+}
+void CFrame::DoAddPage(wxWindow * Win, int i, std::string Name)
+{
+ if (!Win) return;
+ if (GetNotebookCount() == 0) return;
+ if (i < 0 || i > GetNotebookCount()-1) i = 0;
+ if (Win && GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) return;
+ GetNotebook(i)->AddPage(Win, wxString::FromAscii(Name.c_str()), true, aNormalFile );
+
+ /*
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("Add: %s\n", Name.c_str()).c_str());
+ */
+}
+void CFrame::DoRemovePage(wxWindow * Win, bool Hide)
+{
+ // If m_dialog is NULL, then possibly the system didn't report the checked menu item status correctly.
+ // It should be true just after the menu item was selected, if there was no modeless dialog yet.
+ //wxASSERT(Win != NULL);
+
+ if (Win)
+ {
+ for (int i = 0; i < GetNotebookCount(); i++)
+ {
+ if (GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) GetNotebook(i)->RemovePage(GetNotebook(i)->GetPageIndex(Win));
+ }
+ // Reparent to avoid destruction if the notebook is closed and destroyed
+ Win->Reparent(this);
+
+ if (Hide) Win->Hide();
+ }
+}
+
+// Enable and disable the toolbar
+void CFrame::OnToggleToolbar(wxCommandEvent& event)
+{
+ SConfig::GetInstance().m_InterfaceToolbar = 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("TBAui")).Show(); }
+ m_Mgr->Update();
+ }
+ else
+ {
+ m_Mgr->GetPane(wxT("TBMain")).Hide();
+ if (UseDebugger) { m_Mgr->GetPane(wxT("TBDebug")).Hide(); m_Mgr->GetPane(wxT("TBAui")).Hide(); }
+ m_Mgr->Update();
+ }
+}
+
+// Enable and disable the status bar
+void CFrame::OnToggleStatusbar(wxCommandEvent& event)
+{
+ SConfig::GetInstance().m_InterfaceStatusbar = event.IsChecked();
+ if (SConfig::GetInstance().m_InterfaceStatusbar == true)
+ m_pStatusBar->Show();
+ else
+ m_pStatusBar->Hide();
+
+ this->SendSizeEvent();
+}
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Functions
+// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+void CFrame::OnSelectPerspective(wxCommandEvent& event)
+{
+ int _Selection = event.GetId() - IDM_PERSPECTIVES_0;
+ if (Perspectives.size() <= _Selection) _Selection = 0;
+ ActivePerspective = _Selection;
+ DoLoadPerspective();
+}
+void CFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& event)
+{
+ event.Skip();
+
+ if (event.IsDropDownClicked())
+ {
+ wxAuiToolBar* tb = static_cast(event.GetEventObject());
+
+ tb->SetToolSticky(event.GetId(), true);
+
+ // create the popup menu
+ wxMenu menuPopup;
+ wxMenuItem* m1 = new wxMenuItem(&menuPopup, IDM_ADD_PERSPECTIVE, wxT("Create new perspective"));
+ menuPopup.Append(m1);
+
+ if (Perspectives.size() > 0)
+ {
+ menuPopup.Append(new wxMenuItem(&menuPopup));
+ for (int i = 0; i < Perspectives.size(); i++)
+ {
+ wxMenuItem* Item = new wxMenuItem(&menuPopup, IDM_PERSPECTIVES_0 + i, wxString::FromAscii(Perspectives.at(i).Name.c_str()), wxT(""), wxITEM_CHECK);
+ menuPopup.Append(Item);
+ if (i == ActivePerspective) Item->Check(true);
+ }
+ }
+
+ // line up our menu with the button
+ wxRect rect = tb->GetToolRect(event.GetId());
+ wxPoint pt = tb->ClientToScreen(rect.GetBottomLeft());
+ pt = ScreenToClient(pt);
+
+ PopupMenu(&menuPopup, pt);
+
+ // make sure the button is "un-stuck"
+ tb->SetToolSticky(event.GetId(), false);
+ }
+}
+void CFrame::OnCreatePerspective(wxCommandEvent& event)
+{
+ wxTextEntryDialog dlg(this, wxT("Enter a name for the new perspective:"), wxT("Create new perspective"));
+
+ dlg.SetValue(wxString::Format(wxT("Perspective %u"), unsigned(Perspectives.size() + 1)));
+ if (dlg.ShowModal() != wxID_OK) return;
+
+ SPerspectives Tmp;
+ Tmp.Name = dlg.GetValue().mb_str();
+ Perspectives.push_back(Tmp);
+}
+
+void CFrame::TogglePaneStyle(bool On)
+{
+ wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
+ for (int i = 0; i < AllPanes.GetCount(); ++i)
+ {
+ wxAuiPaneInfo& Pane = AllPanes.Item(i);
+ if (Pane.window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ Pane.CaptionVisible(On);
+ Pane.Show();
+ }
+ }
+ m_Mgr->Update();
+}
+void CFrame::ToggleNotebookStyle(long Style)
+{
+ wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
+ for (int i = 0, Count = AllPanes.GetCount(); i < Count; ++i)
+ {
+ wxAuiPaneInfo& Pane = AllPanes.Item(i);
+ if (Pane.window->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ wxAuiNotebook* NB = (wxAuiNotebook*)Pane.window;
+ NB->SetWindowStyleFlag(NB->GetWindowStyleFlag() ^ Style);
+ NB->Refresh();
+ }
+ }
+}
+void CFrame::ResizeConsole()
+{
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ for(u32 j = 0; j <= wxDynamicCast(m_Mgr->GetAllPanes().Item(i).window, wxAuiNotebook)->GetPageCount(); j++)
+ {
+ if (wxDynamicCast(m_Mgr->GetAllPanes().Item(i).window, wxAuiNotebook)->GetPageText(j).IsSameAs(wxT("Console")))
+ {
+ #ifdef _WIN32
+ // ----------------------------------------------------------
+ // Get OS version
+ // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
+ int wxBorder, Border, LowerBorder, MenuBar, ScrollBar, WidthReduction;
+ OSVERSIONINFO osvi;
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+ GetVersionEx(&osvi);
+ if (osvi.dwMajorVersion == 6) // Vista (same as 7?)
+ {
+ wxBorder = 2;
+ Border = 4;
+ LowerBorder = 6;
+ MenuBar = 30; // Including upper border
+ ScrollBar = 19;
+ }
+ else // XP
+ {
+ wxBorder = 2;
+ Border = 4;
+ LowerBorder = 6;
+ MenuBar = 30;
+ ScrollBar = 19;
+ }
+ WidthReduction = 30 - Border;
+ // --------------------------------
+ // Get the client size
+ int X = m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetX();
+ int Y = m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetY();
+ int InternalWidth = X - wxBorder*2 - ScrollBar;
+ int InternalHeight = Y - wxBorder*2;
+ int WindowWidth = InternalWidth + Border*2;
+ int WindowHeight = InternalHeight;
+ // Resize buffer
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ //Console->Log(LogTypes::LNOTICE, StringFromFormat("Window WxH:%i %i\n", X, Y).c_str());
+ Console->PixelSpace(0,0, InternalWidth,InternalHeight, false);
+ // Move the window to hide the border
+ MoveWindow(GetConsoleWindow(), -Border-wxBorder,-MenuBar-wxBorder, WindowWidth + 100,WindowHeight, true);
+ // Move it to the bottom of the view order so that it doesn't hide the notebook tabs
+ // ...
+ #endif
+ }
+ }
+ }
+}
+
+
+int CFrame::Limit(int i, int Low, int High)
+{
+ if (i < Low) return Low;
+ if (i > High) return High;
+ return i;
+}
+
+void CFrame::SetSimplePaneSize()
+{
+ wxArrayInt Pane, Size;
+ Pane.Add(0); Size.Add(50);
+ Pane.Add(1); Size.Add(50);
+
+ int iClientSize = this->GetSize().GetX();
+ // Fix the pane sizes
+ for (int i = 0; i < Pane.size(); i++)
+ {
+ // Check limits
+ Size[i] = Limit(Size[i], 5, 95);
+ // Produce pixel width from percentage width
+ Size[i] = PercentageToPixels(Size[i], iClientSize);
+ // Update size
+ m_Mgr->GetPane(wxString::Format(wxT("Pane %i"), Pane[i])).BestSize(Size[i], -1).MinSize(Size[i], -1).MaxSize(Size[i], -1);
+ }
+ m_Mgr->Update();
+ for (int i = 0; i < Pane.size(); i++)
+ {
+ // Remove the size limits
+ m_Mgr->GetPane(wxString::Format(wxT("Pane %i"), Pane[i])).MinSize(-1, -1).MaxSize(-1, -1);
+ }
+}
+
+void CFrame::SetPaneSize()
+{
+ if (Perspectives.size() <= ActivePerspective) return;
+ int iClientX = this->GetSize().GetX(), iClientY = this->GetSize().GetY();
+
+ for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).IsOk()) return;
+ if (Perspectives.at(ActivePerspective).Width.size() <= j || Perspectives.at(ActivePerspective).Height.size() <= j) continue;
+ int W = Perspectives.at(ActivePerspective).Width.at(j), H = Perspectives.at(ActivePerspective).Height.at(j);
+ // Check limits
+ W = Limit(W, 5, 95); H = Limit(H, 5, 95);
+ // Produce pixel width from percentage width
+ W = PercentageToPixels(W, iClientX); H = PercentageToPixels(H, iClientY);
+ m_Mgr->GetAllPanes().Item(i).BestSize(W,H).MinSize(W,H).MaxSize(W,H);
+
+ j++;
+ }
+ }
+ m_Mgr->Update();
+
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
+ {
+ m_Mgr->GetAllPanes().Item(i).MinSize(-1,-1).MaxSize(-1,-1);
+ }
+ }
+}
+
+// Debugging, show loose windows
+void CFrame::ListChildren()
+{
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ wxAuiNotebook * NB = NULL;
+
+ Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
+
+ for (int i = 0; i < this->GetChildren().size(); i++)
+ {
+ wxWindow * Win = this->GetChildren().Item(i)->GetData();
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(
+ "%i: %s (%s) :: %s", i,
+ Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
+ //if (Win->GetName().IsSameAs(wxT("control")))
+ if (Win->IsKindOf(CLASSINFO(wxAuiNotebook)))
+ {
+ NB = (wxAuiNotebook*)Win;
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(" :: NB", NB->GetName().mb_str()).c_str());
+ }
+ else
+ {
+ NB = NULL;
+ }
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("\n").c_str());
+
+ Win = this->GetChildren().Item(i)->GetData();
+ for (int j = 0; j < Win->GetChildren().size(); j++)
+ {
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(
+ " %i.%i: %s (%s) :: %s", i, j,
+ Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
+ if (NB)
+ {
+ if (j < NB->GetPageCount())
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(" :: %s", NB->GetPage(j)->GetName().mb_str()).c_str());
+ }
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("\n").c_str());
+
+ /*
+ Win = this->GetChildren().Item(j)->GetData();
+ for (int k = 0; k < Win->GetChildren().size(); k++)
+ {
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(
+ " %i.%i.%i: %s (%s) :: %s\n", i, j, k,
+ Win->GetName().mb_str(), Win->GetLabel().mb_str(), Win->GetParent()->GetName().mb_str()).c_str());
+ }
+ */
+ }
+ }
+
+ Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
+
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
+ wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("%i: %s\n", i, m_Mgr->GetAllPanes().Item(i).name.mb_str()).c_str());
+
+ for (int j = 0; j < NB->GetPageCount(); j++)
+ {
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat("%i.%i: %s\n", i, j, NB->GetPageText(j).mb_str()).c_str());
+ }
+ }
+
+ Console->Log(LogTypes::LCUSTOM, "--------------------------------------------------------------------\n");
+}
+
+void CFrame::ReloadPanes()
+{
+ // Keep settings
+ bool bConsole = SConfig::GetInstance().m_InterfaceConsole;
+
+ //ListChildren();
+ //ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ //Console->Log(LogTypes::LNOTICE, StringFromFormat("ReloadPanes begin: Sound %i\n", FindWindowByName(wxT("Sound"))).c_str());
+
+ if (ActivePerspective >= Perspectives.size()) ActivePerspective = 0;
+
+ // Check that there is a perspective
+ if (Perspectives.size() > 0)
+ {
+ // Check that the perspective was saved once before
+ if (Perspectives.at(ActivePerspective).Width.size() == 0) return;
+
+ // Hide to avoid flickering
+ HideAllNotebooks(true);
+ // Close all pages
+ ClosePages();
+
+ CloseAllNotebooks();
+ //m_Mgr->Update();
+
+ // Create new panes with notebooks
+ for (int i = 0; i < Perspectives.at(ActivePerspective).Width.size() - 1; i++)
+ {
+ m_Mgr->AddPane(CreateEmptyNotebook(), wxAuiPaneInfo().Hide());
+ }
+ HideAllNotebooks(true);
+
+ // Names
+ NamePanes();
+ // Perspectives
+ m_Mgr->LoadPerspective(Perspectives.at(ActivePerspective).Perspective, false);
+ }
+ // Create one pane by default
+ else
+ {
+ m_Mgr->AddPane(CreateEmptyNotebook());
+ }
+
+ // Restore settings
+ SConfig::GetInstance().m_InterfaceConsole = bConsole;
+ // Load GUI settings
+ g_pCodeWindow->Load();
+ // Open notebook pages
+ AddRemoveBlankPage();
+ g_pCodeWindow->OpenPages();
+ if (SConfig::GetInstance().m_InterfaceLogWindow) DoToggleWindow(IDM_LOGWINDOW, true);
+ if (SConfig::GetInstance().m_InterfaceConsole) DoToggleWindow(IDM_CONSOLEWINDOW, true);
+
+ //Console->Log(LogTypes::LNOTICE, StringFromFormat("ReloadPanes end: Sound %i\n", FindWindowByName(wxT("Sound"))).c_str());
+ //ListChildren();
+}
+
+void CFrame::DoLoadPerspective()
+{
+ ReloadPanes();
+ // Restore the exact window sizes, which LoadPerspective doesn't always do
+ SetPaneSize();
+ // Show
+ ShowAllNotebooks(true);
+
+ /*
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(
+ "Loaded: %s (%i panes, %i NBs)\n",
+ Perspectives.at(ActivePerspective).Name.c_str(), m_Mgr->GetAllPanes().GetCount(), GetNotebookCount()).c_str());
+ */
+}
+
+// Update the local perspectives array
+void CFrame::SaveLocal()
+{
+ Perspectives.clear();
+ std::vector VPerspectives;
+ std::string _Perspectives;
+
+ IniFile ini;
+ ini.Load(DEBUGGER_CONFIG_FILE);
+ ini.Get("Perspectives", "Perspectives", &_Perspectives, "");
+ ini.Get("Perspectives", "Active", &ActivePerspective, 5);
+ SplitString(_Perspectives, ",", VPerspectives);
+
+ //
+ for (int i = 0; i < VPerspectives.size(); i++)
+ {
+ SPerspectives Tmp;
+ std::string _Section, _Perspective, _Width, _Height;
+ std::vector _SWidth, _SHeight;
+ Tmp.Name = VPerspectives.at(i);
+ _Section = StringFromFormat("P - %s", Tmp.Name.c_str());
+ if (!ini.Exists(_Section.c_str(), "Width")) continue;
+
+ ini.Get(_Section.c_str(), "Perspective", &_Perspective, "");
+ ini.Get(_Section.c_str(), "Width", &_Width, "");
+ ini.Get(_Section.c_str(), "Height", &_Height, "");
+
+ Tmp.Perspective = wxString::FromAscii(_Perspective.c_str());
+
+ SplitString(_Width, ",", _SWidth);
+ SplitString(_Height, ",", _SHeight);
+ for (int i = 0; i < _SWidth.size(); i++)
+ {
+ int _Tmp;
+ if (TryParseInt(_SWidth.at(0).c_str(), &_Tmp)) Tmp.Width.push_back(_Tmp);
+ }
+ for (int i = 0; i < _SHeight.size(); i++)
+ {
+ int _Tmp;
+ if (TryParseInt(_SHeight.at(0).c_str(), &_Tmp)) Tmp.Height.push_back(_Tmp);
+ }
+ Perspectives.push_back(Tmp);
+ }
+}
+void CFrame::Save()
+{
+ if (Perspectives.size() == 0) return;
+ if (ActivePerspective >= Perspectives.size()) ActivePerspective = 0;
+
+ // Turn off edit before saving
+ TogglePaneStyle(false);
+ // Name panes
+ NamePanes();
+
+ // Get client size
+ int iClientX = this->GetSize().GetX(), iClientY = this->GetSize().GetY();
+
+ IniFile ini;
+ ini.Load(DEBUGGER_CONFIG_FILE);
+
+ std::string _Section = StringFromFormat("P - %s", Perspectives.at(ActivePerspective).Name.c_str());
+ ini.Set(_Section.c_str(), "Perspective", m_Mgr->SavePerspective().mb_str());
+
+ std::string SWidth = "", SHeight = "";
+ for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
+ {
+ SWidth += StringFromFormat("%i", PixelsToPercentage(m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetX(), iClientX));
+ SHeight += StringFromFormat("%i", PixelsToPercentage(m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetY(), iClientY));
+ SWidth += ","; SHeight += ",";
+ }
+ }
+ // Remove the ending ","
+ SWidth = SWidth.substr(0, SWidth.length()-1); SHeight = SHeight.substr(0, SHeight.length()-1);
+
+ ini.Set(_Section.c_str(), "Width", SWidth.c_str());
+ ini.Set(_Section.c_str(), "Height", SHeight.c_str());
+
+ // Save perspective names
+ std::string STmp = "";
+ for (int i = 0; i < Perspectives.size(); i++)
+ {
+ STmp += Perspectives.at(i).Name + ",";
+ }
+ STmp = STmp.substr(0, STmp.length()-1);
+ ini.Set("Perspectives", "Perspectives", STmp.c_str());
+ ini.Set("Perspectives", "Active", ActivePerspective);
+ ini.Save(DEBUGGER_CONFIG_FILE);
+
+ // Save notebook affiliations
+ g_pCodeWindow->Save();
+
+ // Update the local vector
+ SaveLocal();
+
+ /*
+ ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
+ Console->Log(LogTypes::LCUSTOM, StringFromFormat(
+ "Saved: %s (%i panes, %i NBs)\n",
+ Perspectives.at(ActivePerspective).Name.c_str(), m_Mgr->GetAllPanes().GetCount(), GetNotebookCount()).c_str());
+ */
+
+ TogglePaneStyle(m_ToolBarAui->GetToolToggled(IDM_EDIT_PERSPECTIVES));
+}
+
+int CFrame::PercentageToPixels(int Percentage, int Total)
+{
+ int Pixels = (int)((float)Total * ((float)Percentage / 100.0));
+ return Pixels;
+}
+int CFrame::PixelsToPercentage(int Pixels, int Total)
+{
+ int Percentage = (int)(((float)Pixels / (float)Total) * 100.0);
+ return Percentage;
+}
+
+void CFrame::NamePanes()
+{
+ for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
+ {
+ if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiToolBar)))
+ {
+ m_Mgr->GetAllPanes().Item(i).Name(wxString::Format(wxT("Pane %i"), j));
+ m_Mgr->GetAllPanes().Item(i).Caption(wxString::Format(wxT("Pane %i"), j));
+ j++;
+ }
+ }
+}
+void CFrame::AddPane()
+{
+ m_Mgr->AddPane(CreateEmptyNotebook());
+ NamePanes();
+ AddRemoveBlankPage();
+ m_Mgr->Update();
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp
index 6aca0a745f..0531b9a1de 100644
--- a/Source/Core/DolphinWX/Src/FrameTools.cpp
+++ b/Source/Core/DolphinWX/Src/FrameTools.cpp
@@ -721,147 +721,6 @@ void CFrame::OnToolBar(wxCommandEvent& event)
break;
}
}
-void CFrame::OnSelectPerspective(wxCommandEvent& event)
-{
- int _Selection = event.GetId() - IDM_PERSPECTIVES_0;
- if (Perspectives.size() <= _Selection) _Selection = 0;
- ActivePerspective = _Selection;
- DoLoadPerspective();
-}
-void CFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& event)
-{
- event.Skip();
-
- if (event.IsDropDownClicked())
- {
- wxAuiToolBar* tb = static_cast(event.GetEventObject());
-
- tb->SetToolSticky(event.GetId(), true);
-
- // create the popup menu
- wxMenu menuPopup;
- wxMenuItem* m1 = new wxMenuItem(&menuPopup, IDM_ADD_PERSPECTIVE, wxT("Create new perspective"));
- menuPopup.Append(m1);
-
- if (Perspectives.size() > 0)
- {
- menuPopup.Append(new wxMenuItem(&menuPopup));
- for (int i = 0; i < Perspectives.size(); i++)
- {
- wxMenuItem* Item = new wxMenuItem(&menuPopup, IDM_PERSPECTIVES_0 + i, wxString::FromAscii(Perspectives.at(i).Name.c_str()), wxT(""), wxITEM_CHECK);
- menuPopup.Append(Item);
- if (i == ActivePerspective) Item->Check(true);
- }
- }
-
- // line up our menu with the button
- wxRect rect = tb->GetToolRect(event.GetId());
- wxPoint pt = tb->ClientToScreen(rect.GetBottomLeft());
- pt = ScreenToClient(pt);
-
- PopupMenu(&menuPopup, pt);
-
- // make sure the button is "un-stuck"
- tb->SetToolSticky(event.GetId(), false);
- }
-}
-void CFrame::OnCreatePerspective(wxCommandEvent& event)
-{
- wxTextEntryDialog dlg(this, wxT("Enter a name for the new perspective:"), wxT("Create new perspective"));
-
- dlg.SetValue(wxString::Format(wxT("Perspective %u"), unsigned(Perspectives.size() + 1)));
- if (dlg.ShowModal() != wxID_OK) return;
-
- SPerspectives Tmp;
- Tmp.Name = dlg.GetValue().mb_str();
- Perspectives.push_back(Tmp);
-}
-
-void CFrame::TogglePaneStyle(bool On)
-{
- wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
- for (int i = 0; i < AllPanes.GetCount(); ++i)
- {
- wxAuiPaneInfo& Pane = AllPanes.Item(i);
- if (Pane.window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- Pane.CaptionVisible(On);
- Pane.Show();
- }
- }
- m_Mgr->Update();
-}
-void CFrame::ToggleNotebookStyle(long Style)
-{
- wxAuiPaneInfoArray& AllPanes = m_Mgr->GetAllPanes();
- for (int i = 0, Count = AllPanes.GetCount(); i < Count; ++i)
- {
- wxAuiPaneInfo& Pane = AllPanes.Item(i);
- if (Pane.window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- wxAuiNotebook* NB = (wxAuiNotebook*)Pane.window;
- NB->SetWindowStyleFlag(NB->GetWindowStyleFlag() ^ Style);
- NB->Refresh();
- }
- }
-}
-void CFrame::ResizeConsole()
-{
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- for(u32 j = 0; j <= wxDynamicCast(m_Mgr->GetAllPanes().Item(i).window, wxAuiNotebook)->GetPageCount(); j++)
- {
- if (wxDynamicCast(m_Mgr->GetAllPanes().Item(i).window, wxAuiNotebook)->GetPageText(j).IsSameAs(wxT("Console")))
- {
- #ifdef _WIN32
- // ----------------------------------------------------------
- // Get OS version
- // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
- int wxBorder, Border, LowerBorder, MenuBar, ScrollBar, WidthReduction;
- OSVERSIONINFO osvi;
- ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&osvi);
- if (osvi.dwMajorVersion == 6) // Vista (same as 7?)
- {
- wxBorder = 2;
- Border = 4;
- LowerBorder = 6;
- MenuBar = 30; // Including upper border
- ScrollBar = 19;
- }
- else // XP
- {
- wxBorder = 2;
- Border = 4;
- LowerBorder = 6;
- MenuBar = 30;
- ScrollBar = 19;
- }
- WidthReduction = 30 - Border;
- // --------------------------------
- // Get the client size
- int X = m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetX();
- int Y = m_Mgr->GetAllPanes().Item(i).window->GetClientSize().GetY();
- int InternalWidth = X - wxBorder*2 - ScrollBar;
- int InternalHeight = Y - wxBorder*2;
- int WindowWidth = InternalWidth + Border*2;
- int WindowHeight = InternalHeight;
- // Resize buffer
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- //Console->Log(LogTypes::LNOTICE, StringFromFormat("Window WxH:%i %i\n", X, Y).c_str());
- Console->PixelSpace(0,0, InternalWidth,InternalHeight, false);
- // Move the window to hide the border
- MoveWindow(GetConsoleWindow(), -Border-wxBorder,-MenuBar-wxBorder, WindowWidth + 100,WindowHeight, true);
- // Move it to the bottom of the view order so that it doesn't hide the notebook tabs
- // ...
- #endif
- }
- }
- }
-}
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -992,465 +851,13 @@ void CFrame::OnFrameSkip(wxCommandEvent& event)
/////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-// Notebooks
-// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
-#ifdef _WIN32
-wxWindow * CFrame::GetWxWindowHwnd(HWND hWnd)
-{
- wxWindow * Win = new wxWindow();
- Win->SetHWND((WXHWND)hWnd);
- Win->AdoptAttributesFromHWND();
- return Win;
-}
-#endif
-wxWindow * CFrame::GetWxWindow(wxString Name)
-{
- #ifdef _WIN32
- HWND hWnd = ::FindWindow(NULL, Name.c_str());
- if (hWnd)
- {
- wxWindow * Win = new wxWindow();
- Win->SetHWND((WXHWND)hWnd);
- Win->AdoptAttributesFromHWND();
- return Win;
- }
- else
- #endif
- if (FindWindowByName(Name))
- {
- return FindWindowByName(Name);
- }
- else if (FindWindowByLabel(Name))
- {
- return FindWindowByLabel(Name);
- }
- else if (GetNootebookPage(Name))
- {
- return GetNootebookPage(Name);
- }
- else
- return NULL;
-}
-wxWindow * CFrame::GetNootebookPage(wxString Name)
-{
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- for(u32 j = 0; j < NB->GetPageCount(); j++)
- {
- if (NB->GetPageText(j).IsSameAs(Name)) return NB->GetPage(j);
- }
- }
- return NULL;
-}
-void CFrame::AddRemoveBlankPage()
-{
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- for(u32 j = 0; j < NB->GetPageCount(); j++)
- {
- if (NB->GetPageText(j).IsSameAs(wxT("<>")) && NB->GetPageCount() > 1) NB->DeletePage(j);
- }
- if (NB->GetPageCount() == 0) NB->AddPage(CreateEmptyPanel(), wxT("<>"), true);
- }
-}
-int CFrame::GetNootebookAffiliation(wxString Name)
-{
- for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- for(u32 k = 0; k < NB->GetPageCount(); k++)
- {
- if (NB->GetPageText(k).IsSameAs(Name)) return j;
- }
- j++;
- }
- return -1;
-}
-void CFrame::ClosePages()
-{
- DoToggleWindow(IDM_LOGWINDOW, false);
- DoToggleWindow(IDM_CONSOLEWINDOW, false);
- DoToggleWindow(IDM_CODEWINDOW, false);
- DoToggleWindow(IDM_REGISTERWINDOW, false);
- DoToggleWindow(IDM_BREAKPOINTWINDOW, false);
- DoToggleWindow(IDM_MEMORYWINDOW, false);
- DoToggleWindow(IDM_JITWINDOW, false);
- DoToggleWindow(IDM_SOUNDWINDOW, false);
- DoToggleWindow(IDM_VIDEOWINDOW, false);
-}
-void CFrame::DoToggleWindow(int Id, bool Show)
-{
- switch (Id)
- {
- case IDM_LOGWINDOW: ToggleLogWindow(Show, UseDebugger ? g_pCodeWindow->iLogWindow : 0); break;
- case IDM_CONSOLEWINDOW: ToggleConsole(Show, UseDebugger ? g_pCodeWindow->iConsoleWindow : 0); break;
- }
-
- if (!UseDebugger) return;
-
- switch (Id)
- {
- case IDM_CODEWINDOW: g_pCodeWindow->OnToggleCodeWindow(Show, g_pCodeWindow->iCodeWindow); break;
- case IDM_REGISTERWINDOW: g_pCodeWindow->OnToggleRegisterWindow(Show, g_pCodeWindow->iRegisterWindow); break;
- case IDM_BREAKPOINTWINDOW: g_pCodeWindow->OnToggleBreakPointWindow(Show, g_pCodeWindow->iBreakpointWindow); break;
- case IDM_MEMORYWINDOW: g_pCodeWindow->OnToggleMemoryWindow(Show, g_pCodeWindow->iMemoryWindow); break;
- case IDM_JITWINDOW: g_pCodeWindow->OnToggleJitWindow(Show, g_pCodeWindow->iJitWindow); break;
- case IDM_SOUNDWINDOW: g_pCodeWindow->OnToggleSoundWindow(Show, g_pCodeWindow->iSoundWindow); break;
- case IDM_VIDEOWINDOW: g_pCodeWindow->OnToggleVideoWindow(Show, g_pCodeWindow->iVideoWindow); break;
- }
-}
-void CFrame::OnNotebookPageChanged(wxAuiNotebookEvent& event)
-{
- event.Skip();
- if (!UseDebugger) return;
-
- // Remove the blank page if any
- AddRemoveBlankPage();
-
- // Update the notebook affiliation
- if(GetNootebookAffiliation(wxT("Log")) >= 0) g_pCodeWindow->iLogWindow = GetNootebookAffiliation(wxT("Log"));
- if(GetNootebookAffiliation(wxT("Console")) >= 0) g_pCodeWindow->iConsoleWindow = GetNootebookAffiliation(wxT("Console"));
- if(GetNootebookAffiliation(wxT("Code")) >= 0) g_pCodeWindow->iCodeWindow = GetNootebookAffiliation(wxT("Code"));
- if(GetNootebookAffiliation(wxT("Registers")) >= 0) g_pCodeWindow->iRegisterWindow = GetNootebookAffiliation(wxT("Registers"));
- if(GetNootebookAffiliation(wxT("Breakpoints")) >= 0) g_pCodeWindow->iBreakpointWindow = GetNootebookAffiliation(wxT("Breakpoints"));
- if(GetNootebookAffiliation(wxT("JIT")) >= 0) g_pCodeWindow->iJitWindow = GetNootebookAffiliation(wxT("JIT"));
- if(GetNootebookAffiliation(wxT("Memory")) >= 0) g_pCodeWindow->iMemoryWindow = GetNootebookAffiliation(wxT("Memory"));
- if(GetNootebookAffiliation(wxT("Sound")) >= 0) g_pCodeWindow->iSoundWindow = GetNootebookAffiliation(wxT("Sound"));
- if(GetNootebookAffiliation(wxT("Video")) >= 0) g_pCodeWindow->iVideoWindow = GetNootebookAffiliation(wxT("Video"));
-}
-void CFrame::OnNotebookPageClose(wxAuiNotebookEvent& event)
-{
- // Override event
- event.Veto();
-
- wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
-
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Log"))) { GetMenuBar()->FindItem(IDM_LOGWINDOW)->Check(false); DoToggleWindow(IDM_LOGWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Console"))) { GetMenuBar()->FindItem(IDM_CONSOLEWINDOW)->Check(false); DoToggleWindow(IDM_CONSOLEWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Registers"))) { GetMenuBar()->FindItem(IDM_REGISTERWINDOW)->Check(false); DoToggleWindow(IDM_REGISTERWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Breakpoints"))) { GetMenuBar()->FindItem(IDM_BREAKPOINTWINDOW)->Check(false); DoToggleWindow(IDM_BREAKPOINTWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("JIT"))) { GetMenuBar()->FindItem(IDM_JITWINDOW)->Check(false); DoToggleWindow(IDM_JITWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Memory"))) { GetMenuBar()->FindItem(IDM_MEMORYWINDOW)->Check(false); DoToggleWindow(IDM_MEMORYWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Sound"))) { GetMenuBar()->FindItem(IDM_SOUNDWINDOW)->Check(false); DoToggleWindow(IDM_SOUNDWINDOW, false); }
- if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Video"))) { GetMenuBar()->FindItem(IDM_VIDEOWINDOW)->Check(false); DoToggleWindow(IDM_VIDEOWINDOW, false); }
-}
-void CFrame::OnAllowNotebookDnD(wxAuiNotebookEvent& event)
-{
- event.Skip();
- event.Allow();
- wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
- // If we drag away the last one the tab bar goes away and we can't add any panes to it
- //if (Ctrl->GetPageCount() == 1) Ctrl->AddPage(CreateEmptyPanel(), wxT("<>"), true);
-}
-void CFrame::HidePane()
-{
- // Get the first notebook
- wxAuiNotebook * NB;
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- }
- if (NB->GetPageCount() == 0)
- m_Mgr->GetPane(wxT("Pane 1")).Hide();
- else
- m_Mgr->GetPane(wxT("Pane 1")).Show();
- m_Mgr->Update();
-
- SetSimplePaneSize();
-}
-void CFrame::DoRemovePageString(wxString Str, bool Hide, bool Destroy)
-{
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- for (int j = 0; j < NB->GetPageCount(); j++)
- {
- if (NB->GetPageText(j).IsSameAs(Str))
- {
- if (!Destroy)
- {
- // Reparent to avoid destruction if the notebook is closed and destroyed
- wxWindow * Win = NB->GetPage(j);
- NB->RemovePage(j);
- Win->Reparent(this);
- }
- else
- {
- NB->DeletePage(j);
- }
- //if (Hide) Win->Hide();
- break;
- }
- }
- }
-
-}
-wxAuiNotebook * CFrame::GetNotebook(int NBId)
-{
- int Ret = 0;
- for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (!m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) continue;
- if (j == NBId) return (wxAuiNotebook*)m_Mgr->GetAllPanes().Item(i).window;
- j++;
- }
- return NULL;
-}
-void CFrame::ShowAllNotebooks(bool Window)
-{
- for (int i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- if (Window)
- m_Mgr->GetAllPanes().Item(i).Show();
- else
- m_Mgr->GetAllPanes().Item(i).window->Hide();
- }
- }
- m_Mgr->Update();
-}
-void CFrame::HideAllNotebooks(bool Window)
-{
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- if (Window)
- m_Mgr->GetAllPanes().Item(i).Hide();
- else
- m_Mgr->GetAllPanes().Item(i).window->Hide();
- }
- }
- m_Mgr->Update();
-}
-// Close all panes with notebooks
-void CFrame::CloseAllNotebooks()
-{
- int i = 0;
- while(GetNotebookCount() > 0)
- {
- if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook)))
- {
- m_Mgr->GetAllPanes().Item(i).DestroyOnClose(true);
- m_Mgr->ClosePane(m_Mgr->GetAllPanes().Item(i));
- //m_Mgr->GetAllPanes().Item(i).window->Hide();
- //m_Mgr->DetachPane(m_Mgr->GetAllPanes().Item(i).window);
-
- i = 0;
- //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" %i Pane\n", i).c_str());
- }
- else
- {
- i++;
- //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" %i No pane\n", i).c_str());
- }
-
- }
-}
-int CFrame::GetNotebookCount()
-{
- int Ret = 0;
- for (int i = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
- {
- if (m_Mgr->GetAllPanes().Item(i).window->IsKindOf(CLASSINFO(wxAuiNotebook))) Ret++;
- }
- return Ret;
-}
-void CFrame::DoAddPage(wxWindow * Win, int i, std::string Name)
-{
- if (!Win) return;
- if (GetNotebookCount() == 0) return;
- if (i < 0 || i > GetNotebookCount()-1) i = 0;
- if (Win && GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) return;
- GetNotebook(i)->AddPage(Win, wxString::FromAscii(Name.c_str()), true, aNormalFile );
-
- /*
- ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
- Console->Log(LogTypes::LCUSTOM, StringFromFormat("Add: %s\n", Name.c_str()).c_str());
- */
-}
-void CFrame::DoRemovePage(wxWindow * Win, bool Hide)
-{
- // If m_dialog is NULL, then possibly the system didn't report the checked menu item status correctly.
- // It should be true just after the menu item was selected, if there was no modeless dialog yet.
- //wxASSERT(Win != NULL);
-
- if (Win)
- {
- for (int i = 0; i < GetNotebookCount(); i++)
- {
- if (GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) GetNotebook(i)->RemovePage(GetNotebook(i)->GetPageIndex(Win));
- }
- // Reparent to avoid destruction if the notebook is closed and destroyed
- Win->Reparent(this);
-
- if (Hide) Win->Hide();
- }
-}
-
-// Enable and disable the toolbar
-void CFrame::OnToggleToolbar(wxCommandEvent& event)
-{
- SConfig::GetInstance().m_InterfaceToolbar = 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("TBAui")).Show(); }
- m_Mgr->Update();
- }
- else
- {
- m_Mgr->GetPane(wxT("TBMain")).Hide();
- if (UseDebugger) { m_Mgr->GetPane(wxT("TBDebug")).Hide(); m_Mgr->GetPane(wxT("TBAui")).Hide(); }
- m_Mgr->Update();
- }
-}
-
-// Enable and disable the status bar
-void CFrame::OnToggleStatusbar(wxCommandEvent& event)
-{
- SConfig::GetInstance().m_InterfaceStatusbar = event.IsChecked();
- if (SConfig::GetInstance().m_InterfaceStatusbar == true)
- m_pStatusBar->Show();
- else
- m_pStatusBar->Hide();
-
- this->SendSizeEvent();
-}
-
-// Enable and disable the log window
-void CFrame::OnToggleLogWindow(wxCommandEvent& event)
-{
- SConfig::GetInstance().m_InterfaceLogWindow = event.IsChecked();
- DoToggleWindow(event.GetId(), event.IsChecked());
-}
-void CFrame::ToggleLogWindow(bool Show, int i)
-{
- if (Show)
- {
- if (!m_LogWindow) m_LogWindow = new CLogWindow(this);
- #ifdef _WIN32
- DoAddPage(m_LogWindow, i, "Log");
- #else
- m_LogWindow->Show();
- #endif
- }
- else
- {
- #ifdef _WIN32
- DoRemovePage(m_LogWindow);
- #else
- if (m_LogWindow) m_LogWindow->Show();
- #endif
- }
-
- // Hide pane
- if (!UseDebugger) HidePane();
-
- // Make sure the check is updated (if wxw isn't calling this func)
- //GetMenuBar()->FindItem(IDM_LOGWINDOW)->Check(Show);
-}
-// Enable and disable the console
-void CFrame::OnToggleConsole(wxCommandEvent& event)
-{
- SConfig::GetInstance().m_InterfaceConsole = event.IsChecked();
- DoToggleWindow(event.GetId(), event.IsChecked());
-}
-void CFrame::ToggleConsole(bool Show, int i)
-{
- ConsoleListener *Console = LogManager::GetInstance()->getConsoleListener();
-
- if (Show)
- {
- //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" >>> Show\n").c_str());
-
- if (GetNotebookCount() == 0) return;
- if (i < 0 || i > GetNotebookCount()-1) i = 0;
-
- #ifdef _WIN32
- wxWindow *Win = GetWxWindowHwnd(GetConsoleWindow());
- if (Win && GetNotebook(i)->GetPageIndex(Win) != wxNOT_FOUND) return;
- {
- #else
- Console->Open();
- #endif
-
- #ifdef _WIN32
- if(!GetConsoleWindow()) Console->Open(); else ShowWindow(GetConsoleWindow(),SW_SHOW);
- }
- Win = GetWxWindowHwnd(GetConsoleWindow());
- // Can we remove the border?
- //Win->SetWindowStyleFlag(wxNO_BORDER);
- //SetWindowLong(GetConsoleWindow(), GWL_STYLE, WS_VISIBLE);
- // Create parent window
- wxPanel * ConsoleParent = CreateEmptyPanel();
- ::SetParent(GetConsoleWindow(), (HWND)ConsoleParent->GetHWND());
- //Win->SetParent(ConsoleParent);
- //if (Win) m_Mgr->GetAllPanes().Item(i)->AddPage(Win, wxT("Console"), true, aNormalFile );
- if (Win) GetNotebook(i)->AddPage(ConsoleParent, wxT("Console"), true, aNormalFile );
- #endif
- }
- else // hide
- {
- //Console->Log(LogTypes::LCUSTOM, StringFromFormat(" >>> Show\n").c_str());
-
- #ifdef _WIN32
- // Hide
- if(GetConsoleWindow()) ShowWindow(GetConsoleWindow(),SW_HIDE);
- // Release the console to Windows
- ::SetParent(GetConsoleWindow(), NULL);
- // Destroy the empty parent of the console
- DoRemovePageString(wxT("Console"), true, true);
-
- #else
- Console->Close();
- #endif
- }
-
- // Hide pane
- if (!UseDebugger) HidePane();
-
- // Make sure the check is updated (if wxw isn't calling this func)
- //GetMenuBar()->FindItem(IDM_CONSOLEWINDOW)->Check(Show);
-}
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// GUI
// ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
-void CFrame::OnManagerResize(wxAuiManagerEvent& event)
-{
- event.Skip();
- ResizeConsole();
-}
-void CFrame::OnResize(wxSizeEvent& event)
-{
- event.Skip();
- // fit frame content, not needed right now
- //FitInside();
- DoMoveIcons(); // In FrameWiimote.cpp
-}
// Update the enabled/disabled status
void CFrame::UpdateGUI()
{
- return;
-
// Save status
bool initialized = Core::isRunning();
bool running = Core::GetState() == Core::CORE_RUN;
diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp
index 74f198e409..ab8be10128 100644
--- a/Source/Core/DolphinWX/Src/Main.cpp
+++ b/Source/Core/DolphinWX/Src/Main.cpp
@@ -89,6 +89,7 @@ bool DolphinApp::OnInit()
NOTICE_LOG(BOOT, "Starting application");
// Declarations and definitions
bool UseDebugger = false;
+ bool UseLogger = false;
bool LoadElf = false;
wxString ElfFile;
@@ -197,6 +198,9 @@ bool DolphinApp::OnInit()
{
wxCMD_LINE_SWITCH, _T("d"), _T("debugger"), _T("Opens the debugger")
},
+ {
+ wxCMD_LINE_SWITCH, _T("l"), _T("logger"), _T("Opens The Logger")
+ },
{
wxCMD_LINE_OPTION, _T("e"), _T("elf"), _T("Loads an elf file"),
wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL
@@ -258,6 +262,7 @@ bool DolphinApp::OnInit()
}
UseDebugger = parser.Found(_T("debugger"));
+ UseLogger = parser.Found(_T("logger"));
LoadElf = parser.Found(_T("elf"), &ElfFile);
if( LoadElf && ElfFile == wxEmptyString )
@@ -292,13 +297,13 @@ bool DolphinApp::OnInit()
if (UseDebugger)
{
- main_frame = new CFrame((wxFrame*) NULL, wxID_ANY, wxString::FromAscii(title),
- wxPoint(x, y), wxSize(w, h), true);
+ main_frame = new CFrame((wxFrame*)NULL, wxID_ANY, wxString::FromAscii(title),
+ wxPoint(x, y), wxSize(w, h), true, UseLogger);
}
else
{
- main_frame = new CFrame((wxFrame*) NULL, wxID_ANY, wxString::FromAscii(title),
- wxPoint(100, 100), wxSize(800, 600));
+ main_frame = new CFrame((wxFrame*)NULL, wxID_ANY, wxString::FromAscii(title),
+ wxPoint(100, 100), wxSize(800, 600), false, UseLogger);
}
// ---------------------------------------------------
diff --git a/Source/Core/DolphinWX/Src/SConscript b/Source/Core/DolphinWX/Src/SConscript
index e1aaee59e8..348975b3ff 100644
--- a/Source/Core/DolphinWX/Src/SConscript
+++ b/Source/Core/DolphinWX/Src/SConscript
@@ -27,8 +27,10 @@ if wxenv['HAVE_WX']:
'ARCodeAddEdit.cpp',
'ConfigMain.cpp',
'Frame.cpp',
- 'LogWindow.cpp',
+ 'FrameAui.cpp',
'FrameTools.cpp',
+ 'FrameWiimote.cpp',
+ 'LogWindow.cpp',
'GameListCtrl.cpp',
'Globals.cpp',
'ISOFile.cpp',
@@ -39,7 +41,6 @@ if wxenv['HAVE_WX']:
'CheatsWindow.cpp',
'InfoWindow.cpp',
'stdafx.cpp',
- 'FrameWiimote.cpp',
'WxUtils.cpp',
]