GMenu.h 597 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <LibGUI/GMenuItem.h>
  3. #include <AK/Function.h>
  4. #include <AK/Vector.h>
  5. class GAction;
  6. class GMenu {
  7. public:
  8. explicit GMenu(const String& name);
  9. ~GMenu();
  10. static GMenu* from_menu_id(int);
  11. GAction* action_at(size_t);
  12. void add_action(RetainPtr<GAction>&&);
  13. void add_separator();
  14. Function<void(unsigned)> on_item_activation;
  15. private:
  16. friend class GMenuBar;
  17. int menu_id() const { return m_menu_id; }
  18. int realize_menu();
  19. void unrealize_menu();
  20. int m_menu_id { 0 };
  21. String m_name;
  22. Vector<OwnPtr<GMenuItem>> m_items;
  23. };