lxgui
Loading...
Searching...
No Matches
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
7namespace lxgui::gui {
8
9event_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
17void 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