DolphinWX: Add a filename column
This commit is contained in:
parent
4d78aea41d
commit
3fdaf377b0
|
@ -210,6 +210,7 @@ void SConfig::SaveGameListSettings(IniFile& ini)
|
||||||
gamelist->Set("ColumnPlatform", m_showSystemColumn);
|
gamelist->Set("ColumnPlatform", m_showSystemColumn);
|
||||||
gamelist->Set("ColumnBanner", m_showBannerColumn);
|
gamelist->Set("ColumnBanner", m_showBannerColumn);
|
||||||
gamelist->Set("ColumnNotes", m_showMakerColumn);
|
gamelist->Set("ColumnNotes", m_showMakerColumn);
|
||||||
|
gamelist->Set("ColumnFileName", m_showFileNameColumn);
|
||||||
gamelist->Set("ColumnID", m_showIDColumn);
|
gamelist->Set("ColumnID", m_showIDColumn);
|
||||||
gamelist->Set("ColumnRegion", m_showRegionColumn);
|
gamelist->Set("ColumnRegion", m_showRegionColumn);
|
||||||
gamelist->Set("ColumnSize", m_showSizeColumn);
|
gamelist->Set("ColumnSize", m_showSizeColumn);
|
||||||
|
@ -459,6 +460,7 @@ void SConfig::LoadGameListSettings(IniFile& ini)
|
||||||
gamelist->Get("ColumnPlatform", &m_showSystemColumn, true);
|
gamelist->Get("ColumnPlatform", &m_showSystemColumn, true);
|
||||||
gamelist->Get("ColumnBanner", &m_showBannerColumn, true);
|
gamelist->Get("ColumnBanner", &m_showBannerColumn, true);
|
||||||
gamelist->Get("ColumnNotes", &m_showMakerColumn, true);
|
gamelist->Get("ColumnNotes", &m_showMakerColumn, true);
|
||||||
|
gamelist->Get("ColumnFileName", &m_showFileNameColumn, false);
|
||||||
gamelist->Get("ColumnID", &m_showIDColumn, false);
|
gamelist->Get("ColumnID", &m_showIDColumn, false);
|
||||||
gamelist->Get("ColumnRegion", &m_showRegionColumn, true);
|
gamelist->Get("ColumnRegion", &m_showRegionColumn, true);
|
||||||
gamelist->Get("ColumnSize", &m_showSizeColumn, true);
|
gamelist->Get("ColumnSize", &m_showSizeColumn, true);
|
||||||
|
|
|
@ -232,6 +232,7 @@ struct SConfig : NonCopyable
|
||||||
bool m_showSystemColumn;
|
bool m_showSystemColumn;
|
||||||
bool m_showBannerColumn;
|
bool m_showBannerColumn;
|
||||||
bool m_showMakerColumn;
|
bool m_showMakerColumn;
|
||||||
|
bool m_showFileNameColumn;
|
||||||
bool m_showIDColumn;
|
bool m_showIDColumn;
|
||||||
bool m_showRegionColumn;
|
bool m_showRegionColumn;
|
||||||
bool m_showSizeColumn;
|
bool m_showSizeColumn;
|
||||||
|
|
|
@ -355,6 +355,8 @@ wxMenuBar* CFrame::CreateMenu()
|
||||||
columnsMenu->Check(IDM_SHOW_BANNER, SConfig::GetInstance().m_showBannerColumn);
|
columnsMenu->Check(IDM_SHOW_BANNER, SConfig::GetInstance().m_showBannerColumn);
|
||||||
columnsMenu->AppendCheckItem(IDM_SHOW_MAKER, _("Maker"));
|
columnsMenu->AppendCheckItem(IDM_SHOW_MAKER, _("Maker"));
|
||||||
columnsMenu->Check(IDM_SHOW_MAKER, SConfig::GetInstance().m_showMakerColumn);
|
columnsMenu->Check(IDM_SHOW_MAKER, SConfig::GetInstance().m_showMakerColumn);
|
||||||
|
columnsMenu->AppendCheckItem(IDM_SHOW_FILENAME, _("File Name"));
|
||||||
|
columnsMenu->Check(IDM_SHOW_FILENAME, SConfig::GetInstance().m_showFileNameColumn);
|
||||||
columnsMenu->AppendCheckItem(IDM_SHOW_ID, _("Game ID"));
|
columnsMenu->AppendCheckItem(IDM_SHOW_ID, _("Game ID"));
|
||||||
columnsMenu->Check(IDM_SHOW_ID, SConfig::GetInstance().m_showIDColumn);
|
columnsMenu->Check(IDM_SHOW_ID, SConfig::GetInstance().m_showIDColumn);
|
||||||
columnsMenu->AppendCheckItem(IDM_SHOW_REGION, _("Region"));
|
columnsMenu->AppendCheckItem(IDM_SHOW_REGION, _("Region"));
|
||||||
|
@ -2004,6 +2006,9 @@ void CFrame::OnChangeColumnsVisible(wxCommandEvent& event)
|
||||||
case IDM_SHOW_MAKER:
|
case IDM_SHOW_MAKER:
|
||||||
SConfig::GetInstance().m_showMakerColumn = !SConfig::GetInstance().m_showMakerColumn;
|
SConfig::GetInstance().m_showMakerColumn = !SConfig::GetInstance().m_showMakerColumn;
|
||||||
break;
|
break;
|
||||||
|
case IDM_SHOW_FILENAME:
|
||||||
|
SConfig::GetInstance().m_showFileNameColumn = !SConfig::GetInstance().m_showFileNameColumn;
|
||||||
|
break;
|
||||||
case IDM_SHOW_ID:
|
case IDM_SHOW_ID:
|
||||||
SConfig::GetInstance().m_showIDColumn = !SConfig::GetInstance().m_showIDColumn;
|
SConfig::GetInstance().m_showIDColumn = !SConfig::GetInstance().m_showIDColumn;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <wx/progdlg.h>
|
#include <wx/progdlg.h>
|
||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
#include <wx/tipwin.h>
|
#include <wx/tipwin.h>
|
||||||
|
#include <wx/wxcrt.h>
|
||||||
|
|
||||||
#include "Common/CDUtils.h"
|
#include "Common/CDUtils.h"
|
||||||
#include "Common/CommonPaths.h"
|
#include "Common/CommonPaths.h"
|
||||||
|
@ -95,10 +96,19 @@ static int CompareGameListItems(const GameListItem* iso1, const GameListItem* is
|
||||||
return t * (iso1->GetRevision() > iso2->GetRevision() ? 1 : -1);
|
return t * (iso1->GetRevision() > iso2->GetRevision() ? 1 : -1);
|
||||||
if (iso1->GetDiscNumber() != iso2->GetDiscNumber())
|
if (iso1->GetDiscNumber() != iso2->GetDiscNumber())
|
||||||
return t * (iso1->GetDiscNumber() > iso2->GetDiscNumber() ? 1 : -1);
|
return t * (iso1->GetDiscNumber() > iso2->GetDiscNumber() ? 1 : -1);
|
||||||
|
|
||||||
|
wxString iso1_filename = wxFileNameFromPath(iso1->GetFileName());
|
||||||
|
wxString iso2_filename = wxFileNameFromPath(iso2->GetFileName());
|
||||||
|
|
||||||
|
if (iso1_filename != iso2_filename)
|
||||||
|
return t * wxStricmp(iso1_filename, iso2_filename);
|
||||||
}
|
}
|
||||||
return strcasecmp(iso1->GetName().c_str(), iso2->GetName().c_str()) * t;
|
return strcasecmp(iso1->GetName().c_str(), iso2->GetName().c_str()) * t;
|
||||||
case CGameListCtrl::COLUMN_MAKER:
|
case CGameListCtrl::COLUMN_MAKER:
|
||||||
return strcasecmp(iso1->GetCompany().c_str(), iso2->GetCompany().c_str()) * t;
|
return strcasecmp(iso1->GetCompany().c_str(), iso2->GetCompany().c_str()) * t;
|
||||||
|
case CGameListCtrl::COLUMN_FILENAME:
|
||||||
|
return wxStricmp(wxFileNameFromPath(iso1->GetFileName()),
|
||||||
|
wxFileNameFromPath(iso2->GetFileName())) * t;
|
||||||
case CGameListCtrl::COLUMN_ID:
|
case CGameListCtrl::COLUMN_ID:
|
||||||
return strcasecmp(iso1->GetUniqueID().c_str(), iso2->GetUniqueID().c_str()) * t;
|
return strcasecmp(iso1->GetUniqueID().c_str(), iso2->GetUniqueID().c_str()) * t;
|
||||||
case CGameListCtrl::COLUMN_COUNTRY:
|
case CGameListCtrl::COLUMN_COUNTRY:
|
||||||
|
@ -265,6 +275,7 @@ void CGameListCtrl::Update()
|
||||||
InsertColumn(COLUMN_TITLE, _("Title"));
|
InsertColumn(COLUMN_TITLE, _("Title"));
|
||||||
|
|
||||||
InsertColumn(COLUMN_MAKER, _("Maker"));
|
InsertColumn(COLUMN_MAKER, _("Maker"));
|
||||||
|
InsertColumn(COLUMN_FILENAME, _("File"));
|
||||||
InsertColumn(COLUMN_ID, _("ID"));
|
InsertColumn(COLUMN_ID, _("ID"));
|
||||||
InsertColumn(COLUMN_COUNTRY, "");
|
InsertColumn(COLUMN_COUNTRY, "");
|
||||||
InsertColumn(COLUMN_SIZE, _("Size"));
|
InsertColumn(COLUMN_SIZE, _("Size"));
|
||||||
|
@ -282,6 +293,7 @@ void CGameListCtrl::Update()
|
||||||
SetColumnWidth(COLUMN_BANNER, SConfig::GetInstance().m_showBannerColumn ? 96 + platform_padding : 0);
|
SetColumnWidth(COLUMN_BANNER, SConfig::GetInstance().m_showBannerColumn ? 96 + platform_padding : 0);
|
||||||
SetColumnWidth(COLUMN_TITLE, 175 + platform_padding);
|
SetColumnWidth(COLUMN_TITLE, 175 + platform_padding);
|
||||||
SetColumnWidth(COLUMN_MAKER, SConfig::GetInstance().m_showMakerColumn ? 150 + platform_padding : 0);
|
SetColumnWidth(COLUMN_MAKER, SConfig::GetInstance().m_showMakerColumn ? 150 + platform_padding : 0);
|
||||||
|
SetColumnWidth(COLUMN_FILENAME, SConfig::GetInstance().m_showFileNameColumn ? 100 + platform_padding : 0);
|
||||||
SetColumnWidth(COLUMN_ID, SConfig::GetInstance().m_showIDColumn ? 75 + platform_padding : 0);
|
SetColumnWidth(COLUMN_ID, SConfig::GetInstance().m_showIDColumn ? 75 + platform_padding : 0);
|
||||||
SetColumnWidth(COLUMN_COUNTRY, SConfig::GetInstance().m_showRegionColumn ? 32 + platform_padding : 0);
|
SetColumnWidth(COLUMN_COUNTRY, SConfig::GetInstance().m_showRegionColumn ? 32 + platform_padding : 0);
|
||||||
SetColumnWidth(COLUMN_EMULATION_STATE, SConfig::GetInstance().m_showStateColumn ? 50 + platform_padding : 0);
|
SetColumnWidth(COLUMN_EMULATION_STATE, SConfig::GetInstance().m_showStateColumn ? 50 + platform_padding : 0);
|
||||||
|
@ -402,6 +414,10 @@ void CGameListCtrl::UpdateItemAtColumn(long _Index, int column)
|
||||||
case COLUMN_MAKER:
|
case COLUMN_MAKER:
|
||||||
SetItem(_Index, COLUMN_MAKER, StrToWxStr(rISOFile.GetCompany()), -1);
|
SetItem(_Index, COLUMN_MAKER, StrToWxStr(rISOFile.GetCompany()), -1);
|
||||||
break;
|
break;
|
||||||
|
case COLUMN_FILENAME:
|
||||||
|
SetItem(_Index, COLUMN_FILENAME,
|
||||||
|
wxFileNameFromPath(rISOFile.GetFileName()), -1);
|
||||||
|
break;
|
||||||
case COLUMN_EMULATION_STATE:
|
case COLUMN_EMULATION_STATE:
|
||||||
SetItemColumnImage(_Index, COLUMN_EMULATION_STATE,
|
SetItemColumnImage(_Index, COLUMN_EMULATION_STATE,
|
||||||
m_EmuStateImageIndex[rISOFile.GetEmuState()]);
|
m_EmuStateImageIndex[rISOFile.GetEmuState()]);
|
||||||
|
@ -644,7 +660,9 @@ void CGameListCtrl::ScanForISOs()
|
||||||
|
|
||||||
void CGameListCtrl::OnColBeginDrag(wxListEvent& event)
|
void CGameListCtrl::OnColBeginDrag(wxListEvent& event)
|
||||||
{
|
{
|
||||||
if (event.GetColumn() != COLUMN_TITLE && event.GetColumn() != COLUMN_MAKER)
|
const int column_id = event.GetColumn();
|
||||||
|
|
||||||
|
if (column_id != COLUMN_TITLE && column_id != COLUMN_MAKER && column_id != COLUMN_FILENAME)
|
||||||
event.Veto();
|
event.Veto();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1294,23 +1312,44 @@ void CGameListCtrl::AutomaticColumnWidth()
|
||||||
+ GetColumnWidth(COLUMN_EMULATION_STATE));
|
+ GetColumnWidth(COLUMN_EMULATION_STATE));
|
||||||
|
|
||||||
// We hide the Maker column if the window is too small
|
// We hide the Maker column if the window is too small
|
||||||
if (resizable > 400)
|
// Use ShowColumn() instead of SetColumnWidth because
|
||||||
|
// the maker column may have been autohidden and the
|
||||||
|
// therefore the content needs to be restored.
|
||||||
|
if (resizable > 425)
|
||||||
{
|
{
|
||||||
if (SConfig::GetInstance().m_showMakerColumn)
|
if (SConfig::GetInstance().m_showMakerColumn &&
|
||||||
|
SConfig::GetInstance().m_showFileNameColumn)
|
||||||
|
{
|
||||||
|
SetColumnWidth(COLUMN_TITLE, resizable / 3);
|
||||||
|
ShowColumn(COLUMN_MAKER, resizable / 3);
|
||||||
|
SetColumnWidth(COLUMN_FILENAME, resizable / 3);
|
||||||
|
}
|
||||||
|
else if (SConfig::GetInstance().m_showMakerColumn)
|
||||||
{
|
{
|
||||||
SetColumnWidth(COLUMN_TITLE, resizable / 2);
|
SetColumnWidth(COLUMN_TITLE, resizable / 2);
|
||||||
|
|
||||||
// If the maker column has been autohidden, we need to show it again
|
|
||||||
ShowColumn(COLUMN_MAKER, resizable / 2);
|
ShowColumn(COLUMN_MAKER, resizable / 2);
|
||||||
}
|
}
|
||||||
|
else if (SConfig::GetInstance().m_showFileNameColumn)
|
||||||
|
{
|
||||||
|
SetColumnWidth(COLUMN_TITLE, resizable / 2);
|
||||||
|
SetColumnWidth(COLUMN_FILENAME, resizable / 2);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetColumnWidth(COLUMN_TITLE, resizable);
|
SetColumnWidth(COLUMN_TITLE, resizable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (SConfig::GetInstance().m_showFileNameColumn)
|
||||||
|
{
|
||||||
|
SetColumnWidth(COLUMN_TITLE, resizable / 2);
|
||||||
|
SetColumnWidth(COLUMN_FILENAME, resizable / 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
SetColumnWidth(COLUMN_TITLE, resizable);
|
SetColumnWidth(COLUMN_TITLE, resizable);
|
||||||
|
}
|
||||||
HideColumn(COLUMN_MAKER);
|
HideColumn(COLUMN_MAKER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,7 @@ public:
|
||||||
COLUMN_BANNER,
|
COLUMN_BANNER,
|
||||||
COLUMN_TITLE,
|
COLUMN_TITLE,
|
||||||
COLUMN_MAKER,
|
COLUMN_MAKER,
|
||||||
|
COLUMN_FILENAME,
|
||||||
COLUMN_ID,
|
COLUMN_ID,
|
||||||
COLUMN_COUNTRY,
|
COLUMN_COUNTRY,
|
||||||
COLUMN_SIZE,
|
COLUMN_SIZE,
|
||||||
|
|
|
@ -179,6 +179,7 @@ enum
|
||||||
IDM_SHOW_SYSTEM,
|
IDM_SHOW_SYSTEM,
|
||||||
IDM_SHOW_BANNER,
|
IDM_SHOW_BANNER,
|
||||||
IDM_SHOW_MAKER,
|
IDM_SHOW_MAKER,
|
||||||
|
IDM_SHOW_FILENAME,
|
||||||
IDM_SHOW_ID,
|
IDM_SHOW_ID,
|
||||||
IDM_SHOW_REGION,
|
IDM_SHOW_REGION,
|
||||||
IDM_SHOW_SIZE,
|
IDM_SHOW_SIZE,
|
||||||
|
|
Loading…
Reference in New Issue