/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #include "pagetoolsmenu.h" #include "../webview.h" #include #include #include #include #include #include PageToolsMenu::PageToolsMenu(WebView *parent) : QMenu(parent) { Q_CHECK_PTR(parent); parentView = parent; connect(this, &QMenu::aboutToShow, this, &PageToolsMenu::createEntries); } void PageToolsMenu::createEntries() { clear(); auto *scriptsMenu = new QMenu(tr("Injected Scripts"), this); for(const auto &script : parentView->page()->scripts().toList()) { scriptsMenu->addAction(script.name())->setEnabled(false); } addMenu(scriptsMenu); auto *devToolsAction = addAction(tr("Developer Tools")); connect(devToolsAction, &QAction::triggered, this, [this]() { createDevToolsDialog(parentView->page())->show(); }); } QDialog *PageToolsMenu::createDevToolsDialog(QWebEnginePage *page) { Q_CHECK_PTR(page); auto *popup = new QDialog(nullptr); popup->setWindowTitle(tr("Developer Tools")); popup->setAttribute(Qt::WA_DeleteOnClose, true); auto *view = new QWebEngineView(popup); auto *devPage = new QWebEnginePage(view); view->setPage(devPage); page->setDevToolsPage(devPage); auto *l = new QVBoxLayout(popup); l->setContentsMargins(0, 0, 0, 0); l->addWidget(view); return popup; }