mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-15 16:59:18 +01:00
GUI: Dock plugin windows
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4069 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
b0a09c55b4
commit
1b6b56692d
@ -61,6 +61,11 @@ class CCodeWindow
|
|||||||
void UpdateToolbar(wxAuiToolBar *);
|
void UpdateToolbar(wxAuiToolBar *);
|
||||||
void UpdateNotebook(int, wxAuiNotebook *);
|
void UpdateNotebook(int, wxAuiNotebook *);
|
||||||
wxBitmap page_bmp;
|
wxBitmap page_bmp;
|
||||||
|
#ifdef _WIN32
|
||||||
|
wxWindow * GetWxWindow(wxString);
|
||||||
|
#endif
|
||||||
|
wxWindow * GetNootebookPage(wxString);
|
||||||
|
void DoToggleWindow(int,bool);
|
||||||
|
|
||||||
void Load_(IniFile &file);
|
void Load_(IniFile &file);
|
||||||
void Load(IniFile &file);
|
void Load(IniFile &file);
|
||||||
@ -131,7 +136,7 @@ class CCodeWindow
|
|||||||
void OnCodeViewChange(wxCommandEvent &event);
|
void OnCodeViewChange(wxCommandEvent &event);
|
||||||
void SingleCPUStep();
|
void SingleCPUStep();
|
||||||
|
|
||||||
void OnAddrBoxChange(wxCommandEvent& event);
|
void OnAddrBoxChange(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnToggleWindow(wxCommandEvent& event);
|
void OnToggleWindow(wxCommandEvent& event);
|
||||||
void OnToggleRegisterWindow(bool,wxAuiNotebook*);
|
void OnToggleRegisterWindow(bool,wxAuiNotebook*);
|
||||||
|
@ -325,11 +325,54 @@ void CCodeWindow::OnChangeFont(wxCommandEvent& event)
|
|||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Toogle windows
|
// Toogle windows
|
||||||
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
||||||
|
wxWindow * CCodeWindow::GetNootebookPage(wxString Name)
|
||||||
|
{
|
||||||
|
if (!m_NB0 || !m_NB1) return NULL;
|
||||||
|
|
||||||
|
for(int i = 0; i <= m_NB0->GetPageCount(); i++)
|
||||||
|
{
|
||||||
|
if (m_NB0->GetPageText(i).IsSameAs(Name)) return m_NB0->GetPage(i);
|
||||||
|
}
|
||||||
|
for(int i = 0; i <= m_NB1->GetPageCount(); i++)
|
||||||
|
{
|
||||||
|
if (m_NB1->GetPageText(i).IsSameAs(Name)) return m_NB1->GetPage(i);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
wxWindow * CCodeWindow::GetWxWindow(wxString Name)
|
||||||
|
{
|
||||||
|
HWND hWnd = ::FindWindow(NULL, Name.c_str());
|
||||||
|
if (hWnd)
|
||||||
|
{
|
||||||
|
wxWindow * Win = new wxWindow();
|
||||||
|
Win->SetHWND((WXHWND)hWnd);
|
||||||
|
Win->AdoptAttributesFromHWND();
|
||||||
|
return Win;
|
||||||
|
}
|
||||||
|
else if (GetParent()->GetParent()->FindWindowByName(Name))
|
||||||
|
{
|
||||||
|
return GetParent()->GetParent()->FindWindowByName(Name);
|
||||||
|
}
|
||||||
|
else if (GetParent()->GetParent()->FindWindowByLabel(Name))
|
||||||
|
{
|
||||||
|
return GetParent()->GetParent()->FindWindowByLabel(Name);
|
||||||
|
}
|
||||||
|
else if (GetNootebookPage(Name))
|
||||||
|
{
|
||||||
|
return GetNootebookPage(Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
void CCodeWindow::OnToggleWindow(wxCommandEvent& event)
|
void CCodeWindow::OnToggleWindow(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
bool Show = GetMenuBar()->IsChecked(event.GetId());
|
DoToggleWindow(event.GetId(), GetMenuBar()->IsChecked(event.GetId()));
|
||||||
|
}
|
||||||
switch (event.GetId())
|
void CCodeWindow::DoToggleWindow(int Id, bool Show)
|
||||||
|
{
|
||||||
|
switch (Id)
|
||||||
{
|
{
|
||||||
case IDM_REGISTERWINDOW: OnToggleRegisterWindow(Show, m_NB0); break;
|
case IDM_REGISTERWINDOW: OnToggleRegisterWindow(Show, m_NB0); break;
|
||||||
case IDM_BREAKPOINTWINDOW: OnToggleBreakPointWindow(Show, m_NB1); break;
|
case IDM_BREAKPOINTWINDOW: OnToggleBreakPointWindow(Show, m_NB1); break;
|
||||||
@ -337,9 +380,8 @@ void CCodeWindow::OnToggleWindow(wxCommandEvent& event)
|
|||||||
case IDM_JITWINDOW: OnToggleJitWindow(Show, m_NB0); break;
|
case IDM_JITWINDOW: OnToggleJitWindow(Show, m_NB0); break;
|
||||||
case IDM_SOUNDWINDOW: OnToggleSoundWindow(Show, m_NB1); break;
|
case IDM_SOUNDWINDOW: OnToggleSoundWindow(Show, m_NB1); break;
|
||||||
case IDM_VIDEOWINDOW: OnToggleVideoWindow(Show, m_NB1); break;
|
case IDM_VIDEOWINDOW: OnToggleVideoWindow(Show, m_NB1); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCodeWindow::OnToggleRegisterWindow(bool Show, wxAuiNotebook * _NB)
|
void CCodeWindow::OnToggleRegisterWindow(bool Show, wxAuiNotebook * _NB)
|
||||||
{
|
{
|
||||||
if (Show)
|
if (Show)
|
||||||
@ -441,17 +483,40 @@ void CCodeWindow::OnToggleMemoryWindow(bool Show, wxAuiNotebook * _NB)
|
|||||||
//Toggle Sound Debugging Window
|
//Toggle Sound Debugging Window
|
||||||
void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
|
void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
|
||||||
{
|
{
|
||||||
|
//ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
|
||||||
|
|
||||||
if (Show)
|
if (Show)
|
||||||
{
|
{
|
||||||
// TODO: add some kind of if() check here to?
|
#ifdef _WIN32
|
||||||
CPluginManager::GetInstance().OpenDebug(
|
wxWindow *Win = GetWxWindow(wxT("Sound"));
|
||||||
GetHandle(),
|
if (Win && _NB->GetPageIndex(Win) != wxNOT_FOUND) return;
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin.c_str(),
|
|
||||||
PLUGIN_TYPE_DSP, true // DSP, show
|
{
|
||||||
);
|
#endif
|
||||||
|
//Console->Log(LogTypes::LNOTICE, StringFromFormat("OpenDebug\n").c_str());
|
||||||
|
CPluginManager::GetInstance().OpenDebug(
|
||||||
|
GetParent()->GetParent()->GetHandle(),
|
||||||
|
//GetHandle(),
|
||||||
|
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDSPPlugin.c_str(),
|
||||||
|
PLUGIN_TYPE_DSP, true // DSP, show
|
||||||
|
);
|
||||||
|
#ifdef _WIN32
|
||||||
|
}
|
||||||
|
|
||||||
|
Win = GetWxWindow(wxT("Sound"));
|
||||||
|
if (Win)
|
||||||
|
{
|
||||||
|
//Console->Log(LogTypes::LNOTICE, StringFromFormat("AddPage\n").c_str());
|
||||||
|
_NB->AddPage(Win, wxT("Sound"), true, page_bmp );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else // hide
|
else // hide
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
wxWindow *Win = GetWxWindow(wxT("Sound"));
|
||||||
|
if (Win) _NB->RemovePage(_NB->GetPageIndex(Win));
|
||||||
|
#endif
|
||||||
// Close the sound dll that has an open debugger
|
// Close the sound dll that has an open debugger
|
||||||
CPluginManager::GetInstance().OpenDebug(
|
CPluginManager::GetInstance().OpenDebug(
|
||||||
GetHandle(),
|
GetHandle(),
|
||||||
@ -461,7 +526,6 @@ void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Toggle Video Debugging Window
|
// Toggle Video Debugging Window
|
||||||
void CCodeWindow::OnToggleVideoWindow(bool Show, wxAuiNotebook * _NB)
|
void CCodeWindow::OnToggleVideoWindow(bool Show, wxAuiNotebook * _NB)
|
||||||
{
|
{
|
||||||
@ -469,22 +533,31 @@ void CCodeWindow::OnToggleVideoWindow(bool Show, wxAuiNotebook * _NB)
|
|||||||
|
|
||||||
if (Show)
|
if (Show)
|
||||||
{
|
{
|
||||||
// It works now, but I'll keep this message in case the problem reappears
|
#ifdef _WIN32
|
||||||
/*if(Core::GetState() == Core::CORE_UNINITIALIZED)
|
wxWindow *Win = GetWxWindow(wxT("Video"));
|
||||||
{
|
if (Win && _NB->GetPageIndex(Win) != wxNOT_FOUND) return;
|
||||||
wxMessageBox(_T("Warning, opening this window before a game is started \n\
|
|
||||||
may cause a crash when a game is later started. Todo: figure out why and fix it."), wxT("OpenGL Debugging Window"));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// TODO: add some kind of if() check here to?
|
{
|
||||||
CPluginManager::GetInstance().OpenDebug(
|
#endif
|
||||||
GetHandle(),
|
// Show and/or create the window
|
||||||
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin.c_str(),
|
CPluginManager::GetInstance().OpenDebug(
|
||||||
PLUGIN_TYPE_VIDEO, true // Video, show
|
GetHandle(),
|
||||||
);
|
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoPlugin.c_str(),
|
||||||
|
PLUGIN_TYPE_VIDEO, true // Video, show
|
||||||
|
);
|
||||||
|
#ifdef _WIN32
|
||||||
|
}
|
||||||
|
|
||||||
|
Win = GetWxWindow(wxT("Video"));
|
||||||
|
if (Win) _NB->AddPage(Win, wxT("Video"), true, page_bmp );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else // hide
|
else // hide
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
wxWindow *Win = GetWxWindow(wxT("Video"));
|
||||||
|
if (Win) _NB->RemovePage(_NB->GetPageIndex(Win));
|
||||||
|
#endif
|
||||||
// Close the video dll that has an open debugger
|
// Close the video dll that has an open debugger
|
||||||
CPluginManager::GetInstance().OpenDebug(
|
CPluginManager::GetInstance().OpenDebug(
|
||||||
GetHandle(),
|
GetHandle(),
|
||||||
|
@ -521,13 +521,18 @@ void CFrame::OnAllowNotebookDnD(wxAuiNotebookEvent& event)
|
|||||||
}
|
}
|
||||||
void CFrame::OnNotebookPageClose(wxAuiNotebookEvent& event)
|
void CFrame::OnNotebookPageClose(wxAuiNotebookEvent& event)
|
||||||
{
|
{
|
||||||
event.Skip();
|
// Don't skip the event, override it
|
||||||
|
//event.Skip();
|
||||||
|
event.Veto();
|
||||||
|
|
||||||
wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
|
wxAuiNotebook* Ctrl = (wxAuiNotebook*)event.GetEventObject();
|
||||||
|
|
||||||
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Registers"))) { GetMenuBar()->FindItem(IDM_REGISTERWINDOW)->Check(false); g_pCodeWindow->m_RegisterWindow = NULL; }
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Registers"))) { GetMenuBar()->FindItem(IDM_REGISTERWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_REGISTERWINDOW, false); }
|
||||||
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Breakpoints"))) { GetMenuBar()->FindItem(IDM_BREAKPOINTWINDOW)->Check(false); g_pCodeWindow->m_BreakpointWindow = NULL; }
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Breakpoints"))) { GetMenuBar()->FindItem(IDM_BREAKPOINTWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_BREAKPOINTWINDOW, false); }
|
||||||
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("JIT"))) { GetMenuBar()->FindItem(IDM_JITWINDOW)->Check(false); g_pCodeWindow->m_JitWindow = NULL; }
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("JIT"))) { GetMenuBar()->FindItem(IDM_JITWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_JITWINDOW, false); }
|
||||||
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Memory"))) { GetMenuBar()->FindItem(IDM_MEMORYWINDOW)->Check(false); g_pCodeWindow->m_MemoryWindow = NULL; }
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Memory"))) { GetMenuBar()->FindItem(IDM_MEMORYWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_MEMORYWINDOW, false); }
|
||||||
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Sound"))) { GetMenuBar()->FindItem(IDM_SOUNDWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_SOUNDWINDOW, false); }
|
||||||
|
if (Ctrl->GetPageText(event.GetSelection()).IsSameAs(wxT("Video"))) { GetMenuBar()->FindItem(IDM_VIDEOWINDOW)->Check(false); g_pCodeWindow->DoToggleWindow(IDM_VIDEOWINDOW, false); }
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFrame::DoFullscreen(bool _F)
|
void CFrame::DoFullscreen(bool _F)
|
||||||
|
@ -225,13 +225,12 @@ void DSPDebuggerHLE::Load(IniFile& _IniFile)
|
|||||||
// -------------
|
// -------------
|
||||||
void DSPDebuggerHLE::CreateGUIControls()
|
void DSPDebuggerHLE::CreateGUIControls()
|
||||||
{
|
{
|
||||||
SetTitle(wxT("Sound Debugging"));
|
//SetTitle(wxT("Sound"));
|
||||||
|
|
||||||
// Basic settings
|
// Basic settings
|
||||||
SetIcon(wxNullIcon);
|
//SetIcon(wxNullIcon);
|
||||||
SetSize(8, 8, 200, 100); // These will become the minimin sizes allowed by resizing
|
//SetSize(8, 8, 200, 100); // These will become the minimin sizes allowed by resizing
|
||||||
Center();
|
//Center();
|
||||||
|
|
||||||
|
|
||||||
// Declarations
|
// Declarations
|
||||||
wxBoxSizer * m_MainSizer, * sMain, *_sMail, * sBlock;
|
wxBoxSizer * m_MainSizer, * sMain, *_sMail, * sBlock;
|
||||||
|
@ -60,10 +60,10 @@ class DSPDebuggerHLE : public wxDialog
|
|||||||
public:
|
public:
|
||||||
DSPDebuggerHLE(wxWindow *parent,
|
DSPDebuggerHLE(wxWindow *parent,
|
||||||
wxWindowID id = 1,
|
wxWindowID id = 1,
|
||||||
const wxString &title = wxT("Sound Debugger"),
|
const wxString &title = wxT("Sound"),
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE);
|
long style = wxNO_BORDER);
|
||||||
|
|
||||||
virtual ~DSPDebuggerHLE();
|
virtual ~DSPDebuggerHLE();
|
||||||
|
|
||||||
|
@ -30,10 +30,10 @@ class GFXDebuggerOGL : public wxDialog
|
|||||||
public:
|
public:
|
||||||
GFXDebuggerOGL(wxWindow *parent,
|
GFXDebuggerOGL(wxWindow *parent,
|
||||||
wxWindowID id = 1,
|
wxWindowID id = 1,
|
||||||
const wxString &title = wxT("OGL Debugguer"),
|
const wxString &title = wxT("Video"),
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE);
|
long style = wxNO_BORDER);
|
||||||
|
|
||||||
virtual ~GFXDebuggerOGL();
|
virtual ~GFXDebuggerOGL();
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ void DllDebugger(HWND _hParent, bool Show)
|
|||||||
m_DebuggerFrame = new GFXDebuggerOGL(GetParentedWxWindow(_hParent));
|
m_DebuggerFrame = new GFXDebuggerOGL(GetParentedWxWindow(_hParent));
|
||||||
|
|
||||||
if (Show)
|
if (Show)
|
||||||
m_DebuggerFrame->ShowModal();
|
m_DebuggerFrame->Show();
|
||||||
else
|
else
|
||||||
m_DebuggerFrame->Hide();
|
m_DebuggerFrame->Hide();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user