diff --git a/Userland/Libraries/LibGUI/Button.cpp b/Userland/Libraries/LibGUI/Button.cpp index 456191fd4b..7cd7d440a0 100644 --- a/Userland/Libraries/LibGUI/Button.cpp +++ b/Userland/Libraries/LibGUI/Button.cpp @@ -29,6 +29,8 @@ Button::Button(String text) "button_style", button_style, set_button_style, Gfx::ButtonStyle, { Gfx::ButtonStyle::Normal, "Normal" }, { Gfx::ButtonStyle::Coolbar, "Coolbar" }); + + REGISTER_STRING_PROPERTY("icon", icon, set_icon_from_path); } Button::~Button() @@ -140,6 +142,16 @@ void Button::set_icon(RefPtr&& icon) update(); } +void Button::set_icon_from_path(String const& path) +{ + auto maybe_bitmap = Gfx::Bitmap::try_load_from_file(path); + if (maybe_bitmap.is_error()) { + dbgln("Unable to load bitmap `{}` for button icon", path); + return; + } + set_icon(maybe_bitmap.release_value()); +} + bool Button::is_uncheckable() const { if (!m_action) diff --git a/Userland/Libraries/LibGUI/Button.h b/Userland/Libraries/LibGUI/Button.h index 26d1588ed8..0ab17fd88d 100644 --- a/Userland/Libraries/LibGUI/Button.h +++ b/Userland/Libraries/LibGUI/Button.h @@ -21,6 +21,7 @@ public: virtual ~Button() override; void set_icon(RefPtr&&); + void set_icon_from_path(String const&); const Gfx::Bitmap* icon() const { return m_icon.ptr(); } Gfx::Bitmap* icon() { return m_icon.ptr(); }