ladybird/Ladybird/Qt/InspectorWidget.h
Timothy Flynn 55b53e98d7 Ladybird/Qt: Convert the inspector widget to the WebView model class
This creates a Qt-specific wrapper around the WebView model classes and
uses it for the inspector widget tree / table view models.
2023-11-05 09:11:23 +01:00

74 lines
1.9 KiB
C++

/*
* Copyright (c) 2022, MacDue <macdue@dueutil.tech>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "ModelAdapter.h"
#include "WebContentView.h"
#include <AK/Optional.h>
#include <AK/StringView.h>
#include <LibWeb/CSS/Selector.h>
#include <QWidget>
class QTreeView;
class QTableView;
namespace Ladybird {
class InspectorWidget final : public QWidget {
Q_OBJECT
public:
InspectorWidget();
virtual ~InspectorWidget() = default;
struct Selection {
i32 dom_node_id { 0 };
Optional<Web::CSS::Selector::PseudoElement> pseudo_element {};
bool operator==(Selection const& other) const = default;
};
bool dom_loaded() const { return m_dom_loaded; }
void set_selection(Selection);
void clear_selection();
void select_default_node();
void clear_dom_json();
void set_dom_json(StringView dom_json);
void set_accessibility_json(StringView accessibility_json);
void load_style_json(StringView computed_style_json, StringView resolved_style_json, StringView custom_properties_json);
void clear_style_json();
Function<ErrorOr<WebContentView::DOMNodeProperties>(i32, Optional<Web::CSS::Selector::PseudoElement>)> on_dom_node_inspected;
Function<void()> on_close;
private:
void set_selection(QModelIndex const&);
void closeEvent(QCloseEvent*) override;
Selection m_selection;
OwnPtr<TreeModel> m_dom_model;
OwnPtr<TreeModel> m_accessibility_model;
OwnPtr<PropertyTableModel> m_computed_style_model;
OwnPtr<PropertyTableModel> m_resolved_style_model;
OwnPtr<PropertyTableModel> m_custom_properties_model;
QTreeView* m_dom_tree_view { nullptr };
QTreeView* m_accessibility_tree_view { nullptr };
QTableView* m_computed_style_table { nullptr };
QTableView* m_resolved_style_table { nullptr };
QTableView* m_custom_properties_table { nullptr };
bool m_dom_loaded { false };
Optional<Selection> m_pending_selection {};
};
}