From f04ecec2acd165e6dd5692fed21d0667bbf3ac52 Mon Sep 17 00:00:00 2001 From: Russell Sim Date: Sat, 13 Jun 2020 15:05:22 +0200 Subject: Proton directory discovery Use search paths to find proton wine and the app directory, so that we can support steam installations in multiple locations and 3rd party proton installations. --- proto-wine/ftnoir_protocol_wine_dialog.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'proto-wine/ftnoir_protocol_wine_dialog.cpp') diff --git a/proto-wine/ftnoir_protocol_wine_dialog.cpp b/proto-wine/ftnoir_protocol_wine_dialog.cpp index b590ee94..76ccfdb5 100644 --- a/proto-wine/ftnoir_protocol_wine_dialog.cpp +++ b/proto-wine/ftnoir_protocol_wine_dialog.cpp @@ -1,19 +1,32 @@ #include "ftnoir_protocol_wine.h" #include +#include + #include "api/plugin-api.hpp" -static const char* proton_versions[] = { - "5.0", "4.11", "4.2", "3.16", "3.7", +static const char* proton_paths[] = { + "/.steam/steam/steamapps/common", + "/.steam/root/compatibilitytools.d", + "/.local/share/Steam/steamapps/common", }; +static const QStringList proton_filter = { "Proton*" }; + FTControls::FTControls() { ui.setupUi(this); - for (const char* version : proton_versions) - ui.proton_version->addItem(version, QVariant{version}); - - tie_setting(s.proton_version, ui.proton_version); + for (const char* path : proton_paths) { + QDir dir(QDir::homePath() + path); + dir.setFilter(QDir::Dirs); + dir.setNameFilters(proton_filter); + QFileInfoList list = dir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) { + QFileInfo fileInfo = list.at(i); + ui.proton_version->addItem(fileInfo.fileName(), QVariant{fileInfo.filePath()}); + } + } + tie_setting(s.proton_path, ui.proton_version); tie_setting(s.variant_wine, ui.variant_wine); tie_setting(s.variant_proton, ui.variant_proton); tie_setting(s.esync, ui.esync); @@ -37,4 +50,3 @@ void FTControls::doCancel() s.b->reload(); close(); } - -- cgit v1.2.3 From dc66734ae4d5c95aff3a365c499504e758bc343b Mon Sep 17 00:00:00 2001 From: Russell Sim Date: Sun, 14 Jun 2020 07:00:05 +0200 Subject: Simplify proton dirfilter --- proto-wine/ftnoir_protocol_wine_dialog.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'proto-wine/ftnoir_protocol_wine_dialog.cpp') diff --git a/proto-wine/ftnoir_protocol_wine_dialog.cpp b/proto-wine/ftnoir_protocol_wine_dialog.cpp index 76ccfdb5..a954a752 100644 --- a/proto-wine/ftnoir_protocol_wine_dialog.cpp +++ b/proto-wine/ftnoir_protocol_wine_dialog.cpp @@ -10,8 +10,6 @@ static const char* proton_paths[] = { "/.local/share/Steam/steamapps/common", }; -static const QStringList proton_filter = { "Proton*" }; - FTControls::FTControls() { ui.setupUi(this); @@ -19,7 +17,7 @@ FTControls::FTControls() for (const char* path : proton_paths) { QDir dir(QDir::homePath() + path); dir.setFilter(QDir::Dirs); - dir.setNameFilters(proton_filter); + dir.setNameFilters({ "Proton*" }); QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); -- cgit v1.2.3