- Add enabledPlugins for core plugins which are enabled but NOT auto-loaded (may need to be written to plugins.txt or have an ambiguous load order position) - General Starfield updates - Add enabledPlugins for "BlueprintShips-Starfield.esm" - Disable plugin management if sTestFile is in use (also applies to FO4) - Write the enabledPlugins to plugins.txt to enforce base game load order - Allow for LOOT sorting (dynamic based on settings) - Incorporate enabledPlugins into force enabled plugins in plugin list - Update various interface layers TODO: Fix sort button to dynamically update if status changes TODO: Auto refresh lists if the INI Editor is closed
ModOrganizer2 - Python Proxy
This repository contains the Python proxy plugin for ModOrganizer2. The proxy plugin allow developers to write Python plugins for ModOrganizer2.
Setup, build, tests
This repository is part of MO2 main repositories and should usually be build using
mob.
Organization
This repositories contains 5 sub-projects in src.
The interface between Python and C++ is done using the
pybind11 library.
See the README in the subfolder (when there is one) for more details.
src/proxycontains the actual proxy plugin. This project is a simple interface between MO2 and the runner (see below). The CMake code:- generates the
plugin_python.dlllibrary, - generates the translation file (under
src/), - installs necessary files for the plugin (Python DLL, Python libraries, etc),
including
mobase.
- generates the
src/runnercontains the Python runner. This is the project that instantiates a Python interpreter and load/unload Python plugins.src/pybind11-qtcontains many utility stuff to interface pybind11 with Qt and PyQt.src/pybind11-utilscontains some utility stuff pybind11. This project is header-only.src/mobasecontains the Python plugin interface.- This projects generates the
mobasePython library.
- This projects generates the
Some (woefully incomplete) tests are available under tests, split in three
sub-directories:
tests/mockssimply contains mocks ofuibaseinterfaces to be used in the two other test projects.tests/pythoncontains Python tests forpytest. This project generates a bunch of Python test libraries that are then imported in Python test files (test_*.py) and tested usingpytest. These tests mostly cover the pybind11 Qt and utility stuff, and some standalone MO2 classes and functions (IFileTree,GuessedString, etc).tests/runnercontains C++ tests, using GTest Tests in this project instantiate a Python runner and then use it to check that plugins implemented in Python can be used properly on the C++ side.
Building & Running tests
Tests are not built by default with mob, so you will need to run cmake manually
with the proper arguments.
You need to define PLUGIN_PYTHON_TESTS with -DPLUGIN_PYTHON_TESTS when running
the configure step of cmake.
You can then build the tests
# replace vsbuild with your build folder
cmake --build vsbuild --config RelWithDebInfo --target "python-tests" "runner-tests"
To run the tests, use ctest
# replace vsbuild with your build folder
ctest.exe --test-dir vsbuild -C RelWithDebInfo