GUI: Save notebook association for pages

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4079 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
John Peterson
2009-08-27 15:53:19 +00:00
parent 5f3752d358
commit 7b5b911c34
8 changed files with 194 additions and 150 deletions

View File

@ -265,36 +265,36 @@ void CCodeWindow::Load()
DebuggerFont.SetNativeFontInfoUserDesc(wxString::FromAscii(fontDesc.c_str()));
// Decide what windows to use
ini.Get("ShowOnStart", "RegisterWindow", &bRegisterWindow, true);
ini.Get("ShowOnStart", "BreakpointWindow", &bBreakpointWindow, true);
ini.Get("ShowOnStart", "MemoryWindow", &bMemoryWindow, true);
ini.Get("ShowOnStart", "JitWindow", &bJitWindow, true);
ini.Get("ShowOnStart", "SoundWindow", &bSoundWindow, false);
ini.Get("ShowOnStart", "VideoWindow", &bVideoWindow, false);
ini.Get("ShowOnStart", "Code", &bCodeWindow, true);
ini.Get("ShowOnStart", "Registers", &bRegisterWindow, false);
ini.Get("ShowOnStart", "Breakpoints", &bBreakpointWindow, false);
ini.Get("ShowOnStart", "Memory", &bMemoryWindow, false);
ini.Get("ShowOnStart", "JIT", &bJitWindow, false);
ini.Get("ShowOnStart", "Sound", &bSoundWindow, false);
ini.Get("ShowOnStart", "Video", &bVideoWindow, false);
ini.Get("Notebook", "Log", &iLogWindow, 1);
ini.Get("Notebook", "Code", &iCodeWindow, 1);
ini.Get("Notebook", "Registers", &iRegisterWindow, 1);
ini.Get("Notebook", "Breakpoints", &iBreakpointWindow, 0);
ini.Get("Notebook", "Memory", &iMemoryWindow, 1);
ini.Get("Notebook", "JIT", &iJitWindow, 1);
ini.Get("Notebook", "Sound", &iSoundWindow, 0);
ini.Get("Notebook", "Video", &iVideoWindow, 0);
// Remove bad values
iCodeWindow = Limit(iCodeWindow, 0, Parent->m_NB.size()-1);
iRegisterWindow = Limit(iRegisterWindow, 0, Parent->m_NB.size()-1);
iBreakpointWindow = Limit(iBreakpointWindow, 0, Parent->m_NB.size()-1);
iMemoryWindow = Limit(iMemoryWindow, 0, Parent->m_NB.size()-1);
iJitWindow = Limit(iJitWindow, 0, Parent->m_NB.size()-1);
iSoundWindow = Limit(iSoundWindow, 0, Parent->m_NB.size()-1);
iVideoWindow = Limit(iVideoWindow, 0, Parent->m_NB.size()-1);
// Boot to pause or not
ini.Get("ShowOnStart", "AutomaticStart", &bAutomaticStart, false);
ini.Get("ShowOnStart", "BootToPause", &bBootToPause, true);
}
/*
void CCodeWindow::Load( IniFile &ini )
{
int x,y,w,h;
ini.Get("CodeWindow", "x", &x, GetPosition().x);
ini.Get("CodeWindow", "y", &y, GetPosition().y);
ini.Get("CodeWindow", "w", &w, GetSize().GetWidth());
ini.Get("CodeWindow", "h", &h, GetSize().GetHeight());
this->SetSize(x, y, w, h);
ini.Get("MainWindow", "x", &x, 100);
ini.Get("MainWindow", "y", &y, 100);
ini.Get("MainWindow", "w", &w, 800);
ini.Get("MainWindow", "h", &h, 600);
GetParent()->SetSize(x, y, w, h);
}
*/
void CCodeWindow::Save()
{
IniFile ini;
@ -306,13 +306,23 @@ void CCodeWindow::Save()
ini.Set("ShowOnStart", "AutomaticStart", GetMenuBar()->IsChecked(IDM_AUTOMATICSTART));
ini.Set("ShowOnStart", "BootToPause", GetMenuBar()->IsChecked(IDM_BOOTTOPAUSE));
// Save windows settings
ini.Set("ShowOnStart", "RegisterWindow", GetMenuBar()->IsChecked(IDM_REGISTERWINDOW));
ini.Set("ShowOnStart", "BreakpointWindow", GetMenuBar()->IsChecked(IDM_BREAKPOINTWINDOW));
ini.Set("ShowOnStart", "MemoryWindow", GetMenuBar()->IsChecked(IDM_MEMORYWINDOW));
ini.Set("ShowOnStart", "JitWindow", GetMenuBar()->IsChecked(IDM_JITWINDOW));
ini.Set("ShowOnStart", "SoundWindow", GetMenuBar()->IsChecked(IDM_SOUNDWINDOW));
ini.Set("ShowOnStart", "VideoWindow", GetMenuBar()->IsChecked(IDM_VIDEOWINDOW));
// Save windows settings
ini.Set("ShowOnStart", "Code", GetMenuBar()->IsChecked(IDM_CODEWINDOW));
ini.Set("ShowOnStart", "Registers", GetMenuBar()->IsChecked(IDM_REGISTERWINDOW));
ini.Set("ShowOnStart", "Breakpoints", GetMenuBar()->IsChecked(IDM_BREAKPOINTWINDOW));
ini.Set("ShowOnStart", "Memory", GetMenuBar()->IsChecked(IDM_MEMORYWINDOW));
ini.Set("ShowOnStart", "JIT", GetMenuBar()->IsChecked(IDM_JITWINDOW));
ini.Set("ShowOnStart", "Sound", GetMenuBar()->IsChecked(IDM_SOUNDWINDOW));
ini.Set("ShowOnStart", "Video", GetMenuBar()->IsChecked(IDM_VIDEOWINDOW));
ini.Set("Notebook", "Log", iLogWindow);
ini.Set("Notebook", "Code", iCodeWindow);
ini.Set("Notebook", "Registers", iRegisterWindow);
ini.Set("Notebook", "Breakpoints", iBreakpointWindow);
ini.Set("Notebook", "Memory", iMemoryWindow);
ini.Set("Notebook", "JIT", iJitWindow);
ini.Set("Notebook", "Sound", iSoundWindow);
ini.Set("Notebook", "Video", iVideoWindow);
// Save window settings
/*
@ -432,30 +442,22 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam
// dualcore->Check(_LocalCoreStartupParameter.bUseDualCore);
pMenuBar->Append(pCoreMenu, _T("&CPU Mode"));
// Views
// Views
wxMenu* pDebugDialogs = new wxMenu;
wxMenuItem* pRegister = pDebugDialogs->Append(IDM_REGISTERWINDOW, _T("&Registers"), wxEmptyString, wxITEM_CHECK);
pRegister->Check(bRegisterWindow);
wxMenuItem* pBreakPoints = pDebugDialogs->Append(IDM_BREAKPOINTWINDOW, _T("&BreakPoints"), wxEmptyString, wxITEM_CHECK);
pBreakPoints->Check(bBreakpointWindow);
wxMenuItem* pMemory = pDebugDialogs->Append(IDM_MEMORYWINDOW, _T("&Memory"), wxEmptyString, wxITEM_CHECK);
pMemory->Check(bMemoryWindow);
wxMenuItem* pJit = pDebugDialogs->Append(IDM_JITWINDOW, _T("&Jit"), wxEmptyString, wxITEM_CHECK);
pJit->Check(bJitWindow);
wxMenuItem* pSound = pDebugDialogs->Append(IDM_SOUNDWINDOW, _T("&Sound"), wxEmptyString, wxITEM_CHECK);
pSound->Check(bSoundWindow);
wxMenuItem* pVideo = pDebugDialogs->Append(IDM_VIDEOWINDOW, _T("&Video"), wxEmptyString, wxITEM_CHECK);
pVideo->Check(bVideoWindow);
pDebugDialogs->AppendSeparator();
wxMenuItem* pFontPicker = pDebugDialogs->Append(IDM_FONTPICKER, _T("&Font..."), wxEmptyString, wxITEM_NORMAL);

View File

@ -63,10 +63,10 @@ class CCodeWindow
CFrame *Parent;
wxMenuBar * GetMenuBar();
wxAuiToolBar * GetToolBar();
#ifdef _WIN32
wxWindow * GetWxWindow(wxString);
#endif
wxWindow * GetNootebookPage(wxString);
wxWindow * GetNootebookPage(wxString);
int Limit(int,int,int);
int GetNootebookAffiliation(wxString);
wxBitmap m_Bitmaps[ToolbarDebugBitmapMax];
bool UseInterpreter();
@ -87,12 +87,12 @@ class CCodeWindow
void UpdateManager();
void OnToggleWindow(wxCommandEvent& event);
void OnToggleRegisterWindow(bool,wxAuiNotebook*);
void OnToggleBreakPointWindow(bool,wxAuiNotebook*);
void OnToggleMemoryWindow(bool,wxAuiNotebook*);
void OnToggleJitWindow(bool,wxAuiNotebook*);
void OnToggleSoundWindow(bool,wxAuiNotebook*);
void OnToggleVideoWindow(bool,wxAuiNotebook*);
void OnToggleRegisterWindow(bool,int);
void OnToggleBreakPointWindow(bool,int);
void OnToggleMemoryWindow(bool,int);
void OnToggleJitWindow(bool,int);
void OnToggleSoundWindow(bool,int);
void OnToggleVideoWindow(bool,int);
void OnChangeFont(wxCommandEvent& event);
// Sub dialogs
@ -102,6 +102,17 @@ class CCodeWindow
CMemoryWindow* m_MemoryWindow;
CJitWindow* m_JitWindow;
// Settings
bool bAutomaticStart; bool bBootToPause;
bool bLogWindow; bool iLogWindow;
bool bCodeWindow; int iCodeWindow;
bool bRegisterWindow; int iRegisterWindow;
bool bBreakpointWindow; int iBreakpointWindow;
bool bMemoryWindow; int iMemoryWindow;
bool bJitWindow; int iJitWindow;
bool bSoundWindow; int iSoundWindow;
bool bVideoWindow; int iVideoWindow;
private:
enum
@ -114,15 +125,6 @@ class CCodeWindow
ID_SYMBOLLIST
};
// Settings
bool bAutomaticStart; bool bBootToPause;
bool bRegisterWindow;
bool bBreakpointWindow;
bool bMemoryWindow;
bool bJitWindow;
bool bSoundWindow;
bool bVideoWindow;
void OnSymbolListChange(wxCommandEvent& event);
void OnSymbolListContextMenu(wxContextMenuEvent& event);
void OnCallstackListChange(wxCommandEvent& event);

View File

@ -33,7 +33,6 @@
#include <wx/fontdlg.h>
// ugly that this lib included code from the main
#include "../../DolphinWX/Src/Globals.h"
#include "../../DolphinWX/Src/WxUtils.h"
#include "Host.h"
@ -327,21 +326,21 @@ void CCodeWindow::OnChangeFont(wxCommandEvent& event)
// ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
wxWindow * CCodeWindow::GetNootebookPage(wxString Name)
{
if (!Parent->m_NB0 || !Parent->m_NB1) return NULL;
if (!Parent->m_NB[0] || !Parent->m_NB[1]) return NULL;
for(u32 i = 0; i <= Parent->m_NB0->GetPageCount(); i++)
for(u32 i = 0; i <= Parent->m_NB[0]->GetPageCount(); i++)
{
if (Parent->m_NB0->GetPageText(i).IsSameAs(Name)) return Parent->m_NB0->GetPage(i);
if (Parent->m_NB[0]->GetPageText(i).IsSameAs(Name)) return Parent->m_NB[0]->GetPage(i);
}
for(u32 i = 0; i <= Parent->m_NB1->GetPageCount(); i++)
for(u32 i = 0; i <= Parent->m_NB[1]->GetPageCount(); i++)
{
if (Parent->m_NB1->GetPageText(i).IsSameAs(Name)) return Parent->m_NB1->GetPage(i);
if (Parent->m_NB[1]->GetPageText(i).IsSameAs(Name)) return Parent->m_NB[1]->GetPage(i);
}
return NULL;
}
#ifdef _WIN32
wxWindow * CCodeWindow::GetWxWindow(wxString Name)
{
#ifdef _WIN32
HWND hWnd = ::FindWindow(NULL, Name.c_str());
if (hWnd)
{
@ -350,7 +349,9 @@ wxWindow * CCodeWindow::GetWxWindow(wxString Name)
Win->AdoptAttributesFromHWND();
return Win;
}
else if (Parent->FindWindowByName(Name))
else
#endif
if (Parent->FindWindowByName(Name))
{
return Parent->FindWindowByName(Name);
}
@ -365,79 +366,93 @@ wxWindow * CCodeWindow::GetWxWindow(wxString Name)
else
return NULL;
}
#endif
int CCodeWindow::Limit(int i, int Low, int High)
{
if (i < Low) return Low;
if (i > High) return High;
return i;
}
void CCodeWindow::OpenPages()
{
if (bRegisterWindow) Parent->DoToggleWindow(IDM_REGISTERWINDOW, true);
if (bBreakpointWindow) Parent->DoToggleWindow(IDM_BREAKPOINTWINDOW, true);
if (bMemoryWindow) Parent->DoToggleWindow(IDM_MEMORYWINDOW, true);
if (bJitWindow) Parent->DoToggleWindow(IDM_JITWINDOW, true);
if (bSoundWindow) Parent->DoToggleWindow(IDM_SOUNDWINDOW, true);
if (bVideoWindow) Parent->DoToggleWindow(IDM_VIDEOWINDOW, true);
ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
Console->Log(LogTypes::LNOTICE, StringFromFormat(
"OpenPages:%i %i\n", iRegisterWindow, iBreakpointWindow).c_str());
if (bRegisterWindow) Parent->DoToggleWindow(IDM_REGISTERWINDOW, bRegisterWindow);
if (bBreakpointWindow) Parent->DoToggleWindow(IDM_BREAKPOINTWINDOW, bBreakpointWindow);
if (bMemoryWindow) Parent->DoToggleWindow(IDM_MEMORYWINDOW, bMemoryWindow);
if (bJitWindow) Parent->DoToggleWindow(IDM_JITWINDOW, bJitWindow);
if (bSoundWindow) Parent->DoToggleWindow(IDM_SOUNDWINDOW, bSoundWindow);
if (bVideoWindow) Parent->DoToggleWindow(IDM_VIDEOWINDOW, bVideoWindow);
}
void CCodeWindow::OnToggleWindow(wxCommandEvent& event)
{
Parent->DoToggleWindow(event.GetId(), GetMenuBar()->IsChecked(event.GetId()));
}
void CCodeWindow::OnToggleRegisterWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleRegisterWindow(bool Show, int i)
{
if (Show)
{
if (m_RegisterWindow && _NB->GetPageIndex(m_RegisterWindow) != wxNOT_FOUND) return;
if (i < 0 || i > Parent->m_NB.size()-1) return;
if (m_RegisterWindow && Parent->m_NB[i]->GetPageIndex(m_RegisterWindow) != wxNOT_FOUND) return;
if (!m_RegisterWindow) m_RegisterWindow = new CRegisterWindow(Parent);
_NB->AddPage(m_RegisterWindow, wxT("Registers"), true, Parent->aNormalFile );
Parent->m_NB[i]->AddPage(m_RegisterWindow, wxT("Registers"), true, Parent->aNormalFile );
}
else // hide
Parent->DoRemovePage (m_RegisterWindow);
}
void CCodeWindow::OnToggleBreakPointWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleBreakPointWindow(bool Show, int i)
{
if (Show)
{
if (m_BreakpointWindow && _NB->GetPageIndex(m_BreakpointWindow) != wxNOT_FOUND) return;
if (i < 0 || i > Parent->m_NB.size()-1) return;
if (m_BreakpointWindow && Parent->m_NB[i]->GetPageIndex(m_BreakpointWindow) != wxNOT_FOUND) return;
if (!m_BreakpointWindow) m_BreakpointWindow = new CBreakPointWindow(this, Parent);
_NB->AddPage(m_BreakpointWindow, wxT("Breakpoints"), true, Parent->aNormalFile );
Parent->m_NB[i]->AddPage(m_BreakpointWindow, wxT("Breakpoints"), true, Parent->aNormalFile );
}
else // hide
Parent->DoRemovePage(m_BreakpointWindow);
}
void CCodeWindow::OnToggleJitWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleJitWindow(bool Show, int i)
{
if (Show)
{
if (m_JitWindow && _NB->GetPageIndex(m_JitWindow) != wxNOT_FOUND) return;
if (i < 0 || i > Parent->m_NB.size()-1) return;
if (m_JitWindow && Parent->m_NB[i]->GetPageIndex(m_JitWindow) != wxNOT_FOUND) return;
if (!m_JitWindow) m_JitWindow = new CJitWindow(Parent);
_NB->AddPage(m_JitWindow, wxT("JIT"), true, Parent->aNormalFile );
Parent->m_NB[i]->AddPage(m_JitWindow, wxT("JIT"), true, Parent->aNormalFile );
}
else // hide
Parent->DoRemovePage(m_JitWindow);
}
void CCodeWindow::OnToggleMemoryWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleMemoryWindow(bool Show, int i)
{
if (Show)
{
if (m_MemoryWindow && _NB->GetPageIndex(m_MemoryWindow) != wxNOT_FOUND) return;
if (i < 0 || i > Parent->m_NB.size()-1) return;
if (m_MemoryWindow && Parent->m_NB[i]->GetPageIndex(m_MemoryWindow) != wxNOT_FOUND) return;
if (!m_MemoryWindow) m_MemoryWindow = new CMemoryWindow(Parent);
_NB->AddPage(m_MemoryWindow, wxT("Memory"), true, Parent->aNormalFile );
Parent->m_NB[i]->AddPage(m_MemoryWindow, wxT("Memory"), true, Parent->aNormalFile );
}
else // hide
Parent->DoRemovePage(m_MemoryWindow);
}
//Toggle Sound Debugging Window
void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleSoundWindow(bool Show, int i)
{
//ConsoleListener* Console = LogManager::GetInstance()->getConsoleListener();
if (Show)
{
if (i < 0 || i > Parent->m_NB.size()-1) return;
#ifdef _WIN32
wxWindow *Win = GetWxWindow(wxT("Sound"));
if (Win && _NB->GetPageIndex(Win) != wxNOT_FOUND) return;
if (Win && Parent->m_NB[i]->GetPageIndex(Win) != wxNOT_FOUND) return;
{
#endif
@ -455,7 +470,7 @@ void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
if (Win)
{
//Console->Log(LogTypes::LNOTICE, StringFromFormat("AddPage\n").c_str());
_NB->AddPage(Win, wxT("Sound"), true, Parent->aNormalFile );
Parent->m_NB[i]->AddPage(Win, wxT("Sound"), true, Parent->aNormalFile );
}
#endif
}
@ -475,15 +490,16 @@ void CCodeWindow::OnToggleSoundWindow(bool Show, wxAuiNotebook * _NB)
}
// Toggle Video Debugging Window
void CCodeWindow::OnToggleVideoWindow(bool Show, wxAuiNotebook * _NB)
void CCodeWindow::OnToggleVideoWindow(bool Show, int i)
{
//GetMenuBar()->Check(event.GetId(), false); // Turn off
if (Show)
{
if (i < 0 || i > Parent->m_NB.size()-1) return;
#ifdef _WIN32
wxWindow *Win = GetWxWindow(wxT("Video"));
if (Win && _NB->GetPageIndex(Win) != wxNOT_FOUND) return;
if (Win && Parent->m_NB[i]->GetPageIndex(Win) != wxNOT_FOUND) return;
{
#endif
@ -497,7 +513,7 @@ void CCodeWindow::OnToggleVideoWindow(bool Show, wxAuiNotebook * _NB)
}
Win = GetWxWindow(wxT("Video"));
if (Win) _NB->AddPage(Win, wxT("Video"), true, Parent->aNormalFile );
if (Win) Parent->m_NB[i]->AddPage(Win, wxT("Video"), true, Parent->aNormalFile );
#endif
}
else // hide

View File

@ -24,10 +24,10 @@
#include <wx/textctrl.h>
#include <wx/listctrl.h>
#include <wx/listbox.h>
#include "Debugger.h"
#include "MemoryView.h"
#include "Thread.h"
#include "CoreParameter.h"