diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp index 4805fcaf84..12a68c3182 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp @@ -70,7 +70,6 @@ bool operator < (const GameListItem &one, const GameListItem &other) case CGameListCtrl::COLUMN_NOTES: return strcasecmp(one.GetDescription(indexOne).c_str(), other.GetDescription(indexOther).c_str()) < 0; case CGameListCtrl::COLUMN_COUNTRY: return (one.GetCountry() < other.GetCountry()); case CGameListCtrl::COLUMN_SIZE: return (one.GetFileSize() < other.GetFileSize()); - case CGameListCtrl::COLUMN_ISSUES: return strcasecmp(one.GetIssues().c_str(), other.GetIssues().c_str()) < 0; default: return strcasecmp(one.GetName(indexOne).c_str(), other.GetName(indexOther).c_str()) < 0; } } @@ -170,7 +169,6 @@ void CGameListCtrl::Update() InsertColumn(COLUMN_COUNTRY, _("")); InsertColumn(COLUMN_SIZE, _("Size")); InsertColumn(COLUMN_EMULATION_STATE, _("Emulation")); - InsertColumn(COLUMN_ISSUES, _("Issues")); // set initial sizes for columns @@ -179,8 +177,7 @@ void CGameListCtrl::Update() SetColumnWidth(COLUMN_COMPANY, 100); SetColumnWidth(COLUMN_NOTES, 150); SetColumnWidth(COLUMN_COUNTRY, 32); - SetColumnWidth(COLUMN_EMULATION_STATE, 75); - SetColumnWidth(COLUMN_ISSUES, 200); + SetColumnWidth(COLUMN_EMULATION_STATE, 150); // add all items for (int i = 0; i < (int)m_ISOFiles.size(); i++) @@ -299,6 +296,7 @@ void CGameListCtrl::InsertItemInReportView(long _Index) wxListItem item; item.SetId(_Index); std::string EmuState; + std::string issues; item.SetColumn(COLUMN_EMULATION_STATE); ini.Get("EmuState","EmulationStateId",&EmuState); if (!EmuState.empty()) @@ -316,8 +314,14 @@ void CGameListCtrl::InsertItemInReportView(long _Index) break; case 2: //NOTE (Daco): IMO under 2 goes problems like music and games that only work with specific settings - item.SetText(_("Problems: Other")); - //TODO (Daco): maybe 2 should get a function to present more info instead of the notes column... o.o + ini.Get("EmuState","EmulationIssues",&issues); + if (!issues.empty()) + { + issues = "Problems: " + issues; + item.SetText(_(issues.c_str() ) ); + } + else + item.SetText(_("Problems: Other")); break; case 1: item.SetText(_("Broken")); @@ -332,21 +336,6 @@ void CGameListCtrl::InsertItemInReportView(long _Index) } } SetItem(item); - - // Issues Column - { - wxListItem item; - item.SetId(_Index); - item.SetColumn(COLUMN_ISSUES); - std::string issues; - ini.Get("EmuState","Issues",&issues); - if (!issues.empty()) - { - item.SetText(wxString::FromAscii(issues.c_str())); - } - SetItem(item); - } - } #ifndef __WXMSW__ @@ -523,8 +512,6 @@ int wxCALLBACK wxListCompare(long item1, long item2, long sortData) return strcasecmp(iso1->GetCompany().c_str(),iso2->GetCompany().c_str()) *t; case CGameListCtrl::COLUMN_NOTES: return strcasecmp(iso1->GetDescription(indexOne).c_str(),iso2->GetDescription(indexOther).c_str()) *t; - case CGameListCtrl::COLUMN_ISSUES: - return strcasecmp(iso1->GetIssues().c_str(),iso2->GetIssues().c_str()) *t; case CGameListCtrl::COLUMN_COUNTRY: if(iso1->GetCountry() > iso2->GetCountry()) return 1 *t; if(iso1->GetCountry() < iso2->GetCountry()) return -1 *t; @@ -896,7 +883,6 @@ void CGameListCtrl::AutomaticColumnWidth() SetColumnWidth(COLUMN_TITLE, wxMax(0.3*resizable, 100)); SetColumnWidth(COLUMN_COMPANY, wxMax(0.2*resizable, 100)); SetColumnWidth(COLUMN_NOTES, wxMax(0.5*resizable, 100)); - SetColumnWidth(COLUMN_ISSUES, wxMax(0.2*resizable, 100)); } } diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.h b/Source/Core/DolphinWX/Src/GameListCtrl.h index ae793cb25b..abcefbd771 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.h +++ b/Source/Core/DolphinWX/Src/GameListCtrl.h @@ -45,7 +45,6 @@ public: COLUMN_COUNTRY, COLUMN_SIZE, COLUMN_EMULATION_STATE, - COLUMN_ISSUES, NUMBER_OF_COLUMN }; diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index d4c603353b..0b8e4103e6 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -37,6 +37,7 @@ BEGIN_EVENT_TABLE(CISOProperties, wxDialog) EVT_BUTTON(ID_CLOSE, CISOProperties::OnCloseClick) EVT_BUTTON(ID_EDITCONFIG, CISOProperties::OnEditConfig) EVT_CHOICE(ID_EMUSTATE, CISOProperties::SetRefresh) + EVT_CHOICE(ID_EMU_ISSUES, CISOProperties::SetRefresh) EVT_LISTBOX(ID_PATCHES_LIST, CISOProperties::ListSelectionChanged) EVT_BUTTON(ID_EDITPATCH, CISOProperties::PatchButtonClicked) EVT_BUTTON(ID_ADDPATCH, CISOProperties::PatchButtonClicked) @@ -221,7 +222,7 @@ void CISOProperties::CreateGUIControls() sEmuState = new wxBoxSizer(wxHORIZONTAL); arrayStringFor_EmuState.Add(_("Not Set")); arrayStringFor_EmuState.Add(_("Broken")); - arrayStringFor_EmuState.Add(_("Problems: Other")); + arrayStringFor_EmuState.Add(_("Problems: ")); arrayStringFor_EmuState.Add(_("Intro")); arrayStringFor_EmuState.Add(_("In Game")); arrayStringFor_EmuState.Add(_("Perfect")); @@ -239,6 +240,11 @@ void CISOProperties::CreateGUIControls() EditPatch->Enable(false); RemovePatch->Enable(false); + //issues + sEmuIssues = new wxBoxSizer(wxHORIZONTAL); + EmuIssues = new wxTextCtrl(m_GameConfig,ID_EMU_ISSUES, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0,wxDefaultValidator); + EmuIssuesText = new wxStaticText(m_GameConfig,ID_EMUISSUES_TEXT,_("Emulation Issues(for when emustate is 'Problems'):"), wxDefaultPosition, wxDefaultSize); + // Action Replay Cheats sbCheats = new wxStaticBoxSizer(wxVERTICAL, m_CheatPage, _("Action Replay Codes")); sCheats = new wxBoxSizer(wxVERTICAL); @@ -261,8 +267,11 @@ void CISOProperties::CreateGUIControls() sEmuState->Add(EditConfig, 0, wxALL, 0); sEmuState->AddStretchSpacer(); sEmuState->Add(EmuStateText, 0, wxALIGN_CENTER_VERTICAL|wxALL, 0); - sEmuState->Add(EmuState, 0, wxEXPAND|wxALL, 0); + sEmuState->Add(EmuState, 0, wxALL, 0); + sEmuIssues->Add(EmuIssuesText,0,wxALIGN_CENTER_VERTICAL|wxALL,0); + sEmuIssues->Add(EmuIssues,0,wxEXPAND|wxRIGHT,0); sCoreOverrides->Add(sEmuState, 0, wxEXPAND|wxALL, 5); + sCoreOverrides->Add(sEmuIssues,0,wxEXPAND|wxALL,5); sbCoreOverrides->Add(sCoreOverrides, 0, wxEXPAND|wxALL, 0); sConfigPage->Add(sbCoreOverrides, 0, wxEXPAND|wxALL, 5); @@ -484,6 +493,7 @@ void CISOProperties::LoadGameConfig() { bool bTemp; int iTemp; + std::string sTemp; if (GameIni.Get("Core", "UseDualCore", &bTemp)) UseDualCore->Set3StateValue((wxCheckBoxState)bTemp); @@ -518,6 +528,13 @@ void CISOProperties::LoadGameConfig() } EmuState->SetSelection(iTemp); + GameIni.Get("EmuState", "EmulationIssues", &sTemp); + if (!sTemp.empty()) + { + EmuIssues->SetValue(sTemp); + bRefreshList = true; + } + PatchList_Load(); ActionReplayList_Load(); } @@ -550,6 +567,7 @@ bool CISOProperties::SaveGameConfig() GameIni.Set("Core", "EnableWideScreen", EnableWideScreen->Get3StateValue()); GameIni.Set("EmuState", "EmulationStateId", EmuState->GetSelection()); + GameIni.Set("EmuState", "EmulationIssues", EmuIssues->GetValue()); PatchList_Save(); ActionReplayList_Save(); diff --git a/Source/Core/DolphinWX/Src/ISOProperties.h b/Source/Core/DolphinWX/Src/ISOProperties.h index c51d64765c..8f15cbb659 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.h +++ b/Source/Core/DolphinWX/Src/ISOProperties.h @@ -57,6 +57,7 @@ class CISOProperties : public wxDialog wxStaticBoxSizer *sbCoreOverrides; wxBoxSizer *sCoreOverrides; wxBoxSizer *sEmuState; + wxBoxSizer *sEmuIssues; wxStaticBoxSizer *sbPatches; wxBoxSizer *sPatches; wxBoxSizer *sPatchButtons; @@ -89,6 +90,8 @@ class CISOProperties : public wxDialog wxStaticText *EmuStateText; wxArrayString arrayStringFor_EmuState; wxChoice *EmuState; + wxTextCtrl *EmuIssues; + wxStaticText *EmuIssuesText; wxArrayString arrayStringFor_Patches; wxCheckListBox *Patches; wxButton *EditPatch; @@ -155,6 +158,8 @@ class CISOProperties : public wxDialog ID_EDITCONFIG, ID_EMUSTATE_TEXT, ID_EMUSTATE, + ID_EMUISSUES_TEXT, + ID_EMU_ISSUES, ID_PATCHES_LIST, ID_EDITPATCH, ID_ADDPATCH,