diff --git a/Libraries/LibGUI/AbstractButton.cpp b/Libraries/LibGUI/AbstractButton.cpp index dfab44529fa..d55e16e682b 100644 --- a/Libraries/LibGUI/AbstractButton.cpp +++ b/Libraries/LibGUI/AbstractButton.cpp @@ -206,4 +206,26 @@ void AbstractButton::save_to(JsonObject& json) Widget::save_to(json); } +bool AbstractButton::set_property(const StringView& name, const JsonValue& value) +{ + if (name == "text") { + set_text(value.to_string()); + return true; + } + if (name == "checked") { + set_checked(value.to_bool()); + return true; + } + if (name == "checkable") { + set_checkable(value.to_bool()); + return true; + } + if (name == "exclusive") { + set_exclusive(value.to_bool()); + return true; + } + + return Widget::set_property(name, value); +} + } diff --git a/Libraries/LibGUI/AbstractButton.h b/Libraries/LibGUI/AbstractButton.h index 3b833a08ecd..cbdbbb74c21 100644 --- a/Libraries/LibGUI/AbstractButton.h +++ b/Libraries/LibGUI/AbstractButton.h @@ -71,6 +71,7 @@ protected: virtual void change_event(Event&) override; virtual void save_to(JsonObject&) override; + virtual bool set_property(const StringView& name, const JsonValue& value) override; void paint_text(Painter&, const Gfx::Rect&, const Gfx::Font&, Gfx::TextAlignment); diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index 6b416460926..7e5d7196338 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -739,6 +739,31 @@ void Widget::save_to(AK::JsonObject& json) Core::Object::save_to(json); } +bool Widget::set_property(const StringView& name, const JsonValue& value) +{ + if (name == "fill_with_background_color") { + set_fill_with_background_color(value.to_bool()); + return true; + } + if (name == "tooltip") { + set_tooltip(value.to_string()); + return true; + } + if (name == "enable") { + set_enabled(value.to_bool()); + return true; + } + if (name == "focused") { + set_focus(value.to_bool()); + return true; + } + if (name == "visible") { + set_visible(value.to_bool()); + return true; + } + return Core::Object::set_property(name, value); +} + Vector Widget::child_widgets() const { Vector widgets; diff --git a/Libraries/LibGUI/Widget.h b/Libraries/LibGUI/Widget.h index 80d4f740cfb..52f41fdd4a7 100644 --- a/Libraries/LibGUI/Widget.h +++ b/Libraries/LibGUI/Widget.h @@ -296,6 +296,8 @@ protected: virtual void did_begin_inspection() override; virtual void did_end_inspection() override; + virtual bool set_property(const StringView& name, const JsonValue& value) override; + private: void handle_paint_event(PaintEvent&); void handle_resize_event(ResizeEvent&);