Skip to content

Commit b1ecd89

Browse files
Add instance manager to plugin API (#152)
1 parent 076244f commit b1ecd89

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/mobase/wrappers/basic_classes.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#include <uibase/iexecutable.h>
1515
#include <uibase/iexecutableslist.h>
1616
#include <uibase/iinstallationmanager.h>
17+
#include <uibase/iinstance.h>
18+
#include <uibase/iinstancemanager.h>
1719
#include <uibase/imodinterface.h>
1820
#include <uibase/imodrepositorybridge.h>
1921
#include <uibase/imoinfo.h>
@@ -644,6 +646,8 @@ namespace mo2::python {
644646

645647
.def("virtualFileTree", &IOrganizer::virtualFileTree)
646648

649+
.def("instanceManager", &IOrganizer::instanceManager,
650+
py::return_value_policy::reference)
647651
.def("downloadManager", &IOrganizer::downloadManager,
648652
py::return_value_policy::reference)
649653
.def("pluginList", &IOrganizer::pluginList,
@@ -799,6 +803,20 @@ namespace mo2::python {
799803
.def_static("getPluginDataPath", &IOrganizer::getPluginDataPath);
800804
}
801805

806+
void add_iinstance_manager_classes(py::module_ m)
807+
{
808+
py::class_<IInstance, std::shared_ptr<IInstance>>(m, "IInstance")
809+
.def("displayName", &IInstance::displayName)
810+
.def("gameName", &IInstance::gameName)
811+
.def("gameDirectory", &IInstance::gameDirectory)
812+
.def("isPortable", &IInstance::isPortable);
813+
814+
py::class_<IInstanceManager>(m, "IInstanceManager")
815+
.def("currentInstance", &IInstanceManager::currentInstance)
816+
.def("globalInstancePaths", &IInstanceManager::globalInstancePaths)
817+
.def("getGlobalInstance", &IInstanceManager::getGlobalInstance);
818+
}
819+
802820
void add_idownload_manager_classes(py::module_ m)
803821
{
804822
py::class_<IDownloadManager>(m, "IDownloadManager")
@@ -925,6 +943,7 @@ namespace mo2::python {
925943

926944
add_ipluginlist_classes(m);
927945
add_imodlist_classes(m);
946+
add_iinstance_manager_classes(m);
928947
add_idownload_manager_classes(m);
929948
add_iinstallation_manager_classes(m);
930949
add_iorganizer_classes(m);

tests/mocks/MockOrganizer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class MockOrganizer : public IOrganizer {
3434
MOCK_METHOD(QStringList, getFileOrigins, (const QString &fileName) ,(const, override));
3535
MOCK_METHOD(QList<FileInfo>, findFileInfos, (const QString &path, const std::function<bool(const FileInfo&)> &filter), (const, override));
3636
MOCK_METHOD(std::shared_ptr<const IFileTree>, virtualFileTree, (), (const, override));
37+
MOCK_METHOD(MOBase::IInstanceManager*, instanceManager, (), (const, override));
3738
MOCK_METHOD(MOBase::IDownloadManager*, downloadManager, (), (const, override));
3839
MOCK_METHOD(MOBase::IPluginList*, pluginList, (), (const, override));
3940
MOCK_METHOD(MOBase::IModList*, modList, (), (const, override));

0 commit comments

Comments
 (0)