summaryrefslogtreecommitdiff
path: root/Ladybird/InspectorWidget.h
blob: 6c566c5efd7c7b74c58b89e2527a8752ca3a6197 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
 * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include "DOMNodeProperties.h"
#include "ModelTranslator.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;
    };

    void clear_dom_json();
    void set_dom_json(StringView dom_json);

    void load_style_json(StringView computed_style_json, StringView resolved_style_json, StringView custom_properties_json);
    void clear_style_json();

    Function<ErrorOr<DOMNodeProperties>(i32, Optional<Web::CSS::Selector::PseudoElement>)> on_dom_node_inspected;
    Function<void()> on_close;

private:
    void set_selection(GUI::ModelIndex);
    void closeEvent(QCloseEvent*) override;

    Selection m_selection;

    ModelTranslator m_dom_model {};
    ModelTranslator m_computed_style_model {};
    ModelTranslator m_resolved_style_model {};
    ModelTranslator m_custom_properties_model {};
};

}