Crazy Eddie's GUI System 0.8.7
EventSet.h
1/***********************************************************************
2 created: 21/2/2004
3 author: Paul D Turner
4
5 purpose: Defines class for a named collection of Event objects
6*************************************************************************/
7/***************************************************************************
8 * Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation the rights to use, copy, modify, merge, publish,
14 * distribute, sublicense, and/or sell copies of the Software, and to
15 * permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 * OTHER DEALINGS IN THE SOFTWARE.
28 ***************************************************************************/
29#ifndef _CEGUIEventSet_h_
30#define _CEGUIEventSet_h_
31
32#include "CEGUI/Base.h"
33#include "CEGUI/String.h"
34#include "CEGUI/Event.h"
35#include "CEGUI/IteratorBase.h"
36#include <map>
37
38#if defined (_MSC_VER)
39# pragma warning(push)
40# pragma warning(disable : 4251 4521 4522)
41#endif
42
43// Start of CEGUI namespace section
44namespace CEGUI
45{
166class CEGUIEXPORT EventSet
167{
168public:
174
179 virtual ~EventSet(void);
180
193 void addEvent(const String& name);
194
210 void addEvent(Event& event);
211
221 void removeEvent(const String& name);
222
232 void removeEvent(Event& event);
233
239 void removeAllEvents(void);
240
250 bool isEventPresent(const String& name);
251
268 Event::Subscriber subscriber);
269
290 Event::Group group,
291 Event::Subscriber subscriber);
292
298 template<typename Arg1, typename Arg2>
299 inline Event::Connection subscribeEvent(const String& name, Arg1 arg1, Arg2 arg2)
300 {
301 return subscribeEvent(name, Event::Subscriber(arg1, arg2));
302 }
303
309 template<typename Arg1, typename Arg2>
310 inline Event::Connection subscribeEvent(const String& name, Event::Group group, Arg1 arg1, Arg2 arg2)
311 {
312 return subscribeEvent(name, group, Event::Subscriber(arg1, arg2));
313 }
314
331 const String& subscriber_name);
332
353 Event::Group group,
354 const String& subscriber_name);
355
374 virtual void fireEvent(const String& name, EventArgs& args,
375 const String& eventNamespace = "");
376
377
388 bool isMuted(void) const;
389
400 void setMutedState(bool setting);
401
421 Event* getEventObject(const String& name, bool autoAdd = false);
422
423protected:
425 void fireEvent_impl(const String& name, EventArgs& args);
428
429 // Do not allow copying, assignment, or any other usage than simple creation.
430 EventSet(EventSet&) {}
432 EventSet& operator=(EventSet&) { return *this; }
433 EventSet& operator=(const EventSet&) { return *this; }
434
435 typedef std::map<String, Event*, StringFastLessCompare
436 CEGUI_MAP_ALLOC(String, Event*)> EventMap;
437 EventMap d_events;
438
439 bool d_muted;
440
441public:
442 /*************************************************************************
443 Iterator stuff
444 *************************************************************************/
446
453};
454
455} // End of CEGUI namespace section
456
457
458#if defined(_MSC_VER)
459# pragma warning(pop)
460#endif
461
462#endif // end of guard _CEGUIEventSet_h_
iterator class for maps
Definition: IteratorBase.h:197
Base class used as the argument to all subscribers Event object.
Definition: EventArgs.h:51
Interface providing event signaling and handling.
Definition: EventSet.h:167
EventSet & operator=(const EventSet &)
Definition: EventSet.h:433
bool d_muted
true if events for this EventSet have been muted.
Definition: EventSet.h:439
virtual Event::Connection subscribeScriptedEvent(const String &name, const String &subscriber_name)
Subscribes the named Event to a scripted funtion.
virtual ~EventSet(void)
Destructor for EventSet objects.
ScriptModule * getScriptModule() const
Helper to return the script module pointer or throw.
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.
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,...
Definition: EventSet.h:310
virtual void fireEvent(const String &name, EventArgs &args, const String &eventNamespace="")
Fires the named event passing the given EventArgs object.
bool isMuted(void) const
Return whether the EventSet is muted or not.
EventSet()
Constructor for EventSet objects.
void setMutedState(bool setting)
Set the mute state for this EventSet.
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,...
Definition: EventSet.h:299
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...
void removeAllEvents(void)
Remove all Event objects from the EventSet. Add connections will be disconnected, and all Event objec...
EventSet(const EventSet &)
Definition: EventSet.h:431
EventIterator getEventIterator(void) const
Return a EventSet::EventIterator object to iterate over the events currently added to the EventSet.
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 t...
bool isEventPresent(const String &name)
Checks to see if an Event with the given name is present in this EventSet.
void fireEvent_impl(const String &name, EventArgs &args)
Implementation event firing member.
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,...
void removeEvent(const String &name)
Removes the Event with the given name. All connections to the event are disconnected,...
void addEvent(Event &event)
Adds the given Event object to the EventSet. Ownership of the object passes to EventSet and it will b...
void addEvent(const String &name)
Creates a new Event object with the given name and adds it to the EventSet.
void removeEvent(Event &event)
Removes the given event from the EventSet. All connections to the event are disconnected,...
Defines an 'event' which can be subscribed to by interested parties.
Definition: Event.h:59
unsigned int Group
Type for a subscriber group. You can use the subscriber group to order calls to multiple subscribers....
Definition: Event.h:84
Abstract interface required for all scripting support modules to be used with the CEGUI system.
Definition: ScriptModule.h:47
String class used within the GUI system.
Definition: String.h:64
SubscriberSlot class which is used when subscribing to events.
Definition: SubscriberSlot.h:53
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
Functor that can be used as comparator in a std::map with String keys. It's faster than using the def...
Definition: String.h:5580