diff options
Diffstat (limited to 'src/browser.cpp')
-rw-r--r-- | src/browser.cpp | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/src/browser.cpp b/src/browser.cpp index 0bd3d06..cc5d565 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -54,10 +54,6 @@ Browser::~Browser() void Browser::about() { auto *dlg = new AboutDialog; - for(const QPluginLoader *loader : qAsConst(m_plugins)) { - const auto meta = loader->metaData().value("MetaData").toObject(); - dlg->addPlugin(meta.value("name").toString(), meta.value("author").toString(), meta.value("shortcut").toString()); - } dlg->exec(); } @@ -224,21 +220,8 @@ MainWindow *Browser::createWindow() connect(window->addressBar, &AddressBar::complete, m_bookmarks.get(), &BookmarksWidget::search); connect(window, &MainWindow::createBookmark, m_bookmarks.get(), &BookmarksWidget::addBookmark); - connect(window->ui->menuTools, &QMenu::aboutToShow, this, [this, window]() { - window->ui->menuPlugins->clear(); - - for(const QPluginLoader *l : m_plugins) { - auto *action = window->ui->menuPlugins->addAction(l->metaData()[QLatin1String("MetaData")].toObject()[QLatin1String("name")].toString()); - connect(action, &QAction::triggered, this, [l, window]() { - auto *dlg = new AboutPluginDialog(l, window); - dlg->exec(); - }); - } - }); - - auto *bookmarksAction = new QAction(tr("Bookmarks"), window); - m_config->setShortcut(bookmarksAction, "bookmarks.shortcut"); - connect(bookmarksAction, &QAction::triggered, window, [this, window]() { + m_config->setShortcut(window->ui->actionBookmarks, "bookmarks.shortcut"); + connect(window->ui->actionBookmarks, &QAction::triggered, window, [this, window]() { bool wasVisible = m_bookmarks->isVisible(); for(MainWindow *w : qAsConst(m_windows)) { w->removeDockWidget(m_bookmarks.get()); @@ -247,11 +230,9 @@ MainWindow *Browser::createWindow() window->addDockWidget(Qt::RightDockWidgetArea, m_bookmarks.get()); } }); - window->addAction(MainWindow::ToolsMenu, bookmarksAction); - auto *downloadsAction = new QAction(tr("Downloads"), window); - m_config->setShortcut(downloadsAction, "downloads.shortcut"); - connect(downloadsAction, &QAction::triggered, window, [this, window]() { + m_config->setShortcut(window->ui->actionDownloads, "downloads.shortcut"); + connect(window->ui->actionDownloads, &QAction::triggered, window, [this, window]() { bool wasVisible = m_downloads->isVisible(); for(MainWindow *w : qAsConst(m_windows)) { w->removeDockWidget(m_downloads.get()); @@ -260,18 +241,25 @@ MainWindow *Browser::createWindow() window->addDockWidget(Qt::RightDockWidgetArea, m_downloads.get()); } }); - window->addAction(MainWindow::ToolsMenu, downloadsAction); for(QPluginLoader *loader : qAsConst(m_plugins)) { const auto *plugin = qobject_cast<PluginInterface *>(loader->instance()); Q_CHECK_PTR(plugin); - auto *pluginAction = new QAction(loader->metaData().value("MetaData").toObject().value("name").toString(), window); - pluginAction->setShortcut(QKeySequence::fromString(loader->metaData().value("MetaData").toObject().value("shortcut").toString())); - connect(pluginAction, &QAction::triggered, window, [=]() { + auto *pluginMenu = window->ui->menuTools->addMenu(loader->metaData().value("MetaData").toObject().value("name").toString()); + + auto *aboutAction = pluginMenu->addAction(tr("About")); + connect(aboutAction, &QAction::triggered, this, [loader, window]() { + auto *dlg = new AboutPluginDialog(loader, window); + dlg->exec(); + }); + + 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(); }); - window->addAction(MainWindow::ToolsMenu, pluginAction); } m_windows.append(window); |