LibGUI: Make button icons settable in GML

`Widget::load_from_gml()` doesn't yet return `ErrorOr`, so we log a
warning message if loading the icon fails.
This commit is contained in:
Sam Atkins 2022-01-06 16:59:58 +00:00 committed by Andreas Kling
parent 49011e2030
commit dd17df76e9
2 changed files with 13 additions and 0 deletions

View file

@ -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<Gfx::Bitmap>&& 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)

View file

@ -21,6 +21,7 @@ public:
virtual ~Button() override;
void set_icon(RefPtr<Gfx::Bitmap>&&);
void set_icon_from_path(String const&);
const Gfx::Bitmap* icon() const { return m_icon.ptr(); }
Gfx::Bitmap* icon() { return m_icon.ptr(); }