GMenu.h 724 B

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