lxgui
gui_event_receiver.hpp
1 #ifndef LXGUI_GUI_EVENT_RECEIVER_HPP
2 #define LXGUI_GUI_EVENT_RECEIVER_HPP
3 
4 #include "lxgui/gui_event_emitter.hpp"
5 #include "lxgui/lxgui.hpp"
6 
7 #include <string>
8 #include <vector>
9 
10 namespace lxgui::gui {
11 
12 class event_emitter;
13 
20 public:
25  explicit event_receiver(event_emitter& emitter);
26 
27  // Non-copiable, non-movable
28  event_receiver(const event_receiver&) = delete;
32 
38  void register_event(const std::string& event_name, event_handler_function callback);
39 
44  void unregister_event(const std::string& event_name);
45 
46 private:
47  struct event_connection {
48  std::string name;
49  utils::scoped_connection connection;
50  };
51 
52  event_emitter& event_emitter_;
53  std::vector<event_connection> registered_events_;
54 };
55 
56 } // namespace lxgui::gui
57 
58 #endif
Generates events and keep tracks of registered callbacks.
Utility object to store and manage connections to event signals.
event_receiver & operator=(const event_receiver &)=delete
void register_event(const std::string &event_name, event_handler_function callback)
Enables reaction to an event.
event_receiver & operator=(event_receiver &&)=delete
event_receiver(event_receiver &&)=delete
event_receiver(event_emitter &emitter)
Constructor.
event_receiver(const event_receiver &)=delete
void unregister_event(const std::string &event_name)
Disables reaction to an event.
A connection that automatically disconnects when going out of scope.
event_signal::function_type event_handler_function
C++ function type for UI script handlers.