FifeGUI 0.2.0
A C++ GUI library designed for games.
menubar.hpp
1// SPDX-License-Identifier: LGPL-2.1-or-later OR BSD-3-Clause
2// SPDX-FileCopyrightText: 2026 Fifengine contributors
3
4#ifndef INCLUDE_FIFECHAN_WIDGETS_MENUBAR_HPP_
5#define INCLUDE_FIFECHAN_WIDGETS_MENUBAR_HPP_
6
7// Platform config include
8#include "fifechan/platform.hpp"
9
10// Standard library includes
11#include <string>
12
13// Project headers (subdirs before local)
14#include "fifechan/listeners/actionlistener.hpp"
15#include "fifechan/listeners/keylistener.hpp"
16#include "fifechan/listeners/mouselistener.hpp"
17#include "fifechan/widgets/horizontalbar.hpp"
18
19namespace fcn
20{
21 class MenuPopup;
22
31 class FIFEGUI_API MenuBar : public HorizontalBar, public ActionListener, public KeyListener, public MouseListener
32 {
33 public:
37 MenuBar();
38
39 ~MenuBar() override = default;
40
41 MenuBar(MenuBar const &) = delete;
42 MenuBar& operator=(MenuBar const &) = delete;
43 MenuBar(MenuBar&&) = delete;
44 MenuBar& operator=(MenuBar&&) = delete;
45
53 Widget* addMenu(std::string const & text, MenuPopup* popup = nullptr);
54
58 void closeAll();
59
65 bool isMenuOpen() const;
66
72 MenuPopup* getOpenMenu() const;
73
74 protected:
75 // Inherited from KeyListener
76 void keyPressed(KeyEvent& event) override;
77 void keyReleased(KeyEvent& event) override;
78
79 // Inherited from MouseListener
80 void mousePressed(MouseEvent& event) override;
81
85 void draw(Graphics* graphics) override;
86 // Inherited from ActionListener
87
88 void action(ActionEvent const & event) override;
89
90 private:
94 MenuPopup* mOpenMenu{nullptr};
95
99 int mSelectedIndex{-1};
100 };
101} // namespace fcn
102
103#endif // INCLUDE_FIFECHAN_WIDGETS_MENUBAR_HPP_
Represents an action trigger (e.g., button click).
Abstract interface providing primitive drawing functions (lines, rectangles, etc.).
Definition graphics.hpp:58
HorizontalBar()
Constructor.
Represents a key event.
Definition keyevent.hpp:26
KeyListener(KeyListener const &)=default
Copy constructor.
Widget * addMenu(std::string const &text, MenuPopup *popup=nullptr)
Adds a menu item to the menu bar.
Definition menubar.cpp:26
MenuPopup * getOpenMenu() const
Gets the currently open menu popup.
Definition menubar.cpp:73
bool isMenuOpen() const
Checks if any menu is currently open.
Definition menubar.cpp:68
void mousePressed(MouseEvent &event) override
Called when a mouse button has been pressed down on the widget area.
Definition menubar.cpp:188
void action(ActionEvent const &event) override
Handles an action event emitted by a widget.
Definition menubar.cpp:78
void keyPressed(KeyEvent &event) override
Called if a key is pressed when the widget has keyboard focus.
Definition menubar.cpp:126
MenuBar()
Constructor.
Definition menubar.cpp:17
void keyReleased(KeyEvent &event) override
Called if a key is released when the widget has keyboard focus.
Definition menubar.cpp:183
void closeAll()
Closes all open menus.
Definition menubar.cpp:60
void draw(Graphics *graphics) override
Draws the menu bar (background and bottom border).
Definition menubar.cpp:220
A menu popup widget that displays a dropdown menu.
Definition menupopup.hpp:38
Represents a mouse event.
MouseListener(MouseListener const &)=default
Copy constructor.
Abstract base class defining the common behavior, properties, and lifecycle of all GUI elements.
Definition widget.hpp:55
Used replacement tokens by configure_file():