38 class TGUI_API MenuBar :
public MenuWidgetBase
41 using Ptr = std::shared_ptr<MenuBar>;
42 using ConstPtr = std::shared_ptr<const MenuBar>;
53 explicit MenuBar(
const char* typeName =
StaticWidgetType,
bool initRenderer =
true);
98 template <
typename Func,
typename... Args>
101 return connectMenuItem({menu, menuItem}, std::forward<Func>(handler), args...);
117 template <
typename Func,
typename... Args>
118 unsigned int connectMenuItem(
const std::vector<String>& hierarchy, Func&& handler,
const Args&... args)
121 [=](
const std::vector<String>& clickedMenuItem)
123 if (clickedMenuItem == hierarchy)
124 std::invoke(handler, args...);
209 bool addMenuItem(
const std::vector<String>& hierarchy,
bool createParents =
true);
268 bool removeMenuItem(
const std::vector<String>& hierarchy,
bool removeParentsWhenEmpty =
true);
375 [[nodiscard]] std::vector<GetMenusElement>
getMenus()
const;
397 void leftMouseReleased(Vector2f pos)
override;
402 void mouseMoved(Vector2f pos)
override;
425 [[nodiscard]] std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers)
const override;
430 void load(
const std::unique_ptr<DataIO::Node>& node,
const LoadingRenderersMap& renderers)
override;
458 [[nodiscard]] Vector2f calculateMenuOffset(std::size_t visibleMenuIdx)
const;
464 void emitMenuItemClick(
const std::vector<String>& hierarchy)
override;
470 void deselectDeepestItem()
override;
478 [[nodiscard]]
bool isMouseOnOpenMenu(Vector2f pos)
const override;
484 [[nodiscard]]
float getDefaultMenuItemHeight()
const override;
490 void leftMouseReleasedOnMenu()
override;
497 void mouseMovedOnMenu(Vector2f pos)
override;
510 std::vector<Menu> m_menus;
511 int m_visibleMenu = -1;
512 Sprite m_spriteBackground;