From b54e479a3f9e973a083c643905f21c59fadd63bb Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Sun, 12 Apr 2026 03:00:11 -0500 Subject: Remove LOOT integration entirely The sort button was already hidden on Linux (setVisible(false)) and the LOOT feedback path (LootDialog -> addLootReport) has always been Windows-only, meaning the dirty/incompatibilities/missingMasters/messages tooltip bullets and the dirty-plugin icon could never fire on Linux. MO2 shipped lootcli + libloot for a load-order sort mechanism that was unreachable from the UI. Users who want LOOT can download it from https://github.com/loot/loot and run it against their instance directly. - Drop libs/lootcli/, libloot Dockerfile build step, and lootcli staging/patchelf in build-inner.sh - Drop src/src/loot.{cpp,h}, src/src/lootdialog.{cpp,h,ui} - Extract MarkdownDocument / MarkdownPage (used by UpdateDialog for its changelog view) into src/src/markdowndocument.{h,cpp} - Strip addLootReport, makeLootTooltip, Loot::Plugin field, LOOT icon checks, and LOOT tooltip/isProblematic/hasInfo paths from pluginlist - Delete sortButton widget, updateSortButton(), onSortButtonClicked(), and all m_didUpdateMasterList wiring - Delete lootLogLevel setting, combo box, and "Integrated LOOT" group from the diagnostics settings tab --- libs/lootcli/src/main.cpp | 102 ---------------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 libs/lootcli/src/main.cpp (limited to 'libs/lootcli/src/main.cpp') diff --git a/libs/lootcli/src/main.cpp b/libs/lootcli/src/main.cpp deleted file mode 100644 index d06e0ef..0000000 --- a/libs/lootcli/src/main.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "lootthread.h" -#include - -using namespace std; - -template -T getParameter(const std::vector& arguments, const std::string& key) -{ - auto iter = std::find(arguments.begin(), arguments.end(), std::string("--") + key); - if ((iter != arguments.end()) && ((iter + 1) != arguments.end())) { - return boost::lexical_cast(*(iter + 1)); - } else { - throw std::runtime_error(std::string("argument missing " + key)); - } -} - -template <> -bool getParameter(const std::vector& arguments, - const std::string& key) -{ - auto iter = std::find(arguments.begin(), arguments.end(), std::string("--") + key); - if (iter != arguments.end()) { - return true; - } else { - return false; - } -} - -template -T getOptionalParameter(const std::vector& arguments, - const std::string& key, T def) -{ - try { - return getParameter(arguments, key); - } catch (std::runtime_error&) { - return def; - } -} - -loot::LogLevel getLogLevel(const std::vector& arguments) -{ - const auto s = getOptionalParameter(arguments, "logLevel", ""); - const auto level = lootcli::logLevelFromString(s); - - return lootcli::toLootLogLevel(level); -} - -#ifdef _WIN32 -int wWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) -{ - _setmode(_fileno(stdout), _O_BINARY); - setlocale(LC_ALL, "en.UTF-8"); - - std::vector arguments; - int argc; - LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); - - if (argv) { - for (int i = 0; i < argc; ++i) { - size_t num_converted; - std::vector arg(wcslen(argv[i]) * sizeof(wchar_t) + 1); - - wcstombs_s(&num_converted, &(arg[0]), arg.size(), argv[i], arg.size() - 1); - - arguments.push_back(&(arg[0])); - } - } -#else -int main(int argc, char* argv[]) -{ - setlocale(LC_ALL, "en_US.UTF-8"); - - std::vector arguments; - for (int i = 0; i < argc; ++i) { - arguments.push_back(argv[i]); - } -#endif - - // design rationale: this was designed to have the actual loot stuff run in a separate - // thread. That turned out to be unnecessary atm. - - try { - lootcli::LOOTWorker worker; - - worker.setUpdateMasterlist(!getParameter(arguments, "skipUpdateMasterlist")); - worker.setGame(getParameter(arguments, "game")); - worker.setGamePath(getParameter(arguments, "gamePath")); - worker.setPluginListPath(getParameter(arguments, "pluginListPath")); - worker.setOutput(getParameter(arguments, "out")); - worker.setLogLevel(getLogLevel(arguments)); - - const auto lang = getOptionalParameter(arguments, "language", ""); - if (!lang.empty()) { - worker.setLanguageCode(lang); - } - - return worker.run(); - } catch (const std::exception& e) { - std::cerr << "Error: " << e.what(); - return 1; - } -} -- cgit v1.3.1