aboutsummaryrefslogtreecommitdiff
path: root/libs/uibase/src/executableinfo.cpp
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-11 02:37:39 -0600
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-11 02:37:39 -0600
commit7ee008e150bc5bcf76082d726f719ee0fdfda982 (patch)
tree27fb39be241fdb5ac2734c574de678977d1856d0 /libs/uibase/src/executableinfo.cpp
Fluorine Manager: full Linux port of Mod Organizer 2
Complete native Linux port with FUSE-based virtual filesystem, Proton/umu-run integration, and Flatpak packaging. Key features: - FUSE VFS replacing Windows USVFS (in-process + standalone helper for Flatpak) - Proton/GE-Proton/umu-run launcher with env var forwarding - Flatpak support (sandbox-aware VFS, NXM handler, umu-run) - Wine prefix management UI - Case-insensitive path resolution for Linux filesystems - QSettings-safe INI handling (avoids Bethesda INI corruption) - Portable instance support with auto-generated launcher scripts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/uibase/src/executableinfo.cpp')
-rw-r--r--libs/uibase/src/executableinfo.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/libs/uibase/src/executableinfo.cpp b/libs/uibase/src/executableinfo.cpp
new file mode 100644
index 0000000..1573a0b
--- /dev/null
+++ b/libs/uibase/src/executableinfo.cpp
@@ -0,0 +1,105 @@
+#include <uibase/executableinfo.h>
+
+using namespace MOBase;
+
+ExecutableForcedLoadSetting::ExecutableForcedLoadSetting(const QString& process,
+ const QString& library)
+ : m_Enabled(false), m_Process(process), m_Library(library), m_Forced(false)
+{}
+
+ExecutableForcedLoadSetting& ExecutableForcedLoadSetting::withEnabled(bool enabled)
+{
+ m_Enabled = enabled;
+ return *this;
+}
+
+ExecutableForcedLoadSetting& ExecutableForcedLoadSetting::withForced(bool forced)
+{
+ m_Forced = forced;
+ return *this;
+}
+
+bool ExecutableForcedLoadSetting::enabled() const
+{
+ return m_Enabled;
+}
+
+bool ExecutableForcedLoadSetting::forced() const
+{
+ return m_Forced;
+}
+
+QString ExecutableForcedLoadSetting::library() const
+{
+ return m_Library;
+}
+
+QString ExecutableForcedLoadSetting::process() const
+{
+ return m_Process;
+}
+
+MOBase::ExecutableInfo::ExecutableInfo(const QString& title, const QFileInfo& binary)
+ : m_Title(title), m_Binary(binary),
+ m_WorkingDirectory(binary.exists() ? binary.absoluteDir() : QString()),
+ m_SteamAppID()
+{}
+
+ExecutableInfo& ExecutableInfo::withArgument(const QString& argument)
+{
+ m_Arguments.append(argument);
+ return *this;
+}
+
+ExecutableInfo& ExecutableInfo::withWorkingDirectory(const QDir& workingDirectory)
+{
+ m_WorkingDirectory = workingDirectory;
+ return *this;
+}
+
+ExecutableInfo& MOBase::ExecutableInfo::withSteamAppId(const QString& appId)
+{
+ m_SteamAppID = appId;
+ return *this;
+}
+
+ExecutableInfo& ExecutableInfo::asCustom()
+{
+ m_Custom = true;
+ return *this;
+}
+
+bool ExecutableInfo::isValid() const
+{
+ return m_Binary.exists();
+}
+
+QString ExecutableInfo::title() const
+{
+ return m_Title;
+}
+
+QFileInfo ExecutableInfo::binary() const
+{
+ return m_Binary;
+}
+
+QStringList ExecutableInfo::arguments() const
+{
+ return m_Arguments;
+}
+
+QDir ExecutableInfo::workingDirectory() const
+{
+ return m_WorkingDirectory;
+}
+
+QString ExecutableInfo::steamAppID() const
+{
+ return m_SteamAppID;
+}
+
+bool ExecutableInfo::isCustom() const
+{
+ return m_Custom;
+}