mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-14 10:21:21 +00:00
GUI: improve prx library selection
Sorts the libraries in the settings dialog alphabetically, so they are easier to find. Sorts selected and unselected modules alphabetically seperatly.
This commit is contained in:
parent
effd379c25
commit
5c4af45bf5
@ -16,6 +16,7 @@
|
||||
|
||||
#include <set>
|
||||
#include <unordered_set>
|
||||
#include <algorithm>
|
||||
|
||||
// Node location
|
||||
using cfg_location = std::vector<const char*>;
|
||||
@ -313,7 +314,14 @@ SettingsDialog::SettingsDialog(wxWindow* parent)
|
||||
|
||||
std::vector<std::string> lle_module_list;
|
||||
{
|
||||
// Sort string vector alphabetically
|
||||
static const auto sort_string_vector = [](std::vector<std::string>& vec)
|
||||
{
|
||||
std::sort(vec.begin(), vec.end(), [](const std::string &str1, const std::string &str2) { return str1 < str2; });
|
||||
};
|
||||
|
||||
auto&& data = loaded["Core"]["Load libraries"].as<std::vector<std::string>, std::initializer_list<std::string>>({});
|
||||
sort_string_vector(data);
|
||||
|
||||
// List selected modules first
|
||||
for (const auto& unk : data)
|
||||
@ -325,16 +333,26 @@ SettingsDialog::SettingsDialog(wxWindow* parent)
|
||||
const std::string& lle_dir = vfs::get("/dev_flash/sys/external/"); // TODO
|
||||
|
||||
std::unordered_set<std::string> set(data.begin(), data.end());
|
||||
std::vector<std::string> lle_module_list_unselected;
|
||||
|
||||
for (const auto& prxf : fs::dir(lle_dir))
|
||||
{
|
||||
// List found unselected modules
|
||||
if (!prxf.is_directory && ppu_prx_loader(fs::file(lle_dir + prxf.name)) == elf_error::ok && !set.count(prxf.name))
|
||||
{
|
||||
chbox_list_core_lle->Check(chbox_list_core_lle->Append(prxf.name), false);
|
||||
lle_module_list.push_back(prxf.name);
|
||||
lle_module_list_unselected.push_back(prxf.name);
|
||||
}
|
||||
}
|
||||
|
||||
sort_string_vector(lle_module_list_unselected);
|
||||
|
||||
for (const auto& prxf : lle_module_list_unselected)
|
||||
{
|
||||
chbox_list_core_lle->Check(chbox_list_core_lle->Append(prxf), false);
|
||||
lle_module_list.push_back(prxf);
|
||||
}
|
||||
|
||||
lle_module_list_unselected.clear();
|
||||
}
|
||||
|
||||
radiobox_pad_helper ppu_decoder_modes({ "Core", "PPU Decoder" });
|
||||
@ -364,7 +382,7 @@ SettingsDialog::SettingsDialog(wxWindow* parent)
|
||||
pads.emplace_back(std::make_unique<checkbox_pad>(cfg_location{ "Video", "Debug output" }, chbox_gs_debug_output));
|
||||
pads.emplace_back(std::make_unique<checkbox_pad>(cfg_location{ "Video", "3D Monitor" }, chbox_gs_3dmonitor));
|
||||
pads.emplace_back(std::make_unique<checkbox_pad>(cfg_location{ "Video", "Debug overlay" }, chbox_gs_overlay));
|
||||
|
||||
|
||||
pads.emplace_back(std::make_unique<combobox_pad>(cfg_location{ "Audio", "Renderer" }, cbox_audio_out));
|
||||
pads.emplace_back(std::make_unique<checkbox_pad>(cfg_location{ "Audio", "Dump to file" }, chbox_audio_dump));
|
||||
pads.emplace_back(std::make_unique<checkbox_pad>(cfg_location{ "Audio", "Convert to 16 bit" }, chbox_audio_conv));
|
||||
@ -493,7 +511,7 @@ SettingsDialog::SettingsDialog(wxWindow* parent)
|
||||
s_b_panel->Add(new wxButton(this, wxID_OK), wxSizerFlags().Border(wxALL, 5).Bottom());
|
||||
s_b_panel->Add(new wxButton(this, wxID_CANCEL), wxSizerFlags().Border(wxALL, 5).Bottom());
|
||||
|
||||
// Resize panels
|
||||
// Resize panels
|
||||
SetSizerAndFit(s_subpanel_core, false);
|
||||
SetSizerAndFit(s_subpanel_graphics, false);
|
||||
SetSizerAndFit(s_subpanel_io, false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user