From 7ee008e150bc5bcf76082d726f719ee0fdfda982 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Wed, 11 Feb 2026 02:37:39 -0600 Subject: 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 --- libs/installer_omod/src/installerOmod.h | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 libs/installer_omod/src/installerOmod.h (limited to 'libs/installer_omod/src/installerOmod.h') diff --git a/libs/installer_omod/src/installerOmod.h b/libs/installer_omod/src/installerOmod.h new file mode 100644 index 0000000..a122355 --- /dev/null +++ b/libs/installer_omod/src/installerOmod.h @@ -0,0 +1,75 @@ +#ifndef INSTALLEROMOD_H +#define INSTALLEROMOD_H + +#include + +#include +#include + +#include "OMODFrameworkWrapper.h" + +class InstallerOMOD : public MOBase::IPluginInstallerCustom, public MOBase::IPluginFileMapper +{ + Q_OBJECT; + Q_INTERFACES(MOBase::IPlugin MOBase::IPluginInstaller MOBase::IPluginInstallerCustom MOBase::IPluginFileMapper); +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) + // We should probably buy a domain. + Q_PLUGIN_METADATA(IID "org.AnyOldName3.InstallerOmod"); +#endif + +public: + InstallerOMOD(); + + // IPlugin + bool init(MOBase::IOrganizer* moInfo) override; + + QString name() const override; + + QString localizedName() const override; + + QString author() const override; + + QString description() const override; + + MOBase::VersionInfo version() const override; + + std::vector> requirements() const override; + + QList settings() const override; + + // IPluginInstaller + + unsigned int priority() const override; + + bool isManualInstaller() const override; + + void onInstallationEnd(EInstallResult result, MOBase::IModInterface* newMod) override; + + bool isArchiveSupported(std::shared_ptr tree) const override; + + void setParentWidget(QWidget* parent) override; + + // IPluginInstallerCustom + + bool isArchiveSupported(const QString& archiveName) const override; + + std::set supportedExtensions() const override; + + EInstallResult install(MOBase::GuessedValue& modName, QString gameName, const QString& archiveName, const QString& version, int nexusID) override; + + // IPluginFileMapper + + MappingType mappings() const override; + +protected: + void buildSDPs(); + + void clearSDPs(); + +private: + MOBase::IOrganizer* mMoInfo; + std::unique_ptr mOmodFrameworkWrapper; + std::map> mVirtualSDPs; +}; + +#endif // !INSTALLEROMOD_H -- cgit v1.3.1