serenity/DevTools/Inspector/RemoteObjectPropertyModel.h
Andreas Kling 4f3234148a Inspector: Show remote object properties in a table view
This patch expands the object model of this program quite a bit.
We now have a RemoteProcess object that contains a list of remote root
RemoteObject objects.

The RemoteProcess vends a RemoteObjectGraphModel&, and indices in that
model have internal_data() pointing to a corresponding RemoteObject.
RemoteObjects in turn vend a RemoteObjectPropertyModel&, which is what
we use to show the object properties.

This is pretty cool :^)
2019-08-19 20:29:52 +02:00

38 lines
1,010 B
C++

#pragma once
#include <AK/JsonValue.h>
#include <LibGUI/GModel.h>
class RemoteObject;
class RemoteObjectPropertyModel final : public GModel {
public:
virtual ~RemoteObjectPropertyModel() override {}
static NonnullRefPtr<RemoteObjectPropertyModel> create(RemoteObject& object)
{
return adopt(*new RemoteObjectPropertyModel(object));
}
enum Column {
Name,
Value,
__Count,
};
virtual int row_count(const GModelIndex& = GModelIndex()) const override;
virtual int column_count(const GModelIndex& = GModelIndex()) const override { return Column::__Count; }
virtual String column_name(int) const override;
virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
virtual void update() override;
private:
explicit RemoteObjectPropertyModel(RemoteObject&);
RemoteObject& m_object;
struct NameAndValue {
JsonValue name;
JsonValue value;
};
Vector<NameAndValue> m_properties;
};