diff --git a/rpcs3/Gui/SettingsDialog.cpp b/rpcs3/Gui/SettingsDialog.cpp index 294b086415..eb9f8617b8 100644 --- a/rpcs3/Gui/SettingsDialog.cpp +++ b/rpcs3/Gui/SettingsDialog.cpp @@ -16,6 +16,7 @@ #include #include +#include // Node location using cfg_location = std::vector; @@ -313,7 +314,14 @@ SettingsDialog::SettingsDialog(wxWindow* parent) std::vector lle_module_list; { + // Sort string vector alphabetically + static const auto sort_string_vector = [](std::vector& 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::initializer_list>({}); + 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 set(data.begin(), data.end()); + std::vector 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(cfg_location{ "Video", "Debug output" }, chbox_gs_debug_output)); pads.emplace_back(std::make_unique(cfg_location{ "Video", "3D Monitor" }, chbox_gs_3dmonitor)); pads.emplace_back(std::make_unique(cfg_location{ "Video", "Debug overlay" }, chbox_gs_overlay)); - + pads.emplace_back(std::make_unique(cfg_location{ "Audio", "Renderer" }, cbox_audio_out)); pads.emplace_back(std::make_unique(cfg_location{ "Audio", "Dump to file" }, chbox_audio_dump)); pads.emplace_back(std::make_unique(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);