diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-11-04 20:57:50 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-11-04 20:57:50 -0500 |
| commit | e6a87a17987de5d8e462634777df31e2cae5c1a6 (patch) | |
| tree | 1d5fa9752f6949b62aa6a8148b07cea7b02d964c /src/plugincontainer.cpp | |
| parent | f7b097e6ba3160b424204c719b615954601f76fe (diff) | |
added IPlugin::registered()
removed useless dummy interfaces because init() isn't called anymore
python plugins currently broken because init() isn't called on them
fixed create instance dialog being shown on startup even if portable instance existed
display a message when the last instance can't be found
fixed instance manager dialog failing to open the portable instance
Diffstat (limited to 'src/plugincontainer.cpp')
| -rw-r--r-- | src/plugincontainer.cpp | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index 6f2670dd..0c71e491 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -169,23 +169,19 @@ QObject* PluginContainer::as_qobject(MOBase::IPlugin* plugin) const return *it;
}
-bool PluginContainer::verifyPlugin(IPlugin *plugin)
+bool PluginContainer::initPlugin(IPlugin *plugin)
{
if (plugin == nullptr) {
return false;
}
- IOrganizer* proxy = nullptr;
-
if (m_Organizer) {
- proxy = new OrganizerProxy(m_Organizer, this, plugin);
- } else {
- proxy = new DummyOrganizerProxy(plugin);
- }
+ auto* proxy = new OrganizerProxy(m_Organizer, this, plugin);
- if (!plugin->init(proxy)) {
- log::warn("plugin failed to initialize");
- return false;
+ if (!plugin->init(proxy)) {
+ log::warn("plugin failed to initialize");
+ return false;
+ }
}
return true;
@@ -197,7 +193,6 @@ void PluginContainer::registerGame(IPluginGame *game) m_SupportedGames.insert({ game->gameName(), game });
}
-
bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName)
{
// Storing the original QObject* is a bit of a hack as I couldn't figure out any
@@ -210,10 +205,14 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) log::debug("not an IPlugin");
return false;
}
+
plugin->setProperty("filename", fileName);
+
if (m_Organizer) {
m_Organizer->settings().plugins().registerPlugin(pluginObj);
}
+
+ pluginObj->registered();
}
{ // diagnosis plugin
@@ -233,14 +232,14 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) }
{ // mod page plugin
IPluginModPage *modPage = qobject_cast<IPluginModPage*>(plugin);
- if (verifyPlugin(modPage)) {
+ if (initPlugin(modPage)) {
bf::at_key<IPluginModPage>(m_Plugins).push_back(modPage);
return true;
}
}
{ // game plugin
IPluginGame *game = qobject_cast<IPluginGame*>(plugin);
- if (verifyPlugin(game)) {
+ if (initPlugin(game)) {
bf::at_key<IPluginGame>(m_Plugins).push_back(game);
registerGame(game);
return true;
@@ -248,14 +247,14 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) }
{ // tool plugins
IPluginTool *tool = qobject_cast<IPluginTool*>(plugin);
- if (verifyPlugin(tool)) {
+ if (initPlugin(tool)) {
bf::at_key<IPluginTool>(m_Plugins).push_back(tool);
return true;
}
}
{ // installer plugins
IPluginInstaller *installer = qobject_cast<IPluginInstaller*>(plugin);
- if (verifyPlugin(installer)) {
+ if (initPlugin(installer)) {
bf::at_key<IPluginInstaller>(m_Plugins).push_back(installer);
if (m_Organizer) {
m_Organizer->installationManager()->registerInstaller(installer);
@@ -265,7 +264,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) }
{ // preview plugins
IPluginPreview *preview = qobject_cast<IPluginPreview*>(plugin);
- if (verifyPlugin(preview)) {
+ if (initPlugin(preview)) {
bf::at_key<IPluginPreview>(m_Plugins).push_back(preview);
m_PreviewGenerator.registerPlugin(preview);
return true;
@@ -273,7 +272,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) }
{ // proxy plugins
IPluginProxy *proxy = qobject_cast<IPluginProxy*>(plugin);
- if (verifyPlugin(proxy)) {
+ if (initPlugin(proxy)) {
bf::at_key<IPluginProxy>(m_Plugins).push_back(proxy);
QStringList pluginNames = proxy->pluginList(
QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::pluginPath()));
@@ -305,7 +304,7 @@ bool PluginContainer::registerPlugin(QObject *plugin, const QString &fileName) { // dummy plugins
// only initialize these, no processing otherwise
IPlugin *dummy = qobject_cast<IPlugin*>(plugin);
- if (verifyPlugin(dummy)) {
+ if (initPlugin(dummy)) {
bf::at_key<IPlugin>(m_Plugins).push_back(dummy);
return true;
}
|
