Menubar.h 895 B

1234567891011121314151617181920212223242526272829303132333435363738
  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<void> try_add_menu(Badge<Window>, NonnullRefPtr<Menu>);
  21. ErrorOr<NonnullRefPtr<Menu>> try_add_menu(Badge<Window>, DeprecatedString name);
  22. Menu& add_menu(Badge<Window>, DeprecatedString name);
  23. void for_each_menu(Function<IterationDecision(Menu&)>);
  24. private:
  25. Menubar() = default;
  26. NonnullRefPtrVector<Menu> m_menus;
  27. };
  28. }