diff --git a/src/runner/proxypluginwrappers.cpp b/src/runner/proxypluginwrappers.cpp index 104575b..5a6693f 100644 --- a/src/runner/proxypluginwrappers.cpp +++ b/src/runner/proxypluginwrappers.cpp @@ -27,6 +27,8 @@ using namespace MOBase; ///////////////////////////// /// IPlugin Wrapper + + bool IPluginWrapper::init(MOBase::IOrganizer *moInfo) { try { @@ -76,97 +78,6 @@ QList IPluginWrapper::settings() const } PYCATCH; } /// end IPlugin Wrapper -///////////////////////////// -/// IPluginTool Wrapper - - -bool IPluginToolWrapper::init(MOBase::IOrganizer *moInfo) -{ - try { - return this->get_override("init")(boost::python::ptr(moInfo)); - } PYCATCH; -} - -QString IPluginToolWrapper::name() const -{ - try { - return this->get_override("name")().as(); - } PYCATCH; -} - -QString IPluginToolWrapper::author() const -{ - try { - return this->get_override("author")().as(); - } PYCATCH; -} - -QString IPluginToolWrapper::description() const -{ - try { - return this->get_override("description")().as(); - } PYCATCH; -} - -MOBase::VersionInfo IPluginToolWrapper::version() const -{ - try { - return this->get_override("version")().as(); - } PYCATCH; -} - -bool IPluginToolWrapper::isActive() const -{ - try { - return this->get_override("isActive")().as(); - } PYCATCH; -} - -QList IPluginToolWrapper::settings() const -{ - try { - return this->get_override("settings")().as>(); - } PYCATCH; -} - -QString IPluginToolWrapper::displayName() const -{ - try { - return this->get_override("displayName")().as(); - } PYCATCH; -} - -QString IPluginToolWrapper::tooltip() const -{ - try { - return this->get_override("tooltip")().as(); - } PYCATCH; -} - -QIcon IPluginToolWrapper::icon() const -{ - try { - return this->get_override("icon")().as(); - } PYCATCH; -} - -void IPluginToolWrapper::setParentWidget(QWidget *parent) -{ - try { - this->get_override("setParentWidget")(parent); - } PYCATCH; -} - -void IPluginToolWrapper::display() const -{ - try { - GILock lock; - - this->get_override("display")(); - } PYCATCH; -} - -/// end IPluginTool Wrapper ///////////////////////////////////// /// IPluginInstallerCustom Wrapper @@ -258,7 +169,7 @@ std::set IPluginInstallerCustomWrapper::supportedExtensions() const IPluginInstaller::EInstallResult IPluginInstallerCustomWrapper::install(GuessedValue &modName, const QString &archiveName, - const QString &version, int modID) + const QString &version, int modID) { try { return this->get_override("install")(modName, archiveName, version, modID); @@ -272,5 +183,96 @@ void IPluginInstallerCustomWrapper::setParentWidget(QWidget *parent) this->get_override("setParentWidget")(parent); } PYCATCH; } +/// end IPluginInstallerCustom Wrapper +///////////////////////////// +/// IPluginTool Wrapper +bool IPluginToolWrapper::init(MOBase::IOrganizer *moInfo) +{ + try { + return this->get_override("init")(boost::python::ptr(moInfo)); + } PYCATCH; +} + +QString IPluginToolWrapper::name() const +{ + try { + return this->get_override("name")().as(); + } PYCATCH; +} + +QString IPluginToolWrapper::author() const +{ + try { + return this->get_override("author")().as(); + } PYCATCH; +} + +QString IPluginToolWrapper::description() const +{ + try { + return this->get_override("description")().as(); + } PYCATCH; +} + +MOBase::VersionInfo IPluginToolWrapper::version() const +{ + try { + return this->get_override("version")().as(); + } PYCATCH; +} + +bool IPluginToolWrapper::isActive() const +{ + try { + return this->get_override("isActive")().as(); + } PYCATCH; +} + +QList IPluginToolWrapper::settings() const +{ + try { + return this->get_override("settings")().as>(); + } PYCATCH; +} + +QString IPluginToolWrapper::displayName() const +{ + try { + return this->get_override("displayName")().as(); + } PYCATCH; +} + +QString IPluginToolWrapper::tooltip() const +{ + try { + return this->get_override("tooltip")().as(); + } PYCATCH; +} + +QIcon IPluginToolWrapper::icon() const +{ + try { + return this->get_override("icon")().as(); + } PYCATCH; +} + +void IPluginToolWrapper::setParentWidget(QWidget *parent) +{ + try { + this->get_override("setParentWidget")(parent); + } PYCATCH; +} + +void IPluginToolWrapper::display() const +{ + try { + GILock lock; + + this->get_override("display")(); + } PYCATCH; +} + +/// end IPluginTool Wrapper + diff --git a/src/runner/proxypluginwrappers.h b/src/runner/proxypluginwrappers.h index 6131a24..6d724d1 100644 --- a/src/runner/proxypluginwrappers.h +++ b/src/runner/proxypluginwrappers.h @@ -26,6 +26,32 @@ public: }; +class IPluginInstallerCustomWrapper : public MOBase::IPluginInstallerCustom, public boost::python::wrapper +{ + Q_OBJECT + Q_INTERFACES(MOBase::IPlugin MOBase::IPluginInstaller MOBase::IPluginInstallerCustom) + +public: + virtual bool init(MOBase::IOrganizer *moInfo); + virtual QString name() const; + virtual QString author() const; + virtual QString description() const; + virtual MOBase::VersionInfo version() const; + virtual bool isActive() const; + virtual QList settings() const; + + virtual unsigned int priority() const; + virtual bool isManualInstaller() const; + virtual bool isArchiveSupported(const MOBase::DirectoryTree &tree) const; + virtual bool isArchiveSupported(const QString &archiveName) const; + virtual std::set supportedExtensions() const; + virtual EInstallResult install(MOBase::GuessedValue &modName, const QString &archiveName, + const QString &version, int modID); + virtual void setParentWidget(QWidget *parent); + +}; + + class IPluginToolWrapper: public MOBase::IPluginTool, public boost::python::wrapper { Q_OBJECT @@ -50,32 +76,6 @@ public slots: }; -class IPluginInstallerCustomWrapper: public MOBase::IPluginInstallerCustom, public boost::python::wrapper -{ - Q_OBJECT - Q_INTERFACES(MOBase::IPlugin MOBase::IPluginInstaller MOBase::IPluginInstallerCustom) - -public: - virtual bool init(MOBase::IOrganizer *moInfo); - virtual QString name() const; - virtual QString author() const; - virtual QString description() const; - virtual MOBase::VersionInfo version() const; - virtual bool isActive() const; - virtual QList settings() const; - - virtual unsigned int priority() const; - virtual bool isManualInstaller() const; - virtual bool isArchiveSupported(const MOBase::DirectoryTree &tree) const; - virtual bool isArchiveSupported(const QString &archiveName) const; - virtual std::set supportedExtensions() const; - virtual EInstallResult install(MOBase::GuessedValue &modName, const QString &archiveName, - const QString &version, int modID); - virtual void setParentWidget(QWidget *parent); - -}; - - #endif // PROXYPLUGINWRAPPERS_H diff --git a/src/runner/pythonrunner.cpp b/src/runner/pythonrunner.cpp index 79ad1c7..8af8e86 100644 --- a/src/runner/pythonrunner.cpp +++ b/src/runner/pythonrunner.cpp @@ -3,11 +3,10 @@ #pragma warning( disable : 4100 ) #pragma warning( disable : 4996 ) -#include "iplugingame.h" +#include +#include #include #include -#include -#include #include "uibasewrappers.h" #include "proxypluginwrappers.h" @@ -713,14 +712,6 @@ BOOST_PYTHON_MODULE(mobase) .value("literal", MOBase::VersionInfo::SCHEME_LITERAL) ; - bpy::enum_("InstallResult") - .value("success", MOBase::IPluginInstaller::RESULT_SUCCESS) - .value("failed", MOBase::IPluginInstaller::RESULT_FAILED) - .value("canceled", MOBase::IPluginInstaller::RESULT_CANCELED) - .value("manualRequested", MOBase::IPluginInstaller::RESULT_MANUALREQUESTED) - .value("notAttempted", MOBase::IPluginInstaller::RESULT_NOTATTEMPTED) - ; - bpy::class_("VersionInfo") .def(bpy::init()) .def(bpy::init()) @@ -847,16 +838,6 @@ BOOST_PYTHON_MODULE(mobase) .def("variants", &MOBase::GuessedValue::variants, bpy::return_value_policy()) ; - bpy::class_("IPlugin"); - - bpy::class_, boost::noncopyable>("IPluginTool") - .def("setParentWidget", bpy::pure_virtual(&MOBase::IPluginTool::setParentWidget)) - ; - - bpy::class_("IPluginInstallerCustom") - .def("setParentWidget", bpy::pure_virtual(&MOBase::IPluginInstallerCustom::setParentWidget)) - ; - bpy::to_python_converter>(); QFlags_from_python_obj(); Functor0_converter(); // converter for the onRefreshed-callback @@ -890,6 +871,8 @@ BOOST_PYTHON_MODULE(mobase) .def("onModMoved", bpy::pure_virtual(&MOBase::IModList::onModMoved)) ; + bpy::class_("IPlugin"); + bpy::enum_("LoadOrderMechanism") .value("FileTime", MOBase::IPluginGame::LoadOrderMechanism::FileTime) .value("PluginsTxt", MOBase::IPluginGame::LoadOrderMechanism::PluginsTxt) @@ -956,6 +939,22 @@ BOOST_PYTHON_MODULE(mobase) ; + bpy::enum_("InstallResult") + .value("success", MOBase::IPluginInstaller::RESULT_SUCCESS) + .value("failed", MOBase::IPluginInstaller::RESULT_FAILED) + .value("canceled", MOBase::IPluginInstaller::RESULT_CANCELED) + .value("manualRequested", MOBase::IPluginInstaller::RESULT_MANUALREQUESTED) + .value("notAttempted", MOBase::IPluginInstaller::RESULT_NOTATTEMPTED) + ; + + bpy::class_("IPluginInstallerCustom") + .def("setParentWidget", bpy::pure_virtual(&MOBase::IPluginInstallerCustom::setParentWidget)) + ; + + bpy::class_, boost::noncopyable>("IPluginTool") + .def("setParentWidget", bpy::pure_virtual(&MOBase::IPluginTool::setParentWidget)) + ; + bpy::class_("QDir") .def("absolutePath", &QDir::absolutePath) ; @@ -1082,9 +1081,9 @@ QObject *PythonRunner::instantiate(const QString &pluginName) m_PythonObjects[pluginName] = moduleNamespace["createPlugin"](); bpy::object pluginObj = m_PythonObjects[pluginName]; + TRY_PLUGIN_TYPE(IPluginGame, pluginObj); TRY_PLUGIN_TYPE(IPluginInstallerCustom, pluginObj); TRY_PLUGIN_TYPE(IPluginTool, pluginObj); - TRY_PLUGIN_TYPE(IPluginGame, pluginObj); } catch (const bpy::error_already_set&) { qWarning("failed to run python script \"%s\"", qPrintable(pluginName)); reportPythonError();