//////////////////////////////////////////////////////////////////////////////////////////////////// // NoesisGUI - http://www.noesisengine.com // Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved. //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef __GUI_EVENTS_H__ #define __GUI_EVENTS_H__ #include #include #include #include #include namespace Noesis { class BaseComponent; template class Delegate; //////////////////////////////////////////////////////////////////////////////////////////////////// /// EventArgs is the base class for classes containing event data. //////////////////////////////////////////////////////////////////////////////////////////////////// struct NS_GUI_CORE_API EventArgs { /// Default empty event args static const EventArgs Empty; // Included to allow boxing EventArgs pointers String ToString() const { return "EventArgs"; } NS_DECLARE_REFLECTION(EventArgs, NoParent) }; //////////////////////////////////////////////////////////////////////////////////////////////////// /// Represents the delegate for handlers that receive normal events. //////////////////////////////////////////////////////////////////////////////////////////////////// typedef Noesis::Delegate EventHandler; //////////////////////////////////////////////////////////////////////////////////////////////////// /// Wrapper for events based on a delegate //////////////////////////////////////////////////////////////////////////////////////////////////// template struct DelegateEvent_ { /// Constructor DelegateEvent_(T& delegate): _delegate(delegate) { } /// Adds a handler to the delegate event void operator+=(const T& handler) { _delegate += handler; } /// Removes a handler from the delegate event void operator-=(const T& handler) { _delegate -= handler; } private: T& _delegate; }; } #endif