Skip to content

Commit

Permalink
LibGUI: Implement set_property() on Widget and AbstractButton
Browse files Browse the repository at this point in the history
This makes it possible for an RPC client to modify some interesting
widget properties.
  • Loading branch information
awesomekling committed Mar 5, 2020
1 parent 42f2696 commit 3edcaa9
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
22 changes: 22 additions & 0 deletions Libraries/LibGUI/AbstractButton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

}
1 change: 1 addition & 0 deletions Libraries/LibGUI/AbstractButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class AbstractButton : public Widget {
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);

Expand Down
25 changes: 25 additions & 0 deletions Libraries/LibGUI/Widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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*> Widget::child_widgets() const
{
Vector<Widget*> widgets;
Expand Down
2 changes: 2 additions & 0 deletions Libraries/LibGUI/Widget.h
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,8 @@ class Widget : public Core::Object {
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&);
Expand Down

0 comments on commit 3edcaa9

Please sign in to comment.