Menubar.h 807 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2021, sin-ack <sin-ack@protonmail.com>
  4. * Copyright (c) 2022, the SerenityOS developers.
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #pragma once
  9. #include <AK/Badge.h>
  10. #include <AK/IterationDecision.h>
  11. #include <AK/NonnullRefPtrVector.h>
  12. #include <LibCore/Object.h>
  13. #include <LibGUI/Forward.h>
  14. #include <LibGUI/Menu.h>
  15. namespace GUI {
  16. class Menubar : public Core::Object {
  17. C_OBJECT(Menubar);
  18. public:
  19. virtual ~Menubar() override = default;
  20. ErrorOr<NonnullRefPtr<Menu>> try_add_menu(Badge<Window>, String name);
  21. Menu& add_menu(Badge<Window>, String name);
  22. void for_each_menu(Function<IterationDecision(Menu&)>);
  23. private:
  24. Menubar() = default;
  25. NonnullRefPtrVector<Menu> m_menus;
  26. };
  27. }