|
| EventSet () |
| Constructor for EventSet objects.
|
|
virtual | ~EventSet (void) |
| Destructor for EventSet objects.
|
|
void | addEvent (const String &name) |
| Creates a new Event object with the given name and adds it to the EventSet. More...
|
|
void | addEvent (Event &event) |
| Adds the given Event object to the EventSet. Ownership of the object passes to EventSet and it will be deleted when it is removed from the EventSet - whether explicitly via removeEvent or when the EventSet is destroyed. More...
|
|
void | removeEvent (const String &name) |
| Removes the Event with the given name. All connections to the event are disconnected, and the underlying Event object is destroyed. More...
|
|
void | removeEvent (Event &event) |
| Removes the given event from the EventSet. All connections to the event are disconnected, and the event object is destroyed. More...
|
|
void | removeAllEvents (void) |
| Remove all Event objects from the EventSet. Add connections will be disconnected, and all Event objects destroyed.
|
|
bool | isEventPresent (const String &name) |
| Checks to see if an Event with the given name is present in this EventSet. More...
|
|
virtual Event::Connection | subscribeEvent (const String &name, Event::Subscriber subscriber) |
| Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
|
|
virtual Event::Connection | subscribeEvent (const String &name, Event::Group group, Event::Subscriber subscriber) |
| Subscribes a handler to the specified group of the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
|
|
template<typename Arg1 , typename Arg2 > |
Event::Connection | subscribeEvent (const String &name, Arg1 arg1, Arg2 arg2) |
| Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
|
|
template<typename Arg1 , typename Arg2 > |
Event::Connection | subscribeEvent (const String &name, Event::Group group, Arg1 arg1, Arg2 arg2) |
| Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
|
|
virtual Event::Connection | subscribeScriptedEvent (const String &name, const String &subscriber_name) |
| Subscribes the named Event to a scripted funtion. More...
|
|
virtual Event::Connection | subscribeScriptedEvent (const String &name, Event::Group group, const String &subscriber_name) |
| Subscribes the specified group of the named Event to a scripted funtion. More...
|
|
virtual void | fireEvent (const String &name, EventArgs &args, const String &eventNamespace="") |
| Fires the named event passing the given EventArgs object. More...
|
|
bool | isMuted (void) const |
| Return whether the EventSet is muted or not. More...
|
|
void | setMutedState (bool setting) |
| Set the mute state for this EventSet. More...
|
|
Event * | getEventObject (const String &name, bool autoAdd=false) |
| Return a pointer to the Event object with the given name, optionally adding such an Event object to the EventSet if it does not already exist. More...
|
|
EventIterator | getEventIterator (void) const |
| Return a EventSet::EventIterator object to iterate over the events currently added to the EventSet.
|
|
Interface providing event signaling and handling.
The EventSet is a means for code to attach a handler function to some named event, and later, for that event to be fired and the subscribed handler(s) called.
Its purpose is similar to Qt's signal and slot system, you can think of Event name as the signal and the subscribed handler as the slot.
Each Event has a name and a set of handlers. Handlers can be free functions, class member functions or even functors. Whenever an Event is fired all of its handlers are invoked. You are most likely looking for a way to react to mouse clicks or other events fired internally by CEGUI.
The handlers have to have a very specific signature. They have to return bool and they have to take const EventArgs&. If this is not met you will encounter build errors!
- Reacting to internal CEGUI events
bool handler(const EventArgs& args)
{
std::cout << "Don't you dare click me again!" << std::endl;
return true;
}
void example()
{
}
- A contrived example of various handler types
bool freeFunction(const EventArgs& args)
{
}
class CustomClass
{
public:
bool memberFunction(const EventArgs& args)
{
}
static bool staticMemberFunction(const EventArgs& args)
{
}
bool memberFunctionWithArg(const EventArgs& args, bool something)
{
}
};
class Functor
{
public:
bool operator()(const EventArgs& args)
{
}
}
void example()
{
CustomClass instance;
wnd->
subscribeEvent(
"CustomEvent", &CustomClass::memberFunction, &instance);
wnd->
subscribeEvent(
"CustomEvent", &CustomClass::staticMemberFunction);
wnd->
subscribeEvent(
"CustomEvent", boost::bind(&CustomClass::memberFunctionWithArg, _1, _2,
true), &instance);
wnd->
subscribeEvent(
"CustomEvent", boost::bind(&CustomClass::memberFunctionWithArg, instance, _1,
true));
}
- EventSet works well with others
- The EventSet can also subscribe boost::function, std::function, functors created by boost::bind and possibly others. This is not a feature of CEGUI per se, just a fortunate side effect of being able to call functors.
- Events are automatically created on demand
- As of CEGUI 0.5, the EventSet no longer needs to be filled with available events. Events are now added to the set as they are first used; that is, the first time a handler is subscribed to an event for a given EventSet, an Event object is created and added to the EventSet.
Instead of throwing an exception when firing an event that does not actually exist in the set, we now do nothing (if the Event does not exist, then it has no handlers subscribed, and therefore doing nothing is the correct course action).