anyoldname3 / modorganizer-installer_omod Goto Github PK
View Code? Open in Web Editor NEWOMOD installer using https://github.com/erri120/OMODFramework
License: GNU General Public License v3.0
OMOD installer using https://github.com/erri120/OMODFramework
License: GNU General Public License v3.0
OMODs can set the relative load order for pairs content files, and this is available to us via LoadOrderSet
. This is used in CM Partners. Currently we don't do anything with this data other than yell at the user that they've found an OMOD feature we've not seen in the wild before, despite me having downloaded CM Partners in 2021 when I was doing some work on this.
It's not a huge deal as LOOT should have this data in its masterlist.
Cause is erri120/OMODFramework#31 interfering with per-mod temp paths. If Erril accepts, fixed upstream by erri120/OMODFramework#32. Will need to bump OMODFramework.Scripting if that gets merged.
Required by https://www.nexusmods.com/oblivion/mods/8773
It's fixed in a branch, so needs cherry-picking.
Currently, all installer_omod
popups except the readme are application-modal. Custom WinForms widgets created by C# OMODs, like DarNified UI, are thread-modal. The readme is non-modal. This imposes the following problems:
#3 changes the RtfPopup
to a QMainWindow
instead of QDialog
. This separates it from the main window's window hierarchy so it's not locked out. The issues then become:
For the DarNified UI popups, I don't know if we can do anything. We need to run the install script on a separate thread otherwise the extraction process will lock up the UI and we can't have a progress bar, and we have no control over the windows it creates. The only thing I can think of is having a Mod Organizer is locked while OMOD installer is running popup akin to when an application is running via the VFS, but I don't know if that would fight our other popups.
Qt's modality documentation isn't super-clear as I don't think they anticipated the readme popup use case. I believe that non-modal does what it sounds like, application-modal steals input from all Qt-managed windows in the application, and window-modal steals input from:
It might just be simpler to pass the generated HTML for the readme to the browser so it's totally out of MO2's hands.
If building from the command line, e.g. via Umbrella or mob
, the Nuget packages won't get installed until either:
msbuild -t:restore
is run on the generated .sln
.There's not really anything that can be done about this until https://gitlab.kitware.com/cmake/cmake/-/issues/20646 is resolved. Maybe some MO2 devs could nag them to implement it.
This should probably be saved somehow and recovered when the profile is changed. Something needs to happen so the user isn't nagged every time they switch profiles, though.
As demonstrated by https://github.com/AnyOldName3/modorganizer-installer_omod/tree/initialise-once, it's possible to reuse the same OMODFrameworkWrapper for multiple OMOD installations instead of constructing and tearing down a fresh one each time. For stuff like the OMODFrameworkSettings, which is static, it better matches the natural lifetime of the state we're setting.
Annoyingly:
IPlugin::init
. This has been worked around in the branch.The first popup DarNified UI generates is filled with images and is supposed to look like this:
As it was written before display scaling was a thing, it scales badly:
Basically, the images are displayed with one image pixel per device pixel, but the window is sized and things are positioned with the sizes multiplied. It still works, but isn't especially pretty.
meta.ini
.https://www.nexusmods.com/oblivion/mods/28223 Doesn't work (tired the Animations Installer OMOD inside the 7z) with a System.ArgumentOutOfRangeException
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.