aboutsummaryrefslogtreecommitdiff
path: root/src/browser.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-11-23 11:48:03 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-11-23 11:48:03 +0100
commit5e26d0efb42103457d813ea79830eebf6feeba9b (patch)
tree338cbfbc890eb1b8f4056bb89a6541217c1437ff /src/browser.cpp
parentAdd About and Run actions to plugin submenu (diff)
downloadsmolbote-5e26d0efb42103457d813ea79830eebf6feeba9b.tar.xz
Loading and unloading of plugins at runtime
Diffstat (limited to 'src/browser.cpp')
-rw-r--r--src/browser.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/browser.cpp b/src/browser.cpp
index cc5d565..4547e08 100644
--- a/src/browser.cpp
+++ b/src/browser.cpp
@@ -243,9 +243,6 @@ MainWindow *Browser::createWindow()
});
for(QPluginLoader *loader : qAsConst(m_plugins)) {
- const auto *plugin = qobject_cast<PluginInterface *>(loader->instance());
- Q_CHECK_PTR(plugin);
-
auto *pluginMenu = window->ui->menuTools->addMenu(loader->metaData().value("MetaData").toObject().value("name").toString());
auto *aboutAction = pluginMenu->addAction(tr("About"));
@@ -257,8 +254,12 @@ MainWindow *Browser::createWindow()
auto *runAction = pluginMenu->addAction(tr("Run"));
runAction->setShortcut(QKeySequence::fromString(loader->metaData().value("MetaData").toObject().value("shortcut").toString()));
- connect(runAction, &QAction::triggered, window, [=]() {
- plugin->createWidget(window)->exec();
+ connect(runAction, &QAction::triggered, window, [loader, window]() {
+ if(loader->isLoaded()) {
+ const auto *interface = qobject_cast<PluginInterface *>(loader->instance());
+ Q_CHECK_PTR(interface);
+ interface->createWidget(window)->exec();
+ }
});
}