GMenu.h 860 B

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