GButton.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include <AK/String.h>
  3. #include <AK/Function.h>
  4. #include <LibGUI/GAbstractButton.h>
  5. #include <LibDraw/GraphicsBitmap.h>
  6. #include <LibDraw/StylePainter.h>
  7. #include <LibDraw/TextAlignment.h>
  8. class GAction;
  9. class GButton : public GAbstractButton {
  10. C_OBJECT(GButton)
  11. public:
  12. GButton(const StringView& text, GWidget* parent);
  13. explicit GButton(GWidget* parent);
  14. virtual ~GButton() override;
  15. void set_icon(RefPtr<GraphicsBitmap>&&);
  16. const GraphicsBitmap* icon() const { return m_icon.ptr(); }
  17. GraphicsBitmap* icon() { return m_icon.ptr(); }
  18. void set_text_alignment(TextAlignment text_alignment) { m_text_alignment = text_alignment; }
  19. TextAlignment text_alignment() const { return m_text_alignment; }
  20. Function<void(GButton&)> on_click;
  21. void set_button_style(ButtonStyle style) { m_button_style = style; }
  22. ButtonStyle button_style() const { return m_button_style; }
  23. virtual void click() override;
  24. void set_action(GAction&);
  25. virtual bool accepts_focus() const override { return m_focusable; }
  26. virtual bool supports_keyboard_activation() const override;
  27. virtual bool is_uncheckable() const override;
  28. void set_focusable(bool b) { m_focusable = b; }
  29. protected:
  30. virtual void paint_event(GPaintEvent&) override;
  31. private:
  32. RefPtr<GraphicsBitmap> m_icon;
  33. ButtonStyle m_button_style { ButtonStyle::Normal };
  34. TextAlignment m_text_alignment { TextAlignment::Center };
  35. WeakPtr<GAction> m_action;
  36. bool m_focusable { true };
  37. };