114 changes: 58 additions & 56 deletions Source/Core/DolphinWX/Src/Debugger/CodeWindow.cpp
Expand Up @@ -138,16 +138,16 @@ void CCodeWindow::OnHostMessage(wxCommandEvent& event)
{
switch (event.GetId())
{
case IDM_NOTIFYMAPLOADED:
NotifyMapLoaded();
case IDM_NOTIFYMAPLOADED:
NotifyMapLoaded();
if (m_BreakpointWindow) m_BreakpointWindow->NotifyUpdate();
break;
break;

case IDM_UPDATEDISASMDIALOG:
Update();
case IDM_UPDATEDISASMDIALOG:
Update();
if (codeview) codeview->Center(PC);
if (m_RegisterWindow) m_RegisterWindow->NotifyUpdate();
break;
if (m_RegisterWindow) m_RegisterWindow->NotifyUpdate();
break;

case IDM_UPDATEBREAKPOINTS:
Update();
Expand All @@ -161,31 +161,31 @@ void CCodeWindow::OnCodeStep(wxCommandEvent& event)
{
switch (event.GetId())
{
case IDM_STEP:
case IDM_STEP:
SingleStep();
break;
break;

case IDM_STEPOVER:
case IDM_STEPOVER:
StepOver();
break;
break;

case IDM_TOGGLE_BREAKPOINT:
ToggleBreakpoint();
break;

case IDM_SKIP:
PC += 4;
Update();
break;
case IDM_SKIP:
PC += 4;
Update();
break;

case IDM_SETPC:
PC = codeview->GetSelection();
Update();
break;
case IDM_SETPC:
PC = codeview->GetSelection();
Update();
break;

case IDM_GOTOPC:
JumpToAddress(PC);
break;
case IDM_GOTOPC:
JumpToAddress(PC);
break;
}

UpdateButtonStates();
Expand Down Expand Up @@ -227,7 +227,7 @@ void CCodeWindow::OnCallstackListChange(wxCommandEvent& event)
{
int index = callstack->GetSelection();
if (index >= 0)
{
{
u32 address = (u32)(u64)(callstack->GetClientData(index));
if (address)
JumpToAddress(address);
Expand All @@ -238,7 +238,7 @@ void CCodeWindow::OnCallersListChange(wxCommandEvent& event)
{
int index = callers->GetSelection();
if (index >= 0)
{
{
u32 address = (u32)(u64)(callers->GetClientData(index));
if (address)
JumpToAddress(address);
Expand All @@ -249,7 +249,7 @@ void CCodeWindow::OnCallsListChange(wxCommandEvent& event)
{
int index = calls->GetSelection();
if (index >= 0)
{
{
u32 address = (u32)(u64)(calls->GetClientData(index));
if (address)
JumpToAddress(address);
Expand Down Expand Up @@ -283,7 +283,9 @@ void CCodeWindow::StepOver()
Update();
}
else
{
SingleStep();
}

UpdateButtonStates();
// Update all toolbars in the aui manager
Expand All @@ -307,12 +309,13 @@ void CCodeWindow::UpdateLists()
Symbol *symbol = g_symbolDB.GetSymbolFromAddr(addr);
if (!symbol)
return;

for (int i = 0; i < (int)symbol->callers.size(); i++)
{
u32 caller_addr = symbol->callers[i].callAddress;
Symbol *caller_symbol = g_symbolDB.GetSymbolFromAddr(caller_addr);
if (caller_symbol)
{
{
int idx = callers->Append(StrToWxStr(StringFromFormat
("< %s (%08x)", caller_symbol->name.c_str(), caller_addr).c_str()));
callers->SetClientData(idx, (void*)(u64)caller_addr);
Expand All @@ -325,7 +328,7 @@ void CCodeWindow::UpdateLists()
u32 call_addr = symbol->calls[i].function;
Symbol *call_symbol = g_symbolDB.GetSymbolFromAddr(call_addr);
if (call_symbol)
{
{
int idx = calls->Append(StrToWxStr(StringFromFormat
("> %s (%08x)", call_symbol->name.c_str(), call_addr).c_str()));
calls->SetClientData(idx, (void*)(u64)call_addr);
Expand Down Expand Up @@ -354,8 +357,7 @@ void CCodeWindow::UpdateCallstack()
}

// Create CPU Mode menus
void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParameter,
wxMenuBar *pMenuBar)
void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParameter, wxMenuBar *pMenuBar)
{
// CPU Mode
wxMenu* pCoreMenu = new wxMenu;
Expand Down Expand Up @@ -386,25 +388,25 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam
_("Turn off all JIT functions, but still use the JIT core from Jit.cpp"),
wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSOFF, _("&JIT LoadStore off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSLBZXOFF, _(" &JIT LoadStore lbzx off"),
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSLXZOFF, _(" &JIT LoadStore lXz off"),
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSLWZOFF, _("&JIT LoadStore lwz off"),
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSFOFF, _("&JIT LoadStore Floating off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITLSPOFF, _("&JIT LoadStore Paired off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITFPOFF, _("&JIT FloatingPoint off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITIOFF, _("&JIT Integer off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITPOFF, _("&JIT Paired off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);
pCoreMenu->Append(IDM_JITSROFF, _("&JIT SystemRegisters off"),
wxEmptyString, wxITEM_CHECK);
wxEmptyString, wxITEM_CHECK);

pMenuBar->Append(pCoreMenu, _("&JIT"));

Expand Down Expand Up @@ -448,46 +450,46 @@ void CCodeWindow::OnCPUMode(wxCommandEvent& event)
{
case IDM_INTERPRETER:
PowerPC::SetMode(UseInterpreter() ? PowerPC::MODE_INTERPRETER : PowerPC::MODE_JIT);
break;
break;
case IDM_BOOTTOPAUSE:
bBootToPause = !bBootToPause;
return;
return;
case IDM_AUTOMATICSTART:
bAutomaticStart = !bAutomaticStart;
return;
return;
case IDM_JITOFF:
Core::g_CoreStartupParameter.bJITOff = event.IsChecked();
break;
break;
case IDM_JITLSOFF:
Core::g_CoreStartupParameter.bJITLoadStoreOff = event.IsChecked();
break;
break;
case IDM_JITLSLXZOFF:
Core::g_CoreStartupParameter.bJITLoadStorelXzOff = event.IsChecked();
break;
break;
case IDM_JITLSLWZOFF:
Core::g_CoreStartupParameter.bJITLoadStorelwzOff = event.IsChecked();
break;
break;
case IDM_JITLSLBZXOFF:
Core::g_CoreStartupParameter.bJITLoadStorelbzxOff = event.IsChecked();
break;
break;
case IDM_JITLSFOFF:
Core::g_CoreStartupParameter.bJITLoadStoreFloatingOff = event.IsChecked();
break;
break;
case IDM_JITLSPOFF:
Core::g_CoreStartupParameter.bJITLoadStorePairedOff = event.IsChecked();
break;
break;
case IDM_JITFPOFF:
Core::g_CoreStartupParameter.bJITFloatingPointOff = event.IsChecked();
break;
break;
case IDM_JITIOFF:
Core::g_CoreStartupParameter.bJITIntegerOff = event.IsChecked();
break;
break;
case IDM_JITPOFF:
Core::g_CoreStartupParameter.bJITPairedOff = event.IsChecked();
break;
break;
case IDM_JITSROFF:
Core::g_CoreStartupParameter.bJITSystemRegistersOff = event.IsChecked();
break;
break;
}

// Clear the JIT cache to enable these changes
Expand All @@ -503,22 +505,22 @@ void CCodeWindow::OnJitMenu(wxCommandEvent& event)
{
case IDM_LOGINSTRUCTIONS:
PPCTables::LogCompiledInstructions();
break;
break;

case IDM_CLEARCODECACHE:
JitInterface::ClearCache();
break;
break;

case IDM_SEARCHINSTRUCTION:
{
wxString str;
str = wxGetTextFromUser(_T(""), wxT("Op?"), wxEmptyString, this);
for (u32 addr = 0x80000000; addr < 0x80100000; addr += 4)
{
{
const char *name = PPCTables::GetInstructionName(Memory::ReadUnchecked_U32(addr));
auto const wx_name = WxStrToStr(str);
if (name && (wx_name == name))
{
{
NOTICE_LOG(POWERPC, "Found %s at %08x", wx_name.c_str(), addr);
}
}
Expand Down Expand Up @@ -575,10 +577,10 @@ void CCodeWindow::PopulateToolbar(wxAuiToolBar* toolBar)

toolBar->SetToolBitmapSize(wxSize(w, h));
toolBar->AddTool(IDM_STEP, _("Step"), m_Bitmaps[Toolbar_Step]);
toolBar->AddTool(IDM_STEPOVER, _("Step Over"), m_Bitmaps[Toolbar_StepOver]);
toolBar->AddTool(IDM_STEPOVER, _("Step Over"), m_Bitmaps[Toolbar_StepOver]);
toolBar->AddTool(IDM_SKIP, _("Skip"), m_Bitmaps[Toolbar_Skip]);
toolBar->AddSeparator();
toolBar->AddTool(IDM_GOTOPC, _("Show PC"), m_Bitmaps[Toolbar_GotoPC]);
toolBar->AddTool(IDM_GOTOPC, _("Show PC"), m_Bitmaps[Toolbar_GotoPC]);
toolBar->AddTool(IDM_SETPC, _("Set PC"), m_Bitmaps[Toolbar_SetPC]);
toolBar->AddSeparator();
toolBar->AddControl(new wxTextCtrl(toolBar, IDM_ADDRBOX, _T("")));
Expand Down
10 changes: 5 additions & 5 deletions Source/Core/DolphinWX/Src/Debugger/DSPDebugWindow.cpp
Expand Up @@ -36,13 +36,13 @@ BEGIN_EVENT_TABLE(DSPDebuggerLLE, wxPanel)
EVT_CLOSE(DSPDebuggerLLE::OnClose)
EVT_MENU_RANGE(ID_RUNTOOL, ID_SHOWPCTOOL, DSPDebuggerLLE::OnChangeState)
EVT_TEXT_ENTER(ID_ADDRBOX, DSPDebuggerLLE::OnAddrBoxChange)
EVT_LISTBOX(ID_SYMBOLLIST, DSPDebuggerLLE::OnSymbolListChange)
EVT_LISTBOX(ID_SYMBOLLIST, DSPDebuggerLLE::OnSymbolListChange)
END_EVENT_TABLE()


DSPDebuggerLLE::DSPDebuggerLLE(wxWindow* parent, wxWindowID id)
: wxPanel(parent, id, wxDefaultPosition, wxDefaultSize,
wxTAB_TRAVERSAL, _("DSP LLE Debugger"))
wxTAB_TRAVERSAL, _("DSP LLE Debugger"))
, m_CachedStepCounter(-1)
{
m_DebuggerFrame = this;
Expand Down Expand Up @@ -184,14 +184,14 @@ void DSPDebuggerLLE::FocusOnPC()
void DSPDebuggerLLE::UpdateState()
{
if (DSPCore_GetState() == DSPCORE_RUNNING)
{
{
m_Toolbar->SetToolLabel(ID_RUNTOOL, wxT("Pause"));
m_Toolbar->SetToolBitmap(ID_RUNTOOL,
wxArtProvider::GetBitmap(wxART_TICK_MARK, wxART_OTHER, wxSize(10,10)));
m_Toolbar->EnableTool(ID_STEPTOOL, false);
}
else
{
else
{
m_Toolbar->SetToolLabel(ID_RUNTOOL, wxT("Run"));
m_Toolbar->SetToolBitmap(ID_RUNTOOL,
wxArtProvider::GetBitmap(wxART_GO_FORWARD, wxART_OTHER, wxSize(10,10)));
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.cpp
Expand Up @@ -79,9 +79,10 @@ void GFXDebuggerPanel::SaveSettings() const

// TODO: make this work when we close the entire program too, currently on total close we get
// weird values, perhaps because of some conflict with the rendering window
//
// TODO: get the screen resolution and make limits from that
if (GetPosition().x < 1000 && GetPosition().y < 1000
&& GetSize().GetWidth() < 1000
&& GetSize().GetWidth() < 1000
&& GetSize().GetHeight() < 1000)
{
file.Set("VideoWindow", "x", GetPosition().x);
Expand Down
37 changes: 22 additions & 15 deletions Source/Core/DolphinWX/Src/Debugger/JitWindow.cpp
Expand Up @@ -59,15 +59,15 @@ BEGIN_EVENT_TABLE(CJitWindow, wxPanel)
END_EVENT_TABLE()

CJitWindow::CJitWindow(wxWindow* parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name)
const wxSize& size, long style, const wxString& name)
: wxPanel(parent, id, pos, size, style, name)
{
wxBoxSizer* sizerBig = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* sizerSplit = new wxBoxSizer(wxHORIZONTAL);
sizerSplit->Add(ppc_box = new wxTextCtrl(this, IDM_PPC_BOX, _T("(ppc)"),
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
sizerSplit->Add(x86_box = new wxTextCtrl(this, IDM_X86_BOX, _T("(x86)"),
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE), 1, wxEXPAND);
sizerBig->Add(block_list = new JitBlockList(this, IDM_BLOCKLIST,
wxDefaultPosition, wxSize(100, 140),
wxLC_REPORT | wxSUNKEN_BORDER | wxLC_ALIGN_LEFT | wxLC_SINGLE_SEL | wxLC_SORT_ASCENDING),
Expand Down Expand Up @@ -107,21 +107,26 @@ void CJitWindow::Compare(u32 em_address)
int block_num = jit->GetBlockCache()->GetBlockNumberFromStartAddress(em_address);
if (block_num < 0)
{
for (int i = 0; i < 500; i++) {
for (int i = 0; i < 500; i++)
{
block_num = jit->GetBlockCache()->GetBlockNumberFromStartAddress(em_address - 4 * i);
if (block_num >= 0)
break;
}
if (block_num >= 0) {

if (block_num >= 0)
{
JitBlock *block = jit->GetBlockCache()->GetBlock(block_num);
if (!(block->originalAddress <= em_address &&
block->originalSize + block->originalAddress >= em_address))
block->originalSize + block->originalAddress >= em_address))
block_num = -1;
}

// Do not merge this "if" with the above - block_num changes inside it.
if (block_num < 0) {
if (block_num < 0)
{
ppc_box->SetValue(StrToWxStr(StringFromFormat("(non-code address: %08x)",
em_address)));
em_address)));
x86_box->SetValue(StrToWxStr(StringFromFormat("(no translation)")));
delete[] xDis;
return;
Expand Down Expand Up @@ -186,12 +191,14 @@ void CJitWindow::Compare(u32 em_address)
sptr += sprintf(sptr, "%i estimated cycles\n", st.numCycles);

sptr += sprintf(sptr, "Num instr: PPC: %i x86: %i (blowup: %i%%)\n",
size, num_x86_instructions, 100 * (num_x86_instructions / size - 1));
size, num_x86_instructions, 100 * (num_x86_instructions / size - 1));
sptr += sprintf(sptr, "Num bytes: PPC: %i x86: %i (blowup: %i%%)\n",
size * 4, block->codeSize, 100 * (block->codeSize / (4 * size) - 1));
size * 4, block->codeSize, 100 * (block->codeSize / (4 * size) - 1));

ppc_box->SetValue(StrToWxStr((char*)xDis));
} else {
}
else
{
ppc_box->SetValue(StrToWxStr(StringFromFormat(
"(non-code address: %08x)", em_address)));
x86_box->SetValue("---");
Expand All @@ -209,9 +216,9 @@ void CJitWindow::OnHostMessage(wxCommandEvent& event)
{
switch (event.GetId())
{
case IDM_NOTIFYMAPLOADED:
//NotifyMapLoaded();
break;
case IDM_NOTIFYMAPLOADED:
//NotifyMapLoaded();
break;
}
}

Expand All @@ -229,7 +236,7 @@ enum {
};

JitBlockList::JitBlockList(wxWindow* parent, const wxWindowID id,
const wxPoint& pos, const wxSize& size, long style)
const wxPoint& pos, const wxSize& size, long style)
: wxListCtrl(parent, id, pos, size, style) // | wxLC_VIRTUAL)
{
Init();
Expand Down
30 changes: 16 additions & 14 deletions Source/Core/DolphinWX/Src/Debugger/MemoryView.cpp
Expand Up @@ -90,7 +90,7 @@ void CMemoryView::OnMouseDownL(wxMouseEvent& event)
}
else
{
debugger->toggleMemCheck(YToAddress(y));
debugger->toggleMemCheck(YToAddress(y));

Refresh();
Host_UpdateBreakPointView();
Expand Down Expand Up @@ -143,17 +143,17 @@ void CMemoryView::OnPopupMenu(wxCommandEvent& event)
switch (event.GetId())
{
#if wxUSE_CLIPBOARD
case IDM_COPYADDRESS:
case IDM_COPYADDRESS:
wxTheClipboard->SetData(new wxTextDataObject(wxString::Format(_T("%08x"), selection)));
break;

case IDM_COPYHEX:
{
char temp[24];
sprintf(temp, "%08x", debugger->readExtraMemory(memory, selection));
wxTheClipboard->SetData(new wxTextDataObject(StrToWxStr(temp)));
}
break;
break;

case IDM_COPYHEX:
{
char temp[24];
sprintf(temp, "%08x", debugger->readExtraMemory(memory, selection));
wxTheClipboard->SetData(new wxTextDataObject(StrToWxStr(temp)));
}
break;
#endif

case IDM_TOGGLEMEMORY:
Expand Down Expand Up @@ -197,7 +197,7 @@ void CMemoryView::OnMouseDownR(wxMouseEvent& event)
viewAsSubMenu->Append(IDM_VIEWASFP, StrToWxStr("FP value"));
viewAsSubMenu->Append(IDM_VIEWASASCII, StrToWxStr("ASCII"));
viewAsSubMenu->Append(IDM_VIEWASHEX, StrToWxStr("Hex"));
menu->AppendSubMenu(viewAsSubMenu, StrToWxStr("View As:"));
menu->AppendSubMenu(viewAsSubMenu, StrToWxStr("View As:"));

PopupMenu(menu);
}
Expand All @@ -212,10 +212,10 @@ void CMemoryView::OnPaint(wxPaintEvent& event)
wxCoord w,h;
dc.GetTextExtent(_T("0WJyq"),&w,&h,NULL,NULL,&hFont);
if (h > rowHeight)
rowHeight = h;
rowHeight = h;
dc.GetTextExtent(_T("0WJyq"),&w,&h,NULL,NULL,&DebuggerFont);
if (h > rowHeight)
rowHeight = h;
rowHeight = h;

if (viewAsType==VIEWAS_HEX)
dc.SetFont(hFont);
Expand Down Expand Up @@ -359,7 +359,9 @@ void CMemoryView::OnPaint(wxPaintEvent& event)
curAddress += 32;
}
else
{
sprintf(dis, "INVALID VIEWAS TYPE");
}

char desc[256] = "";
if (viewAsType != VIEWAS_HEX)
Expand Down
10 changes: 6 additions & 4 deletions Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp
Expand Up @@ -341,13 +341,13 @@ void CMemoryWindow::onSearch(wxCommandEvent& event)
newsize = rawData.size();

if (pad)
{
{
tmpstr = new char[newsize + 2];
memset(tmpstr, 0, newsize + 2);
tmpstr[0] = '0';
}
else
{
else
{
tmpstr = new char[newsize + 1];
memset(tmpstr, 0, newsize + 1);
}
Expand All @@ -368,7 +368,9 @@ void CMemoryWindow::onSearch(wxCommandEvent& event)
i += 1;
}
delete[] tmpstr;
} else {
}
else
{
//Looking for an ascii string
size = rawData.size();
Dest.resize(size+1);
Expand Down
49 changes: 33 additions & 16 deletions Source/Core/DolphinWX/Src/Debugger/RegisterView.cpp
Expand Up @@ -31,8 +31,10 @@ static const char *special_reg_names[] = {
"PC", "LR", "CTR", "CR", "FPSCR", "MSR", "SRR0", "SRR1", "Exceptions", "Int Mask", "Int Cause",
};

static u32 GetSpecialRegValue(int reg) {
switch (reg) {
static u32 GetSpecialRegValue(int reg)
{
switch (reg)
{
case 0: return PowerPC::ppcState.pc;
case 1: return PowerPC::ppcState.spr[SPR_LR];
case 2: return PowerPC::ppcState.spr[SPR_CTR];
Expand All @@ -50,29 +52,37 @@ static u32 GetSpecialRegValue(int reg) {

wxString CRegTable::GetValue(int row, int col)
{
if (row < 32) {
switch (col) {
if (row < 32)
{
switch (col)
{
case 0: return StrToWxStr(GetGPRName(row));
case 1: return wxString::Format(wxT("%08x"), GPR(row));
case 2: return StrToWxStr(GetFPRName(row));
case 3: return wxString::Format(wxT("%016llx"), riPS0(row));
case 4: return wxString::Format(wxT("%016llx"), riPS1(row));
default: return wxEmptyString;
}
} else {
if (row - 32 < NUM_SPECIALS) {
switch (col) {
}
else
{
if (row - 32 < NUM_SPECIALS)
{
switch (col)
{
case 0: return StrToWxStr(special_reg_names[row - 32]);
case 1: return wxString::Format(wxT("%08x"), GetSpecialRegValue(row - 32));
default: return wxEmptyString;
}
}
}
}
return wxEmptyString;
return wxEmptyString;
}

static void SetSpecialRegValue(int reg, u32 value) {
switch (reg) {
static void SetSpecialRegValue(int reg, u32 value)
{
switch (reg)
{
case 0: PowerPC::ppcState.pc = value; break;
case 1: PowerPC::ppcState.spr[SPR_LR] = value; break;
case 2: PowerPC::ppcState.spr[SPR_CTR] = value; break;
Expand All @@ -94,15 +104,19 @@ void CRegTable::SetValue(int row, int col, const wxString& strNewVal)
u32 newVal = 0;
if (TryParse(WxStrToStr(strNewVal), &newVal))
{
if (row < 32) {
if (row < 32)
{
if (col == 1)
GPR(row) = newVal;
else if (col == 3)
riPS0(row) = newVal;
else if (col == 4)
riPS1(row) = newVal;
} else {
if ((row - 32 < NUM_SPECIALS) && (col == 1)) {
}
else
{
if ((row - 32 < NUM_SPECIALS) && (col == 1))
{
SetSpecialRegValue(row - 32, newVal);
}
}
Expand Down Expand Up @@ -135,7 +149,8 @@ wxGridCellAttr *CRegTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind)
attr->SetBackgroundColour(wxColour(wxT("#FFFFFF"))); //wxWHITE
attr->SetFont(DebuggerFont);

switch (col) {
switch (col)
{
case 1:
attr->SetAlignment(wxALIGN_CENTER, wxALIGN_CENTER);
break;
Expand All @@ -149,11 +164,13 @@ wxGridCellAttr *CRegTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind)
}

bool red = false;
switch (col) {
switch (col)
{
case 1: red = row < 32 ? m_CachedRegHasChanged[row] : m_CachedSpecialRegHasChanged[row-32]; break;
case 3:
case 4: red = row < 32 ? m_CachedFRegHasChanged[row][col-3] : false; break;
}

attr->SetTextColour(red ? wxColor(wxT("#FF0000")) : wxColor(wxT("#000000")));
attr->IncRef();
return attr;
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/DolphinWX/Src/Debugger/RegisterWindow.cpp
Expand Up @@ -28,8 +28,8 @@ END_EVENT_TABLE()


CRegisterWindow::CRegisterWindow(wxWindow* parent, wxWindowID id,
const wxPoint& position, const wxSize& size,
long style, const wxString& name)
const wxPoint& position, const wxSize& size,
long style, const wxString& name)
: wxPanel(parent, id, position, size, style, name)
, m_GPRGridView(NULL)
{
Expand Down
18 changes: 16 additions & 2 deletions Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp
Expand Up @@ -387,18 +387,23 @@ void FifoPlayerDlg::OnCheckEarlyMemoryUpdates(wxCommandEvent& event)

void FifoPlayerDlg::OnSaveFile(wxCommandEvent& WXUNUSED(event))
{
// Pointer to the file data that was created as a result of recording.
FifoDataFile *file = FifoRecorder::GetInstance().GetRecordedFile();

if (file)
{
{
// Bring up a save file dialog. The location the user chooses will be assigned to this variable.
wxString path = wxSaveFileSelector(_("Dolphin FIFO"), wxT("dff"), wxEmptyString, this);

// Has a valid file path
if (!path.empty())
{
// Attempt to save the file to the path the user chose
wxBeginBusyCursor();
bool result = file->Save(WxStrToStr(path).c_str());
wxEndBusyCursor();

// Wasn't able to save the file, shit's whack, yo.
if (!result)
PanicAlert("Error saving file");
}
Expand All @@ -409,14 +414,21 @@ void FifoPlayerDlg::OnRecordStop(wxCommandEvent& WXUNUSED(event))
{
FifoRecorder& recorder = FifoRecorder::GetInstance();

// Recorder is still recording
if (recorder.IsRecording())
{
// Then stop recording
recorder.StopRecording();

// and disable the button to stop recording
m_RecordStop->Disable();
}
else
else // Recorder is actually about to start recording
{
// So start recording
recorder.StartRecording(m_FramesToRecord, RecordingFinished);

// and change the button label accordingly.
m_RecordStop->SetLabel(_("Stop"));
}
}
Expand Down Expand Up @@ -839,10 +851,12 @@ void FifoPlayerDlg::UpdateAnalyzerGui()
if ((int)m_framesList->GetCount() != num_frames)
{
m_framesList->Clear();

for (int i = 0; i < num_frames; ++i)
{
m_framesList->Append(wxString::Format(wxT("Frame %i"), i));
}

wxCommandEvent ev = wxCommandEvent(wxEVT_COMMAND_LISTBOX_SELECTED);
ev.SetInt(-1);
OnFrameListSelectionChanged(ev);
Expand Down
21 changes: 17 additions & 4 deletions Source/Core/DolphinWX/Src/Frame.cpp
Expand Up @@ -468,10 +468,13 @@ void CFrame::OnClose(wxCloseEvent& event)
event.Skip();

// Save GUI settings
if (g_pCodeWindow) SaveIniPerspectives();
// Close the log window now so that its settings are saved
if (g_pCodeWindow)
{
SaveIniPerspectives();
}
else
{
// Close the log window now so that its settings are saved
m_LogWindow->Close();
m_LogWindow = NULL;
}
Expand All @@ -494,7 +497,9 @@ void CFrame::PostEvent(wxCommandEvent& event)
g_pCodeWindow->GetEventHandler()->AddPendingEvent(event);
}
else
{
event.Skip();
}
}

void CFrame::OnMove(wxMoveEvent& event)
Expand Down Expand Up @@ -706,16 +711,20 @@ void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event))
m_GameListCtrl->Update();
}
else if (!m_GameListCtrl->GetISO(0))
{
m_GameListCtrl->BrowseForDirectory();
}
else
{
// Game started by double click
BootGame(std::string(""));
}
}

bool IsHotkey(wxKeyEvent &event, int Id)
{
return (event.GetKeyCode() != WXK_NONE &&
event.GetKeyCode() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkey[Id] &&
event.GetKeyCode() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkey[Id] &&
event.GetModifiers() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkeyModifier[Id]);
}

Expand Down Expand Up @@ -853,7 +862,7 @@ void CFrame::OnKeyDown(wxKeyEvent& event)
DoFullscreen(!RendererIsFullscreen());
// Send Debugger keys to CodeWindow
else if (g_pCodeWindow && (event.GetKeyCode() >= WXK_F9 && event.GetKeyCode() <= WXK_F11))
event.Skip();
event.Skip();
// Pause and Unpause
else if (IsHotkey(event, HK_PLAY_PAUSE))
DoPause();
Expand Down Expand Up @@ -964,7 +973,9 @@ void CFrame::OnKeyDown(wxKeyEvent& event)
}
}
else
{
event.Skip();
}
}

void CFrame::OnKeyUp(wxKeyEvent& event)
Expand Down Expand Up @@ -1019,7 +1030,9 @@ void CFrame::DoFullscreen(bool bF)
}
}
else
{
m_RenderFrame->Raise();
}
}

const CGameListCtrl *CFrame::GetGameListCtrl() const
Expand Down
12 changes: 6 additions & 6 deletions Source/Core/DolphinWX/Src/Frame.h
Expand Up @@ -120,7 +120,7 @@ class CFrame : public CRenderFrame
#endif
}

// These have to be public
// These have to be public
CCodeWindow* g_pCodeWindow;
NetPlaySetupDiag* g_NetPlaySetupDiag;
wxCheatsWindow* g_CheatsWindow;
Expand All @@ -134,7 +134,7 @@ class CFrame : public CRenderFrame
void UpdateGameList();
void ToggleLogWindow(bool bShow);
void ToggleLogConfigWindow(bool bShow);
void ToggleConsole(bool bShow);
void ToggleConsole(bool bShow);
void PostEvent(wxCommandEvent& event);
void StatusBarMessage(const char * Text, ...);
void ClearStatusBar();
Expand Down Expand Up @@ -209,7 +209,7 @@ class CFrame : public CRenderFrame
Toolbar_ConfigGFX,
Toolbar_ConfigDSP,
Toolbar_ConfigPAD,
Toolbar_Wiimote,
Toolbar_Wiimote,
Toolbar_Help,
EToolbar_Max
};
Expand Down Expand Up @@ -305,10 +305,10 @@ class CFrame : public CRenderFrame
void OnLoadLastState(wxCommandEvent& event);
void OnUndoLoadState(wxCommandEvent& event);
void OnUndoSaveState(wxCommandEvent& event);

void OnFrameSkip(wxCommandEvent& event);
void OnFrameStep(wxCommandEvent& event);

void OnConfigMain(wxCommandEvent& event); // Options
void OnConfigGFX(wxCommandEvent& event);
void OnConfigDSP(wxCommandEvent& event);
Expand All @@ -332,7 +332,7 @@ class CFrame : public CRenderFrame
void OnKeyUp(wxKeyEvent& event);

void OnMouse(wxMouseEvent& event); // Mouse

void OnHostMessage(wxCommandEvent& event);

void OnMemcard(wxCommandEvent& event); // Misc
Expand Down
96 changes: 84 additions & 12 deletions Source/Core/DolphinWX/Src/FrameAui.cpp
Expand Up @@ -67,11 +67,15 @@ void CFrame::OnPaneClose(wxAuiManagerEvent& event)
else
{
if (GetNotebookCount() == 1)
{
wxMessageBox(_("At least one pane must remain open."),
_("Notice"), wxOK, this);
}
else if (nb->GetPageCount() != 0 && !nb->GetPageText(0).IsSameAs(wxT("<>")))
{
wxMessageBox(_("You can't close panes that have pages in them."),
_("Notice"), wxOK, this);
}
else
{
// Detach and delete the empty notebook
Expand All @@ -92,14 +96,21 @@ void CFrame::ToggleLogWindow(bool bShow)

if (bShow)
{
if (!m_LogWindow) m_LogWindow = new CLogWindow(this, IDM_LOGWINDOW);
// Create a new log window if it doesn't exist.
if (!m_LogWindow)
{
m_LogWindow = new CLogWindow(this, IDM_LOGWINDOW);
}

m_LogWindow->Enable();

DoAddPage(m_LogWindow,
g_pCodeWindow ? g_pCodeWindow->iNbAffiliation[0] : 0,
g_pCodeWindow ? bFloatWindow[0] : false);
}
else
{
// Hiding the log window, so disable it and remove it.
m_LogWindow->Disable();
DoRemovePage(m_LogWindow, true);
}
Expand All @@ -117,6 +128,7 @@ void CFrame::ToggleLogConfigWindow(bool bShow)
{
if (!m_LogConfigWindow)
m_LogConfigWindow = new LogConfigWindow(this, m_LogWindow, IDM_LOGCONFIGWINDOW);

const int nbIndex = IDM_LOGCONFIGWINDOW - IDM_LOGWINDOW;
DoAddPage(m_LogConfigWindow,
g_pCodeWindow ? g_pCodeWindow->iNbAffiliation[nbIndex] : 0,
Expand Down Expand Up @@ -147,7 +159,9 @@ void CFrame::ToggleConsole(bool bShow)
Console->Open();
}
else
{
ShowWindow(GetConsoleWindow(), SW_SHOW);
}

// Create the parent window if it doesn't exist
wxPanel *ConsoleParent = (wxPanel*)FindWindowById(IDM_CONSOLEWINDOW);
Expand Down Expand Up @@ -248,7 +262,9 @@ void CFrame::ClosePages()
void CFrame::OnNotebookPageChanged(wxAuiNotebookEvent& event)
{
event.Skip();
if (!g_pCodeWindow) return;

if (!g_pCodeWindow)
return;

// Remove the blank page if any
AddRemoveBlankPage();
Expand Down Expand Up @@ -364,6 +380,7 @@ void CFrame::OnTab(wxAuiNotebookEvent& event)
MenuPopup->Append(Item);
Item->Enable(false);
MenuPopup->Append(new wxMenuItem(MenuPopup));

for (int i = IDM_LOGWINDOW; i <= IDM_CODEWINDOW; i++)
{
wxWindow *Win = FindWindowById(i);
Expand All @@ -379,6 +396,7 @@ void CFrame::OnTab(wxAuiNotebookEvent& event)
// Line up our menu with the cursor
wxPoint Pt = ::wxGetMousePosition();
Pt = ScreenToClient(Pt);

// Show
PopupMenu(MenuPopup, Pt);
}
Expand Down Expand Up @@ -425,6 +443,7 @@ void CFrame::TogglePane()
if (m_Mgr->GetAllPanes()[i].window->IsKindOf(CLASSINFO(wxAuiNotebook)))
NB = (wxAuiNotebook*)m_Mgr->GetAllPanes()[i].window;
}

if (NB)
{
if (NB->GetPageCount() == 0)
Expand All @@ -433,7 +452,9 @@ void CFrame::TogglePane()
m_Mgr->Update();
}
else
{
ShowResizePane();
}
}
}

Expand All @@ -452,7 +473,10 @@ void CFrame::DoRemovePage(wxWindow *Win, bool bHide)
Win->Reparent(this);
}
else
{
Win->Destroy();
}

Parent->Destroy();
}
else
Expand All @@ -469,19 +493,29 @@ void CFrame::DoRemovePage(wxWindow *Win, bool bHide)
Win->Reparent(this);
}
else
{
Win->Destroy();
}
}
}
}

if (g_pCodeWindow)
AddRemoveBlankPage();
}

void CFrame::DoAddPage(wxWindow *Win, int i, bool Float)
{
if (!Win) return;
if (i < 0 || i > GetNotebookCount()-1) i = 0;
if (Win && GetNotebookFromId(i)->GetPageIndex(Win) != wxNOT_FOUND) return;

// Ensure accessor remains within valid bounds.
if (i < 0 || i > GetNotebookCount()-1)
i = 0;

// The page was already previously added, no need to add it again.
if (Win && GetNotebookFromId(i)->GetPageIndex(Win) != wxNOT_FOUND)
return;

if (!Float)
GetNotebookFromId(i)->AddPage(Win, Win->GetName(), true);
else
Expand Down Expand Up @@ -520,10 +554,15 @@ void CFrame::OnDropDownSettingsToolbar(wxAuiToolBarEvent& event)
wxRect rect = Tb->GetToolRect(event.GetId());
wxPoint Pt = Tb->ClientToScreen(rect.GetBottomLeft());
Pt = ScreenToClient(Pt);

// Show
PopupMenu(menuPopup, Pt);

// Make the button un-stuck again
if (!m_bEdit) Tb->SetToolSticky(event.GetId(), false);
if (!m_bEdit)
{
Tb->SetToolSticky(event.GetId(), false);
}
}
}

Expand Down Expand Up @@ -551,17 +590,24 @@ void CFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& event)
wxMenuItem* mItem = new wxMenuItem(menuPopup, IDM_PERSPECTIVES_0 + i,
StrToWxStr(Perspectives[i].Name),
wxT(""), wxITEM_CHECK);

menuPopup->Append(mItem);
if (i == ActivePerspective) mItem->Check(true);

if (i == ActivePerspective)
{
mItem->Check(true);
}
}
}

// line up our menu with the button
wxRect rect = tb->GetToolRect(event.GetId());
wxPoint pt = tb->ClientToScreen(rect.GetBottomLeft());
pt = ScreenToClient(pt);

// show
PopupMenu(menuPopup, pt);

// make sure the button is "un-stuck"
tb->SetToolSticky(event.GetId(), false);
}
Expand Down Expand Up @@ -609,12 +655,17 @@ void CFrame::OnDropDownToolbarSelect(wxCommandEvent& event)
wxString DefaultValue = wxString::Format(_("Perspective %d"),
Perspectives.size() + 1);
dlg.SetValue(DefaultValue);
bool DlgOk = false; int Return = 0;

int Return = 0;
bool DlgOk = false;

while (!DlgOk)
{
Return = dlg.ShowModal();
if (Return == wxID_CANCEL)
{
return;
}
else if (dlg.GetValue().Find(wxT(",")) != -1)
{
wxMessageBox(_("The name can not contain the character ','"),
Expand All @@ -630,7 +681,9 @@ void CFrame::OnDropDownToolbarSelect(wxCommandEvent& event)
dlg.SetValue(DefaultValue);
}
else
{
DlgOk = true;
}
}

SPerspectives Tmp;
Expand Down Expand Up @@ -663,9 +716,12 @@ void CFrame::ResetToolbarStyle()
if (Pane.window->IsKindOf(CLASSINFO(wxAuiToolBar)))
{
Pane.Show();

// Show all of it
if (Pane.rect.GetLeft() > GetClientSize().GetX() - 50)
{
Pane.Position(GetClientSize().GetX() - Pane.window->GetClientSize().GetX());
}
}
}
m_Mgr->Update();
Expand Down Expand Up @@ -765,22 +821,31 @@ static int Limit(int i, int Low, int High)

void CFrame::SetPaneSize()
{
if (Perspectives.size() <= ActivePerspective) return;
int iClientX = GetSize().GetX(), iClientY = GetSize().GetY();
if (Perspectives.size() <= ActivePerspective)
return;

int iClientX = GetSize().GetX();
int iClientY = GetSize().GetY();

for (u32 i = 0, j = 0; i < m_Mgr->GetAllPanes().GetCount(); i++)
{
if (!m_Mgr->GetAllPanes()[i].window->IsKindOf(CLASSINFO(wxAuiToolBar)))
{
if (!m_Mgr->GetAllPanes()[i].IsOk()) return;
if (!m_Mgr->GetAllPanes()[i].IsOk())
return;

if (Perspectives[ActivePerspective].Width.size() <= j ||
Perspectives[ActivePerspective].Height.size() <= j)
continue;

// Width and height of the active perspective
u32 W = Perspectives[ActivePerspective].Width[j],
H = Perspectives[ActivePerspective].Height[j];

// Check limits
W = Limit(W, 5, 95);
H = Limit(H, 5, 95);

// Convert percentages to pixel lengths
W = (W * iClientX) / 100;
H = (H * iClientY) / 100;
Expand Down Expand Up @@ -859,8 +924,10 @@ void CFrame::LoadIniPerspectives()
std::string _Section, _Perspective, _Width, _Height;
std::vector<std::string> _SWidth, _SHeight;
Tmp.Name = VPerspectives[i];

// Don't save a blank perspective
if (Tmp.Name.empty()) continue;
if (Tmp.Name.empty())
continue;

_Section = StringFromFormat("P - %s", Tmp.Name.c_str());
ini.Get(_Section.c_str(), "Perspective", &_Perspective,
Expand Down Expand Up @@ -984,10 +1051,12 @@ wxWindow * CFrame::GetNotebookPageFromId(wxWindowID Id)
{
if (!m_Mgr->GetAllPanes()[i].window->IsKindOf(CLASSINFO(wxAuiNotebook)))
continue;

wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes()[i].window;
for(u32 j = 0; j < NB->GetPageCount(); j++)
{
if (NB->GetPage(j)->GetId() == Id) return NB->GetPage(j);
if (NB->GetPage(j)->GetId() == Id)
return NB->GetPage(j);
}
}
return NULL;
Expand Down Expand Up @@ -1036,12 +1105,14 @@ void CFrame::AddRemoveBlankPage()
{
if (!m_Mgr->GetAllPanes()[i].window->IsKindOf(CLASSINFO(wxAuiNotebook)))
continue;

wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes()[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(new wxPanel(this, wxID_ANY), wxT("<>"), true);
}
Expand All @@ -1053,6 +1124,7 @@ int CFrame::GetNotebookAffiliation(wxWindowID Id)
{
if (!m_Mgr->GetAllPanes()[i].window->IsKindOf(CLASSINFO(wxAuiNotebook)))
continue;

wxAuiNotebook * NB = (wxAuiNotebook*)m_Mgr->GetAllPanes()[i].window;
for(u32 k = 0; k < NB->GetPageCount(); k++)
{
Expand Down
66 changes: 54 additions & 12 deletions Source/Core/DolphinWX/Src/FrameTools.cpp
Expand Up @@ -177,10 +177,12 @@ void CFrame::CreateMenu()
loadMenu->Append(IDM_UNDOLOADSTATE, _("Undo Load State") + wxString(wxT("\tShift+F12")));
loadMenu->AppendSeparator();

for (int i = 1; i <= 8; i++) {
for (int i = 1; i <= 8; i++)
{
loadMenu->Append(IDM_LOADSLOT1 + i - 1, GetMenuLabel(HK_LOAD_STATE_SLOT_1 + i - 1));
saveMenu->Append(IDM_SAVESLOT1 + i - 1, GetMenuLabel(HK_SAVE_STATE_SLOT_1 + i - 1));
}

m_MenuBar->Append(emulationMenu, _("&Emulation"));

// Options menu
Expand Down Expand Up @@ -297,7 +299,10 @@ void CFrame::CreateMenu()
viewMenu->Append(IDM_PURGECACHE, _("Purge Cache"));
m_MenuBar->Append(viewMenu, _("&View"));

if (g_pCodeWindow) g_pCodeWindow->CreateMenu(SConfig::GetInstance().m_LocalCoreStartupParameter, m_MenuBar);
if (g_pCodeWindow)
{
g_pCodeWindow->CreateMenu(SConfig::GetInstance().m_LocalCoreStartupParameter, m_MenuBar);
}

// Help menu
wxMenu* helpMenu = new wxMenu;
Expand Down Expand Up @@ -428,8 +433,8 @@ void CFrame::PopulateToolbar(wxAuiToolBar* ToolBar)
{
int w = m_Bitmaps[Toolbar_FileOpen].GetWidth(),
h = m_Bitmaps[Toolbar_FileOpen].GetHeight();
ToolBar->SetToolBitmapSize(wxSize(w, h));
ToolBar->SetToolBitmapSize(wxSize(w, h));


ToolBar->AddTool(wxID_OPEN, _("Open"), m_Bitmaps[Toolbar_FileOpen], _("Open file..."));
ToolBar->AddTool(wxID_REFRESH, _("Refresh"), m_Bitmaps[Toolbar_Refresh], _("Refresh game list"));
Expand Down Expand Up @@ -558,12 +563,16 @@ void CFrame::BootGame(const std::string& filename)
}
else if (!StartUp.m_strDefaultGCM.empty()
&& wxFileExists(wxSafeConvertMB2WX(StartUp.m_strDefaultGCM.c_str())))
{
bootfile = StartUp.m_strDefaultGCM;
}
else
{
if (!SConfig::GetInstance().m_LastFilename.empty()
&& wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
{
bootfile = SConfig::GetInstance().m_LastFilename;
}
else
{
m_GameListCtrl->BrowseForDirectory();
Expand Down Expand Up @@ -608,7 +617,9 @@ void CFrame::DoOpen(bool Boot)

// Should we boot a new game or just change the disc?
if (Boot && !path.IsEmpty())
{
BootGame(WxStrToStr(path));
}
else
{
DVDInterface::ChangeDisc(WxStrToStr(path).c_str());
Expand Down Expand Up @@ -666,7 +677,8 @@ void CFrame::OnRecord(wxCommandEvent& WXUNUSED (event))
GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Check(false);
}

for (int i = 0; i < 4; i++) {
for (int i = 0; i < 4; i++)
{
if (SConfig::GetInstance().m_SIDevice[i] == SIDEVICE_GC_CONTROLLER || SConfig::GetInstance().m_SIDevice[i] == SIDEVICE_GC_TARUKONGA)
controllers |= (1 << i);

Expand Down Expand Up @@ -726,11 +738,15 @@ void CFrame::OnPlay(wxCommandEvent& WXUNUSED (event))
UpdateGUI();
}
else
{
DoPause();
}
}
else
{
// Core is uninitialized, start the game
BootGame(std::string(""));
}
}

void CFrame::OnRenderParentClose(wxCloseEvent& event)
Expand All @@ -757,7 +773,7 @@ void CFrame::OnRenderParentResize(wxSizeEvent& event)
{
int width, height;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain &&
!RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized())
!RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized())
{
m_RenderFrame->GetClientSize(&width, &height);
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth = width;
Expand Down Expand Up @@ -920,13 +936,19 @@ void CFrame::OnBootDrive(wxCommandEvent& event)
// Refresh the file list and browse for a favorites directory
void CFrame::OnRefresh(wxCommandEvent& WXUNUSED (event))
{
if (m_GameListCtrl) m_GameListCtrl->Update();
if (m_GameListCtrl)
{
m_GameListCtrl->Update();
}
}


void CFrame::OnBrowse(wxCommandEvent& WXUNUSED (event))
{
if (m_GameListCtrl) m_GameListCtrl->BrowseForDirectory();
if (m_GameListCtrl)
{
m_GameListCtrl->BrowseForDirectory();
}
}

// Create screenshot
Expand Down Expand Up @@ -1127,7 +1149,9 @@ void CFrame::OnConfigPAD(wxCommandEvent& WXUNUSED (event))
InputPlugin *const pad_plugin = Pad::GetPlugin();
bool was_init = false;
if (g_controller_interface.IsInit()) // check if game is running
{
was_init = true;
}
else
{
#if defined(HAVE_X11) && HAVE_X11
Expand All @@ -1153,7 +1177,9 @@ void CFrame::OnConfigWiimote(wxCommandEvent& WXUNUSED (event))
InputPlugin *const wiimote_plugin = Wiimote::GetPlugin();
bool was_init = false;
if (g_controller_interface.IsInit()) // check if game is running
{
was_init = true;
}
else
{
#if defined(HAVE_X11) && HAVE_X11
Expand Down Expand Up @@ -1204,7 +1230,10 @@ void CFrame::OnHelp(wxCommandEvent& event)

void CFrame::ClearStatusBar()
{
if (this->GetStatusBar()->IsEnabled()) this->GetStatusBar()->SetStatusText(wxT(""),0);
if (this->GetStatusBar()->IsEnabled())
{
this->GetStatusBar()->SetStatusText(wxT(""),0);
}
}

void CFrame::StatusBarMessage(const char * Text, ...)
Expand All @@ -1216,7 +1245,10 @@ void CFrame::StatusBarMessage(const char * Text, ...)
vsnprintf(Str, MAX_BYTES, Text, ArgPtr);
va_end(ArgPtr);

if (this->GetStatusBar()->IsEnabled()) this->GetStatusBar()->SetStatusText(StrToWxStr(Str),0);
if (this->GetStatusBar()->IsEnabled())
{
this->GetStatusBar()->SetStatusText(StrToWxStr(Str),0);
}
}


Expand All @@ -1233,7 +1265,9 @@ void CFrame::OnNetPlay(wxCommandEvent& WXUNUSED (event))
g_NetPlaySetupDiag = new NetPlaySetupDiag(this, m_GameListCtrl);
}
else
{
g_NetPlaySetupDiag->Raise();
}
}

void CFrame::OnMemcard(wxCommandEvent& WXUNUSED (event))
Expand Down Expand Up @@ -1618,7 +1652,11 @@ void CFrame::UpdateGUI()
m_bGameLoading = false;
}

if (m_ToolBar) m_ToolBar->Refresh();
// Refresh toolbar
if (m_ToolBar)
{
m_ToolBar->Refresh();
}

// Commit changes to manager
m_Mgr->Update();
Expand Down Expand Up @@ -1685,7 +1723,11 @@ void CFrame::GameListChanged(wxCommandEvent& event)
break;
}

if (m_GameListCtrl) m_GameListCtrl->Update();
// Update gamelist
if (m_GameListCtrl)
{
m_GameListCtrl->Update();
}
}

// Enable and disable the toolbar
Expand Down
11 changes: 6 additions & 5 deletions Source/Core/DolphinWX/Src/GCMicDlg.cpp
Expand Up @@ -22,7 +22,7 @@

BEGIN_EVENT_TABLE(GCMicDialog,wxDialog)
EVT_COMMAND_RANGE(0, NUM_HOTKEYS - 1,
wxEVT_COMMAND_BUTTON_CLICKED, GCMicDialog::OnButtonClick)
wxEVT_COMMAND_BUTTON_CLICKED, GCMicDialog::OnButtonClick)
EVT_TIMER(wxID_ANY, GCMicDialog::OnButtonTimer)
END_EVENT_TABLE()

Expand Down Expand Up @@ -86,8 +86,8 @@ void GCMicDialog::OnKeyDown(wxKeyEvent& event)
else
{
SetButtonText(ClickedButton->GetId(),
InputCommon::WXKeyToString(g_Pressed),
InputCommon::WXKeymodToString(g_Modkey));
InputCommon::WXKeyToString(g_Pressed),
InputCommon::WXKeymodToString(g_Modkey));
SaveButtonMapping(ClickedButton->GetId(), g_Pressed, g_Modkey);
}
EndGetButtons();
Expand All @@ -112,7 +112,7 @@ void GCMicDialog::DoGetButtons(int _GetId)
if(m_ButtonMappingTimer->IsRunning())
m_ButtonMappingTimer->Stop();

// Save the button Id
// Save the button Id
GetButtonWaitingID = _GetId;
GetButtonWaitingTimer = 0;

Expand Down Expand Up @@ -149,7 +149,8 @@ void GCMicDialog::OnButtonClick(wxCommandEvent& event)
{
event.Skip();

if (m_ButtonMappingTimer->IsRunning()) return;
if (m_ButtonMappingTimer->IsRunning())
return;

wxTheApp->Bind(wxEVT_KEY_DOWN, &GCMicDialog::OnKeyDown, this);

Expand Down
25 changes: 21 additions & 4 deletions Source/Core/DolphinWX/Src/GameListCtrl.cpp
Expand Up @@ -61,7 +61,7 @@ bool sorted = false;
extern CFrame* main_frame;

static int CompareGameListItems(const GameListItem* iso1, const GameListItem* iso2,
long sortData = CGameListCtrl::COLUMN_TITLE)
long sortData = CGameListCtrl::COLUMN_TITLE)
{
int t = 1;

Expand Down Expand Up @@ -732,7 +732,9 @@ void CGameListCtrl::OnKeyPress(wxListEvent& event)
continue;
}
else if (lastKey != event.GetKeyCode())
{
sLoop = 0;
}

lastKey = event.GetKeyCode();
sLoop++;
Expand Down Expand Up @@ -801,7 +803,9 @@ void CGameListCtrl::OnMouseMotion(wxMouseEvent& event)
toolTip = new wxEmuStateTip(this, StrToWxStr(temp), &toolTip);
}
else
{
toolTip = new wxEmuStateTip(this, _("Not Set"), &toolTip);
}

// Get item Coords
GetItemRect(item, Rect);
Expand Down Expand Up @@ -891,8 +895,11 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
else if (selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".ciso"
&& selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".wbfs")
popupMenu->Append(IDM_COMPRESSGCM, _("Compress ISO..."));
} else
}
else
{
popupMenu->Append(IDM_LIST_INSTALLWAD, _("Install to Wii Menu"));
}

PopupMenu(popupMenu);
}
Expand All @@ -911,14 +918,20 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
const GameListItem * CGameListCtrl::GetSelectedISO()
{
if (m_ISOFiles.size() == 0)
{
return NULL;
}
else if (GetSelectedItemCount() == 0)
{
return NULL;
}
else
{
long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
if (item == wxNOT_FOUND)
{
return NULL;
}
else
{
// Here is a little workaround for multiselections:
Expand Down Expand Up @@ -1030,6 +1043,7 @@ void CGameListCtrl::OnProperties(wxCommandEvent& WXUNUSED (event))
const GameListItem *iso = GetSelectedISO();
if (!iso)
return;

CISOProperties ISOProperties(iso->GetFileName(), this);
if(ISOProperties.ShowModal() == wxID_OK)
Update();
Expand Down Expand Up @@ -1249,7 +1263,9 @@ void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event))

void CGameListCtrl::OnSize(wxSizeEvent& event)
{
if (lastpos == event.GetSize()) return;
if (lastpos == event.GetSize())
return;

lastpos = event.GetSize();
AutomaticColumnWidth();

Expand All @@ -1261,7 +1277,9 @@ void CGameListCtrl::AutomaticColumnWidth()
wxRect rc(GetClientRect());

if (GetColumnCount() == 1)
{
SetColumnWidth(0, rc.GetWidth());
}
else if (GetColumnCount() > 4)
{
int resizable = rc.GetWidth() - (
Expand Down Expand Up @@ -1291,7 +1309,6 @@ void CGameListCtrl::UnselectAll()
{
SetItemState(i, 0, wxLIST_STATE_SELECTED);
}

}


4 changes: 4 additions & 0 deletions Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp
Expand Up @@ -301,10 +301,14 @@ void CodeConfigPanel::DownloadCodes(wxCommandEvent&)
UpdateCodeList();
}
else
{
PanicAlertT("File contained no codes.");
}
}
else
{
PanicAlertT("Failed to download codes.");
}
}

}
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DolphinWX/Src/Globals.h
Expand Up @@ -185,7 +185,7 @@ enum
IDM_LOADMAPFILE,
IDM_SAVEMAPFILE, IDM_SAVEMAPFILEWITHCODES,
IDM_CREATESIGNATUREFILE,
IDM_RENAME_SYMBOLS,
IDM_RENAME_SYMBOLS,
IDM_USESIGNATUREFILE,
IDM_PATCHHLEFUNCTIONS,

Expand Down
12 changes: 7 additions & 5 deletions Source/Core/DolphinWX/Src/HotkeyDlg.cpp
@@ -1,3 +1,4 @@

// Copyright (C) 2003 Dolphin Project.

// This program is free software: you can redistribute it and/or modify
Expand All @@ -22,7 +23,7 @@

BEGIN_EVENT_TABLE(HotkeyConfigDialog,wxDialog)
EVT_COMMAND_RANGE(0, NUM_HOTKEYS - 1,
wxEVT_COMMAND_BUTTON_CLICKED, HotkeyConfigDialog::OnButtonClick)
wxEVT_COMMAND_BUTTON_CLICKED, HotkeyConfigDialog::OnButtonClick)
EVT_TIMER(wxID_ANY, HotkeyConfigDialog::OnButtonTimer)
END_EVENT_TABLE()

Expand Down Expand Up @@ -86,8 +87,8 @@ void HotkeyConfigDialog::OnKeyDown(wxKeyEvent& event)
else
{
SetButtonText(ClickedButton->GetId(),
InputCommon::WXKeyToString(g_Pressed),
InputCommon::WXKeymodToString(g_Modkey));
InputCommon::WXKeyToString(g_Pressed),
InputCommon::WXKeymodToString(g_Modkey));
SaveButtonMapping(ClickedButton->GetId(), g_Pressed, g_Modkey);
}
EndGetButtons();
Expand All @@ -112,7 +113,7 @@ void HotkeyConfigDialog::DoGetButtons(int _GetId)
if(m_ButtonMappingTimer->IsRunning())
m_ButtonMappingTimer->Stop();

// Save the button Id
// Save the button Id
GetButtonWaitingID = _GetId;
GetButtonWaitingTimer = 0;

Expand Down Expand Up @@ -149,7 +150,8 @@ void HotkeyConfigDialog::OnButtonClick(wxCommandEvent& event)
{
event.Skip();

if (m_ButtonMappingTimer->IsRunning()) return;
if (m_ButtonMappingTimer->IsRunning())
return;

wxTheApp->Bind(wxEVT_KEY_DOWN, &HotkeyConfigDialog::OnKeyDown, this);

Expand Down
21 changes: 20 additions & 1 deletion Source/Core/DolphinWX/Src/ISOProperties.cpp
Expand Up @@ -98,7 +98,9 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
}
}
else
{
break;
}
}
}
else
Expand Down Expand Up @@ -131,9 +133,13 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
_iniFilename = tmp;
}
}

GameIniFile = File::GetUserPath(D_GAMECONFIG_IDX) + _iniFilename + ".ini";

if (GameIni.Load(GameIniFile.c_str()))
{
LoadGameConfig();
}
else
{
// Will fail out if GameConfig folder doesn't exist
Expand All @@ -148,6 +154,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
<< "[ActionReplay] Add action replay cheats here.\n";
f.close();
}

if (GameIni.Load(GameIniFile.c_str()))
LoadGameConfig();
else
Expand Down Expand Up @@ -226,7 +233,9 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
}
}
else if (!GCFiles.empty())
{
CreateDirectoryTree(RootId, GCFiles, 1, GCFiles.at(0)->m_FileSize);
}

m_Treectrl->Expand(RootId);
}
Expand Down Expand Up @@ -255,7 +264,11 @@ size_t CISOProperties::CreateDirectoryTree(wxTreeItemId& parent,
const DiscIO::SFileInfo *rFileInfo = fileInfos[CurrentIndex];
char *name = (char*)rFileInfo->m_FullPath;

if (rFileInfo->IsDirectory()) name[strlen(name) - 1] = '\0';
if (rFileInfo->IsDirectory())
{
name[strlen(name) - 1] = '\0';
}

char *itemName = strrchr(name, DIR_SEP_CHR);

if(!itemName)
Expand Down Expand Up @@ -664,7 +677,9 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event))
WiiDisc.at(partitionNum).FileSystem->ExportFile(WxStrToStr(File).c_str(), WxStrToStr(Path).c_str());
}
else
{
pFileSystem->ExportFile(WxStrToStr(File).c_str(), WxStrToStr(Path).c_str());
}
}

void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolder, const int partitionNum)
Expand All @@ -679,7 +694,9 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde
FS = WiiDisc.at(partitionNum).FileSystem;
}
else
{
FS = pFileSystem;
}

FS->GetFileList(fst);

Expand Down Expand Up @@ -799,7 +816,9 @@ void CISOProperties::OnExtractDir(wxCommandEvent& event)
ExportDir(WxStrToStr(Directory).c_str(), WxStrToStr(Path).c_str(), partitionNum);
}
else
{
ExportDir(WxStrToStr(Directory).c_str(), WxStrToStr(Path).c_str());
}
}

void CISOProperties::OnExtractDataFromHeader(wxCommandEvent& event)
Expand Down
4 changes: 4 additions & 0 deletions Source/Core/DolphinWX/Src/InputConfigDiag.cpp
Expand Up @@ -600,7 +600,9 @@ void GamepadPage::SaveProfile(wxCommandEvent&)
m_config_dialog->UpdateProfileComboBox();
}
else
{
PanicAlertT("You must enter a valid profile name.");
}
}

void GamepadPage::DeleteProfile(wxCommandEvent&)
Expand Down Expand Up @@ -872,7 +874,9 @@ ControlGroupsSizer::ControlGroupsSizer(ControllerEmu* const controller, wxWindow
col_size = grp_size;
}
else
{
stacked_groups->Add(control_group, 0, wxEXPAND);
}

if (groups)
groups->push_back(control_group_box);
Expand Down
4 changes: 4 additions & 0 deletions Source/Core/DolphinWX/Src/InputConfigDiagBitmaps.cpp
Expand Up @@ -111,7 +111,9 @@ void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event))
dc.DrawCircle( 32, 32, 32);
}
else
{
dc.DrawRectangle( 16, 16, 32, 32 );
}

if ( GROUP_TYPE_CURSOR != (*g)->control_group->type )
{
Expand Down Expand Up @@ -217,7 +219,9 @@ void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event))
for (unsigned int n = 0; n<button_count; ++n)
{
if ( buttons & bitmasks[n] )
{
dc.SetBrush( *wxRED_BRUSH );
}
else
{
unsigned char amt = 255 - (*g)->control_group->controls[n]->control_ref->State() * 128;
Expand Down
35 changes: 32 additions & 3 deletions Source/Core/DolphinWX/Src/LogConfigWindow.cpp
Expand Up @@ -111,12 +111,20 @@ void LogConfigWindow::LoadSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));

// Retrieve the verbosity value from the config ini file.
int verbosity;
ini.Get("Options", "Verbosity", &verbosity, 0);
if (verbosity < 1) verbosity = 1;
if (verbosity > MAX_LOGLEVEL) verbosity = MAX_LOGLEVEL;

// Ensure the verbosity level is valid.
if (verbosity < 1)
verbosity = 1;
if (verbosity > MAX_LOGLEVEL)
verbosity = MAX_LOGLEVEL;

// Actually set the logging verbosity.
m_verbosity->SetSelection(verbosity - 1);

// Get the logger output settings from the config ini file.
ini.Get("Options", "WriteToFile", &m_writeFile, false);
m_writeFileCB->SetValue(m_writeFile);
ini.Get("Options", "WriteToConsole", &m_writeConsole, true);
Expand All @@ -134,11 +142,17 @@ void LogConfigWindow::LoadSettings()
{
m_writeDebugger = false;
}

// Run through all of the log types and check each checkbox for each logging type
// depending on its set value within the config ini.
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
bool log_enabled;
ini.Get("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &log_enabled, true);
if (log_enabled) enableAll = false;

if (log_enabled)
enableAll = false;

m_checks->Check(i, log_enabled);
}
}
Expand All @@ -148,24 +162,39 @@ void LogConfigWindow::SaveSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));

// Save the verbosity level.
ini.Set("Options", "Verbosity", m_verbosity->GetSelection() + 1);

// Save the enabled/disabled states of the logger outputs to the config ini.
ini.Set("Options", "WriteToFile", m_writeFile);
ini.Set("Options", "WriteToConsole", m_writeConsole);
ini.Set("Options", "WriteToWindow", m_writeWindow);
#ifdef _MSC_VER
if (IsDebuggerPresent())
ini.Set("Options", "WriteToDebugger", m_writeDebugger);
#endif

// Save all enabled/disabled states of the log types to the config ini.
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
ini.Set("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), m_checks->IsChecked(i));
}

ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
}

// If the verbosity changes while logging
void LogConfigWindow::OnVerbosityChange(wxCommandEvent& event)
{
// Get the new verbosity
int v = m_verbosity->GetSelection() + 1;

// Set all log types to that verbosity level
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
{
m_LogManager->SetLogLevel((LogTypes::LOG_TYPE)i, (LogTypes::LOG_LEVELS)v);
}

event.Skip();
}

Expand Down
14 changes: 10 additions & 4 deletions Source/Core/DolphinWX/Src/LogWindow.cpp
Expand Up @@ -38,7 +38,7 @@ BEGIN_EVENT_TABLE(CLogWindow, wxPanel)
END_EVENT_TABLE()

CLogWindow::CLogWindow(CFrame *parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name)
const wxSize& size, long style, const wxString& name)
: wxPanel(parent, id, pos, size, style, name)
, x(0), y(0), winpos(0)
, Parent(parent), m_ignoreLogTimer(false), m_LogAccess(true)
Expand All @@ -64,9 +64,14 @@ void CLogWindow::CreateGUIControls()
// Set up log listeners
int verbosity;
ini.Get("Options", "Verbosity", &verbosity, 0);
if (verbosity < 1) verbosity = 1;
if (verbosity > MAX_LOGLEVEL) verbosity = MAX_LOGLEVEL;


// Ensure the verbosity level is valid
if (verbosity < 1)
verbosity = 1;
if (verbosity > MAX_LOGLEVEL)
verbosity = MAX_LOGLEVEL;

// Get the logger output settings from the config ini file.
ini.Get("Options", "WriteToFile", &m_writeFile, false);
ini.Get("Options", "WriteToConsole", &m_writeConsole, true);
ini.Get("Options", "WriteToWindow", &m_writeWindow, true);
Expand All @@ -80,6 +85,7 @@ void CLogWindow::CreateGUIControls()
{
m_writeDebugger = false;
}

for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
bool enable;
Expand Down
8 changes: 5 additions & 3 deletions Source/Core/DolphinWX/Src/Main.cpp
Expand Up @@ -313,7 +313,7 @@ bool DolphinApp::OnInit()
MessageBox(NULL,
L"This version of Dolphin was downloaded from a website stealing money from developers of the emulator. Please "
L"download Dolphin from the official website instead: http://dolphin-emu.org/",
L"Unofficial version detected", MB_OK | MB_ICONWARNING);
L"Unofficial version detected", MB_OK | MB_ICONWARNING);
ShellExecute(NULL, L"open", L"http://dolphin-emu.org/?ref=badver", NULL, NULL, SW_SHOWDEFAULT);
exit(0);
}
Expand Down Expand Up @@ -376,7 +376,9 @@ void DolphinApp::AfterInit(wxTimerEvent& WXUNUSED(event))
main_frame->BootGame(WxStrToStr(FileToLoad));
}
else
{
main_frame->BootGame(std::string(""));
}
}
}

Expand Down Expand Up @@ -516,7 +518,7 @@ void* Host_GetInstance()

void* Host_GetRenderHandle()
{
return main_frame->GetRenderHandle();
return main_frame->GetRenderHandle();
}

// OK, this thread boundary is DANGEROUS on linux
Expand Down Expand Up @@ -627,7 +629,7 @@ void Host_SetStartupDebuggingParameters()
{
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter;
if (main_frame->g_pCodeWindow)
{
{
StartUp.bBootToPause = main_frame->g_pCodeWindow->BootToPause();
StartUp.bAutomaticStart = main_frame->g_pCodeWindow->AutomaticStart();
StartUp.bJITNoBlockCache = main_frame->g_pCodeWindow->JITNoBlockCache();
Expand Down
27 changes: 20 additions & 7 deletions Source/Core/DolphinWX/Src/MemcardManager.cpp
Expand Up @@ -466,7 +466,7 @@ bool CMemcardManager::CopyDeleteSwitch(u32 error, int slot)
break;
case DELETE_FAIL:
PanicAlertT("Order of files in the File Directory do not match the block order\n"
"Right click and export all of the saves,\nand import the the saves to a new memcard\n");
"Right click and export all of the saves,\nand import the saves to a new memcard\n");
break;
default:
PanicAlert(E_UNK);
Expand Down Expand Up @@ -508,7 +508,10 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event)
{
SuccessAlertT("The checksum was successfully fixed");
}
else PanicAlert(E_SAVEFAILED);
else
{
PanicAlert(E_SAVEFAILED);
}
break;
case ID_CONVERTTOGCI:
fileName2 = "convert";
Expand All @@ -533,7 +536,10 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event)
wxEmptyString, wxEmptyString, wxT(".gci"),
_("GCI File(*.gci)") + wxString(_T("|*.gci")),
wxFD_OVERWRITE_PROMPT|wxFD_SAVE, this);
if (temp2.empty()) break;

if (temp2.empty())
break;

fileName2 = WxStrToStr(temp2);
}
if (fileName.length() > 0)
Expand Down Expand Up @@ -610,7 +616,8 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card)
// TODO: add error checking and animate icons
memoryCard[card] = new GCMemcard(fileName);

if (!memoryCard[card]->IsValid()) return false;
if (!memoryCard[card]->IsValid())
return false;

int j;

Expand Down Expand Up @@ -671,7 +678,10 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card)
{
memset(pxdata,0,96*32*4);
int frames=3;
if (numFrames<frames) frames=numFrames;

if (numFrames<frames)
frames=numFrames;

for (int f=0;f<frames;f++)
{
for (int y=0;y<32;y++)
Expand Down Expand Up @@ -714,7 +724,10 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card)
m_MemcardList[card]->SetItem(index, COLUMN_COMMENT, wxComment);

blocks = memoryCard[card]->DEntry_BlockCount(fileIndex);
if (blocks == 0xFFFF) blocks = 0;

if (blocks == 0xFFFF)
blocks = 0;

wxBlock.Printf(wxT("%10d"), blocks);
m_MemcardList[card]->SetItem(index,COLUMN_BLOCKS, wxBlock);
firstblock = memoryCard[card]->DEntry_FirstBlock(fileIndex);
Expand Down Expand Up @@ -801,7 +814,7 @@ void CMemcardManager::CMemcardListCtrl::OnRightClick(wxMouseEvent& event)
popupMenu->Append(ID_NEXTPAGE_A + slot, _("Next Page"));
popupMenu->Append(ID_MEMCARDPATH_A + slot, wxString::Format(_("Set as default Memcard %c"), 'A' + slot));
popupMenu->AppendCheckItem(ID_USEPAGES, _("Enable pages"));

popupMenu->FindItem(ID_PREVPAGE_A + slot)->Enable(prevPage && __mcmSettings.usePages);
popupMenu->FindItem(ID_NEXTPAGE_A + slot)->Enable(nextPage && __mcmSettings.usePages);
popupMenu->FindItem(ID_USEPAGES)->Check(__mcmSettings.usePages);
Expand Down
35 changes: 22 additions & 13 deletions Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp
Expand Up @@ -43,7 +43,7 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)

if (!TitleID) // Import
{
AES_set_decrypt_key(SDKey, 128, &m_AES_KEY);
AES_set_decrypt_key(SDKey, 128, &m_AES_KEY);
do
{
b_valid = true;
Expand All @@ -56,12 +56,15 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
SuccessAlertT("Successfully imported save files");
b_tryAgain = false;
}
else b_tryAgain = AskYesNoT("Import failed, try again?");
}while(b_tryAgain);
else
{
b_tryAgain = AskYesNoT("Import failed, try again?");
}
} while(b_tryAgain);
}
else
{
AES_set_encrypt_key(SDKey, 128, &m_AES_KEY);
AES_set_encrypt_key(SDKey, 128, &m_AES_KEY);

if (getPaths(true))
{
Expand All @@ -77,8 +80,11 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
SuccessAlertT("Successfully exported file to %s", pathData_bin);
b_tryAgain = false;
}
else b_tryAgain = AskYesNoT("Export failed, try again?");
}while(b_tryAgain);
else
{
b_tryAgain = AskYesNoT("Export failed, try again?");
}
} while(b_tryAgain);
}
}
}
Expand Down Expand Up @@ -253,7 +259,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()
memset(IV, 0, 0x10);
_fileSize = 0;

if (!fpData_bin.ReadBytes(&_tmpFileHDR, FILE_HDR_SZ))
if (!fpData_bin.ReadBytes(&_tmpFileHDR, FILE_HDR_SZ))
{
PanicAlertT("Failed to write header for file %d", i);
b_valid = false;
Expand Down Expand Up @@ -299,7 +305,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles()

File::IOFile fpRawSaveFile(fullFilePath, "wb");
fpRawSaveFile.WriteBytes(_data, _fileSize);
}
}
delete []_data;
}
}
Expand Down Expand Up @@ -333,7 +339,6 @@ void CWiiSaveCrypted::ExportWiiSaveFiles()

for (Common::replace_v::const_iterator iter = replacements.begin(); iter != replacements.end(); ++iter)
{

for (size_t j = 0; (j = __name.find(iter->second, j)) != __name.npos; ++j)
{
__name.replace(j, iter->second.length(), 1, iter->first);
Expand Down Expand Up @@ -472,7 +477,7 @@ void CWiiSaveCrypted::make_ec_cert(u8 *cert, u8 *sig, char *signer, char *name,
{
memset(cert, 0, 0x180);
*(u32*)cert = Common::swap32(0x10002);

memcpy(cert + 4, sig, 60);
strcpy((char*)cert + 0x80, signer);
*(u32*)(cert + 0xc0) = Common::swap32(2);
Expand All @@ -484,17 +489,18 @@ void CWiiSaveCrypted::make_ec_cert(u8 *cert, u8 *sig, char *signer, char *name,
bool CWiiSaveCrypted::getPaths(bool forExport)
{
if (m_TitleID)
{
{
WiiTitlePath = Common::GetTitleDataPath(m_TitleID);
BannerFilePath = WiiTitlePath + "banner.bin";
}

if (forExport)
{
char GameID[5];
sprintf(GameID, "%c%c%c%c",
(u8)(m_TitleID >> 24) & 0xFF, (u8)(m_TitleID >> 16) & 0xFF,
(u8)(m_TitleID >> 8) & 0xFF, (u8)m_TitleID & 0xFF);

if(!File::IsDirectory(WiiTitlePath))
{
b_valid = false;
Expand Down Expand Up @@ -530,7 +536,10 @@ void CWiiSaveCrypted::ScanForFiles(std::string savDir, std::vector<std::string>&
Directories.push_back(savDir);
for (u32 i = 0; i < Directories.size(); i++)
{
if (i) FileList.push_back(Directories[i]);//add dir to fst
if (i != 0)
{
FileList.push_back(Directories[i]);//add dir to fst
}

File::FSTEntry FST_Temp;
File::ScanDirectoryTree(Directories[i], FST_Temp);
Expand Down
13 changes: 5 additions & 8 deletions Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h
Expand Up @@ -26,7 +26,6 @@
// --- this is used for encrypted Wii save files



class CWiiSaveCrypted
{
public:
Expand All @@ -40,16 +39,15 @@ class CWiiSaveCrypted
void ImportWiiSaveFiles();
void ExportWiiSaveFiles(); // To data.bin
void do_sig();
void make_ec_cert(u8 *cert, u8 *sig, char *signer, char *name, u8 *priv,
u32 key_id);
void make_ec_cert(u8 *cert, u8 *sig, char *signer, char *name, u8 *priv, u32 key_id);
bool getPaths(bool forExport = false);
void ScanForFiles(std::string savDir, std::vector<std::string>&FilesList, u32 *_numFiles, u32 *_sizeFiles);

private:
AES_KEY m_AES_KEY;
u8 SD_IV[0x10];
std::vector<std::string> FilesList;

char pathData_bin[2048];

std::string BannerFilePath,
Expand Down Expand Up @@ -85,13 +83,12 @@ class CWiiSaveCrypted
BK_LISTED_SZ = 0x70, // Size before rounding to nearest block
BK_SZ = 0x80,
FILE_HDR_SZ = 0x80,

SIG_SZ = 0x40,
NG_CERT_SZ = 0x180,
AP_CERT_SZ = 0x180,
FULL_CERT_SZ = 0x3C0, // SIG_SZ + NG_CERT_SZ + AP_CERT_SZ + 0x80?



BK_HDR_MAGIC = 0x426B0001,
FILE_HDR_MAGIC = 0x03adf17e
};
Expand All @@ -107,7 +104,7 @@ class CWiiSaveCrypted
u8 Md5[0x10]; // md5 of plaintext header with md5 blanker applied
u16 unk2;
};

struct HEADER
{
Data_Bin_HDR hdr;
Expand Down
6 changes: 4 additions & 2 deletions Source/Core/DolphinWX/Src/PatchAddEdit.cpp
Expand Up @@ -49,8 +49,8 @@ void CPatchAddEdit::CreateGUIControls(int _selection)
}
else
{
currentName = StrToWxStr(onFrame.at(_selection).name);
tempEntries = onFrame.at(_selection).entries;
currentName = StrToWxStr(onFrame.at(_selection).name);
tempEntries = onFrame.at(_selection).entries;
}

itCurEntry = tempEntries.begin();
Expand Down Expand Up @@ -218,7 +218,9 @@ bool CPatchAddEdit::UpdateTempEntryData(std::vector<PatchEngine::PatchEntry>::it
parsed_ok = false;
}
else
{
parsed_ok = false;
}

if (!parsed_ok)
{
Expand Down
55 changes: 23 additions & 32 deletions Source/Core/DolphinWX/Src/TASInputDlg.cpp
Expand Up @@ -73,7 +73,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title,
main_yslider_box->Add(wx_mainY_s, 0, wxALIGN_CENTER_VERTICAL);
main_yslider_box->Add(wx_mainY_t, 0, wxALIGN_CENTER_VERTICAL);
main_box->Add(main_yslider_box);

wxStaticBoxSizer* const c_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("C Stick"));
wxBoxSizer* const c_xslider_box = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer* const c_yslider_box = new wxBoxSizer(wxVERTICAL);
Expand Down Expand Up @@ -686,13 +686,13 @@ bool TASInputDlg::HasFocus()
if(TextBoxHasFocus())
return false;

if (wxWindow::FindFocus() == this)
return true;
else if (wxWindow::FindFocus() != NULL &&
wxWindow::FindFocus()->GetParent() == this)
return true;
else
return false;
if (wxWindow::FindFocus() == this)
return true;
else if (wxWindow::FindFocus() != NULL &&
wxWindow::FindFocus()->GetParent() == this)
return true;
else
return false;
}

bool TASInputDlg::TextBoxHasFocus()
Expand Down Expand Up @@ -825,6 +825,7 @@ void TASInputDlg::SetTurboFalse(wxMouseEvent& event)
case ID_A:
A_turbo = false;
break;

case ID_B:
B_turbo = false;
break;
Expand Down Expand Up @@ -868,6 +869,7 @@ void TASInputDlg::SetTurboFalse(wxMouseEvent& event)
case ID_RIGHT:
DR_turbo = false;
break;

default:
return;
}
Expand Down Expand Up @@ -989,7 +991,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_a_button->GetValue())
wx_a_button->SetValue(false);

else
wx_a_button->SetValue(true);
}
Expand All @@ -998,42 +999,38 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_b_button->GetValue())
wx_b_button->SetValue(false);

else
wx_b_button->SetValue(true);
}

if(X_turbo)
{
if(wx_x_button->GetValue())
wx_x_button->SetValue(false);

else
wx_x_button->SetValue(true);
}

if(Y_turbo)
{
if(wx_y_button->GetValue())
wx_y_button->SetValue(false);

else
wx_y_button->SetValue(true);
}

if(Z_turbo)
{
if(wx_z_button->GetValue())
wx_z_button->SetValue(false);

else
wx_z_button->SetValue(true);
}
if(L_turbo)

if(L_turbo)
{
if(wx_l_button->GetValue())
wx_l_button->SetValue(false);

else
wx_l_button->SetValue(true);
}
Expand All @@ -1042,7 +1039,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_r_button->GetValue())
wx_r_button->SetValue(false);

else
wx_r_button->SetValue(true);
}
Expand All @@ -1051,7 +1047,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_start_button->GetValue())
wx_start_button->SetValue(false);

else
wx_start_button->SetValue(true);
}
Expand All @@ -1060,7 +1055,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_up_button->GetValue())
wx_up_button->SetValue(false);

else
wx_up_button->SetValue(true);
}
Expand All @@ -1069,7 +1063,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_down_button->GetValue())
wx_down_button->SetValue(false);

else
wx_down_button->SetValue(true);
}
Expand All @@ -1078,7 +1071,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_left_button->GetValue())
wx_left_button->SetValue(false);

else
wx_left_button->SetValue(true);
}
Expand All @@ -1087,7 +1079,6 @@ void TASInputDlg::ButtonTurbo()
{
if(wx_right_button->GetValue())
wx_right_button->SetValue(false);

else
wx_right_button->SetValue(true);
}
Expand All @@ -1097,13 +1088,13 @@ wxBitmap TASInputDlg::CreateStickBitmap(int x, int y)
{
x = x/2;
y = y/2;

wxMemoryDC memDC;
wxBitmap stick_bitmap(127, 127);
memDC.SelectObject(stick_bitmap);
memDC.SetBackground(*wxLIGHT_GREY_BRUSH);
memDC.Clear();
memDC.SetBrush(*wxWHITE_BRUSH);
wxBitmap stick_bitmap(127, 127);
memDC.SelectObject(stick_bitmap);
memDC.SetBackground(*wxLIGHT_GREY_BRUSH);
memDC.Clear();
memDC.SetBrush(*wxWHITE_BRUSH);
memDC.DrawCircle(65,65,64);
memDC.SetBrush(*wxRED_BRUSH);
memDC.DrawLine(64,64,x,y);
Expand All @@ -1115,6 +1106,6 @@ wxBitmap TASInputDlg::CreateStickBitmap(int x, int y)
memDC.CrossHair(64,64);
memDC.SetBrush(*wxBLUE_BRUSH);
memDC.DrawCircle(x,y,5);
memDC.SelectObject(wxNullBitmap);
return stick_bitmap;
memDC.SelectObject(wxNullBitmap);
return stick_bitmap;
}
2 changes: 1 addition & 1 deletion Source/Core/DolphinWX/Src/TASInputDlg.h
Expand Up @@ -93,7 +93,7 @@ class TASInputDlg : public wxDialog
bool A_turbo,B_turbo, X_turbo, Y_turbo, Z_turbo, L_turbo, R_turbo, START_turbo,DL_turbo,DR_turbo,DD_turbo,DU_turbo;
bool A_cont,B_cont, X_cont, Y_cont, Z_cont, L_cont, R_cont, START_cont,DL_cont,DR_cont,DD_cont,DU_cont,mstickx,msticky,cstickx,csticky;
int xaxis,yaxis,c_xaxis,c_yaxis,update,update_axis;

DECLARE_EVENT_TABLE();
};

Expand Down