1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 17:25:08 +00:00

LibHTML+Browser: Add a simple DOM inspector popup window

LibHTML now provides a DOMTreeModel which can be used to view a given
Document's DOM tree. :^)
This commit is contained in:
Andreas Kling 2019-11-09 11:31:03 +01:00
parent 0f76366b34
commit e3d975e943
5 changed files with 188 additions and 0 deletions

View file

@ -9,9 +9,11 @@
#include <LibGUI/GStatusBar.h>
#include <LibGUI/GTextBox.h>
#include <LibGUI/GToolBar.h>
#include <LibGUI/GTreeView.h>
#include <LibGUI/GWindow.h>
#include <LibHTML/CSS/StyleResolver.h>
#include <LibHTML/DOM/Element.h>
#include <LibHTML/DOMTreeModel.h>
#include <LibHTML/Dump.h>
#include <LibHTML/HtmlView.h>
#include <LibHTML/Layout/LayoutBlock.h>
@ -129,6 +131,27 @@ int main(int argc, char** argv)
}));
menubar->add_menu(move(app_menu));
RefPtr<GWindow> dom_inspector_window;
RefPtr<GTreeView> dom_tree_view;
auto inspect_menu = make<GMenu>("Inspect");
inspect_menu->add_action(GAction::create("Inspect DOM tree", [&](auto&) {
if (!dom_inspector_window) {
dom_inspector_window = GWindow::construct();
dom_inspector_window->set_rect(100, 100, 300, 500);
dom_inspector_window->set_title("DOM inspector");
dom_tree_view = GTreeView::construct(nullptr);
dom_inspector_window->set_main_widget(dom_tree_view);
}
if (html_widget->document())
dom_tree_view->set_model(DOMTreeModel::create(*html_widget->document()));
else
dom_tree_view->set_model(nullptr);
dom_inspector_window->show();
dom_inspector_window->move_to_front();
}));
menubar->add_menu(move(inspect_menu));
auto debug_menu = make<GMenu>("Debug");
debug_menu->add_action(GAction::create("Dump DOM tree", [&](auto&) {
dump_tree(*html_widget->document());