lxgui
gui_event_receiver.cpp
1 #include "lxgui/gui_event_receiver.hpp"
2 
3 #include "lxgui/gui_event_emitter.hpp"
4 #include "lxgui/gui_out.hpp"
5 #include "lxgui/utils_std.hpp"
6 
7 namespace lxgui::gui {
8 
9 event_receiver::event_receiver(event_emitter& emitter) : event_emitter_(emitter) {}
10 
12  const std::string& event_name, event_handler_function callback) {
13  utils::connection connection = event_emitter_.register_event(event_name, std::move(callback));
14  registered_events_.push_back({event_name, std::move(connection)});
15 }
16 
17 void event_receiver::unregister_event(const std::string& event_name) {
18  auto iter = utils::find_if(
19  registered_events_, [&](const auto& event) { return event.name == event_name; });
20 
21  if (iter == registered_events_.end()) {
22  gui::out << gui::warning << "event_emitter: "
23  << "Event \"" << event_name << "\" is not registered to this event_receiver."
24  << std::endl;
25 
26  return;
27  }
28 
29  registered_events_.erase(iter);
30 }
31 
32 } // namespace lxgui::gui
Generates events and keep tracks of registered callbacks.
utils::connection register_event(const std::string &event_name, event_handler_function callback)
Registers a callback to an event.
void register_event(const std::string &event_name, event_handler_function callback)
Enables reaction to an event.
event_receiver(event_emitter &emitter)
Constructor.
void unregister_event(const std::string &event_name)
Disables reaction to an event.
Object representing the connection between a slot and a signal.
std::ostream out
event_signal::function_type event_handler_function
C++ function type for UI script handlers.
const std::string warning
Definition: gui_out.cpp:6
auto find_if(C &v, T &&f)
Definition: utils_std.hpp:19